Forum » Programiranje » [C++] atoi() funkcija
[C++] atoi() funkcija
nejodagreat ::
Napisal sem tele vrstice:
  
Gre se za console application, praktično šolski primer, ampak me vseeno zajebava...ko v spremenljivko a vpišem naprimer "9", se do-while zanka prekine, se pa ne spremeni vrednost spremenljivke x, ki še vedno ostane 10 (kot je inicializirana). Kaj delam narobe?
char a;
int x=10;
do
{
	if(isdigit(a))
		x = atoi(&a);
	else
	{
		cout<<"Izberi moznost menija: "<<endl;
		cin>>a;
	}
}
while(!isdigit(a));
cout<<x<<endl;Gre se za console application, praktično šolski primer, ampak me vseeno zajebava...ko v spremenljivko a vpišem naprimer "9", se do-while zanka prekine, se pa ne spremeni vrednost spremenljivke x, ki še vedno ostane 10 (kot je inicializirana). Kaj delam narobe?
amacar ::
Oz da se popravim, ko prvič preveriš if(isdigit(a)), še a ni inicializiran. 
Zgodovina sprememb…
- spremenil: amacar ()
 
amacar ::
Kaj takšnega bi bilo pomoje boljše:
  
char a;
int x=10;
do
{
    cout<<"Izberi moznost menija: "<<endl;
    cin>>a;
    if(isdigit(a))
    {
        x = atoi(&a);
    }
}
while(!isdigit(a));
cout<<x<<endl; mallard ::
Zakaj se ne bi znebil funkcij atoi() in isdigit() in poskusil prebrat iz cin-a direktno v integer?
 
  
int x = 0;
while (cout << "Izberi moznost: ",
       true) {
    if (cin >> x) {
        if (x > 0 && x < 10) break;
    } else {
       // vnos števila ni uspel
        cin.clear(); // resetiraj zastavice o napakah
        cin.sync(); // sprazni cin
    }
}
 nejodagreat ::
@amacar V bistvu sem imel praktično enako kot si ti napisal, problem je bil pa v tem, da atoi funkcija kot argument jemlje samo tip char[], ne pa char - vsaj tako sem potem našel nekje na internetu.
@mallard Hvala za to rešitev, sem bolj začetnik pa nisem vedel da lahko uporabim kar if(cin>>x)...čeprav pri datotečnem toku sem pa to že uporabil
.
 
Hvala obema!
@mallard Hvala za to rešitev, sem bolj začetnik pa nisem vedel da lahko uporabim kar if(cin>>x)...čeprav pri datotečnem toku sem pa to že uporabil
Hvala obema!