cezi123
(Cezarycezary2)
8 Grudzień 2007 22:21
#1
Jak ochronić program by użytkownik nie mógł wpisać niechcianych danych np. żeby jedynymi poprawnymi wpisami były liczby od 1 do 5.
Chodzi mi o to żeby program skanował wpisaną daną tak długo, aż w końcu użytkownikowi się uda wpisać to co trzeba
Najlepiej by było gdyby zostało to zrobione za pomocą funkcji.
nr47
(Sawyer47)
8 Grudzień 2007 22:36
#2
Hmm C… ogólnie to wczytuje się jako tekst, sprawdza czy jest to liczba, konwertuje i już… a jak użytkownik poda źle, to prosi się go jeszcze raz…
Tu jest co nieco o napisach w C:
http://pl.wikibooks.org/wiki/C/Napisy
cezi123
(Cezarycezary2)
8 Grudzień 2007 22:48
#3
teoretycznie to wiem mniej więcej jak to zrobić, gorzej z praktyka dlatego tez proszę o chociaż najważniejszy kawałek kodu
głównie chodzi o ochronę przed wpisaniem zamiast liczb litery, i żeby wtedy program się nie rozsypywał
nr47
(Sawyer47)
9 Grudzień 2007 09:28
#4
To jest kod w C++, ale myślę, że bez problemu przerobisz go na C. Pod tym względem C nie jest zbyt wygodne, ale cóż.
#include
#include
using namespace std;
int main() {
string num;
int liczba;
do {
cout << "Podaj liczbę: ";
getline(cin, num, '\n');
liczba = atoi(num.c_str());
if(num == "0") break;
} while(liczba == 0);
cout << "Podana liczba to: " << liczba << " a podniesiona do kwadratu: " << liczba * liczba << endl;
}
To może Ci się przydać: http://www.cppreference.com/stdstring/index.html
Derka
(Ludr)
9 Grudzień 2007 14:48
#5
cezi123
(Cezarycezary2)
9 Grudzień 2007 16:49
#6
naprawde bardzo bym prosił o kawałek kodu w jezyku ((( C ))) bo naprawde nie potrafie tego wszytskiego zamieniac zmieniac, chociaz niech ktos mi podsunie jakis sposob w jaki mozna to zrobic
Derka
(Ludr)
9 Grudzień 2007 19:01
#7
Jesteś bardzo leniwy. Po pierwsze nie użyłeś opcji szukaj. A po 2 (patrz wyżej) podałem link gdzie taki temat był poruszany.
Na przyszłość pamiętaj o tym. (poniżej zamiesczam kod)
(Pobiera znaki od 1 do 5) przedział <1,5>
//Derka kod w C
#include
#include
#include
void getnum( int &wsp);
int main(void)
{
int a;
getnum(a);
printf("\nWartosc a: %i",a);
_getch();
return 0;
}
/ ****************************************************************************** /
void getnum( int &wsp)
{
int cntr=0; char zn , array [10]={0}, * num=array;
do {
zn=_getch(); if ((zn>='1' && zn<='5'))
{printf("%c",(*num=zn)); num++; cntr++;}
else if(zn=='\b' && cntr!=0) { printf("\b \b"); num--; cntr--;}
}while (zn!=13 && cntr<9);
if (cntr==0 && zn==13) printf("0");
*num='\0'; wsp=(atoi(num-cntr));
}
/ ****************************************************************************** /
//Derka kod w C++
#include
using std::cout;
#include
void getnum( int &wsp);
int main()
{
int a;
getnum(a);
cout<<"\nWartosc a: "<
_getch();
return 0;
}
/ ****************************************************************************** /
void getnum( int &wsp)
{
int cntr=0; char zn , array [10]={0}, * num=array;
do {
zn=_getch(); if ((zn>='1' && zn<='5'))
{cout<<(*num=zn); num++; cntr++;}
else if(zn=='\b' && cntr!=0) { cout<<"\b \b"; num--; cntr--;}
}while (zn!=13 && cntr<9);
if (cntr==0 && zn==13) cout<<"0";
*num='\0'; wsp=(atoi(num-cntr));
}
/ ****************************************************************************** /[/code]
[/code]
cezi123
(Cezarycezary2)
10 Grudzień 2007 22:15
#8
Czy jest mozliwe rozszerzenie dzialania tej funkcji zeby pobierala liczby z zakresu wiekszego, dwucyfrowego, zeby akceptowal liczby od 1 do 99??