» »

[c++] cin >> problem

[c++] cin >> problem

Tutankhamun ::


float stevilka;

do
{
    cin >> stevilka;
} whiile(true)


Zdej pa problem. Če namesto številke utipkam kšno črko, pa pritisnem enter, se mi več ne ustav na cin-u ampak se zacikla.
Kaj nj nardim, da se mi bo ustavl na cinu. Nekak bi ga mogu resetirat, pa ne vem kako.


[edit - uporabi tag "st.koda c" - vsc ]
  • spremenil: Vesoljc ()

Backup22 ::

Pomoje rabiš nek pogoj, ki pregleda, kaj vtipkaš... to bi šlo z ASCII kodo...
//

Tutankhamun ::

Zdej je pa moderator neki preveč zbrisal.

manjka float stevilka;

Ne vem kakšn pogoj mislš. Ker mi v spremenljivko nč ne vpiše. Edin če bi bral polje char-ov, kar pa ne mislm, k morem potem še pretvarjat... Zguba časa, pa preveč bi kompliciru. Še čakam na odgovor.

BigWhale ::

Ja, zato ker se zrola cin-u. Ker ne ve kako crko v float zbasat...

Malo drugace napisi celo zadevo.

Vesoljc ::

preverjanje vhodnih podatkov je zguba casa? :\
Abnormal behavior of abnormal brain makes me normal...

Tutankhamun ::

Ne nism mislu da je preverjanje vhodnih podatkov zguba časa. In ja vem da, se cin-u zrola ker ne zna pretvart, ampak a obstaja kšn reset cin-a.
A je edina možnost, da preberem celo cifro kot tekst, preverm, če je kšn prepovedan znak, in če ni, pretvorm v float.

BigWhale ::

Ja ne mores nekaj zbasat u float in potem preverjat kaj je. Zbasi nekaj v string in preveri kaj je in potem nafilaj pravo spremenljivko oziroma zavrzi podatke.

Gundolf ::

cin.clear();

Tutankhamun ::

Sm že probu, pa sm zdej še enkrat, pa Ne dela!!! Sm mal tut na googlu iskal pa sm najdu ene par, k isto iščejo, pa ni odgovorov. Mogoče se to sploh ne da:'(

snow ::

Preberi kot string(kot je rekel že BigWhale... nevem zakaj ne ubogaš:\) in uporabi atof.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

snow ::

Aja pa v programiranju ni "se ne da".
Vse se da če se hoče (in če je dost CPUja in rama :D).
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Tutankhamun ::

Ne tega da preberem kot string nam delu, zato ker ni tok pomembn za to kar rabm, ni nobene zahteve, da bi preverjov pravilnost vnosa.

Vprašanje je blo mišlen, a se da cin nekak resetirat, da to nebi nagajal, to je vse.

Tist, da bi prebral kot string, sej to vse vem kak se nardi, ni mi treba to skos ponavlat.

snow ::

Ja če nardiš tak, pač cin ne bo nagajal in ga ne rabiš resetirat :)
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Zgodovina sprememb…

  • spremenilo: snow ()

BigWhale ::

Pol pa ne bit tolk blazno pameten, pa naredi. Tri vrstice vec v programu te ne bojo ubile... ;>

Tutankhamun ::

:-). Sej se ne gre da me bo to ubil. To me sploh ne mot, ker do tega sploh nau pršlo. Sam neki se igram, sploh nam to uporablu razn zdej bom enkrat. Poj bom pa tko al tko use označu in dal delete. Unih 40 vrstic kode k jih je... Sploh ne mislm komplicirat. Ker če že to delam, potem bi lahko še preverjov a je cifra negativna, a je v eni zahtevani meji min - max itd.
Ne vem zakaj ste se tok zapel za neki kar me sploh ne zanima, pa še to sm napisu. Samo gundolf je vedu kaj sprašujem, pa je napisu, samo ni blo učinka. Vse ostalo je kar se mene tiče spam.
Pa useen hvala za odgovore ;)

Vesoljc ::

probi ga dvakrat flushat
Abnormal behavior of abnormal brain makes me normal...

Tutankhamun ::

Kako se pa flusha.
A to mislš cin.clear() da dam dvakrat. Probu sm pa nč.
A si mislu kak drgač.

Vesoljc ::

istream

amm, flushat ne zna, zna pa rect ignore :)
Abnormal behavior of abnormal brain makes me normal...

BigWhale ::

Vso sreco.

Gundolf ::

clear() funkcija ti pobrise vse flage v streamu (bad, eof, fail, ...). Tak flag (mislim da fail) se postavi ce hoces prebrati cifro v streamu imas pa crke namesto stevilk. In ce je kaksen od teh flagov (ok, to morda ne velja za vse) postavljen potem ti vsako naslednje branje (v primeru drugih streamov tudi pisanje) spodleti (se sploh ne izvrsi). Torej ena mozost je tudi, da gledas takoj po branju stanje teh zastavic in ustrezno ukrepas.

Aja, btw, clear ti ne pobrise vsebine streama zato bi morda moral klicat se flush() - ker Vesoljc tako pravi sklepam da morda ta pobrise vso vsebino vhodnih streamov (morda se motim).

Glede na kodo, ki si jo nalimal pa bi ti jaz lahko dodal le smajlija™ z izredno začudenim izrazom na faci, a ga na žalost ni v zbirki, tako da moram napisat, da nimam pojma kaj si sploh hotel naredit s to while(true) zanko brez izhoda.

Daviey ::

Evo probej tole:
float stevilo;

do
{
	cin >> stevilo;
	while(!cin.good())
	{
		cout << "napaka v zapisu!" << endl;
		cin.clear();
		cin.ignore(10, '\n');
		cin >> stevilo;
	}
	cout << stevilo << endl;
}while(true);

Zgodovina sprememb…

  • spremenil: Daviey ()

Tutankhamun ::

Gundolf valda da ne mislš da bom prkopirov vso kodo sm gor, kdo bo pa to gledal. To sm si pač zmislu, da predstav samo moj problem. Če nekdo to skopira k seb, lahko tut hitr vid kje je moj problem. Zakaj while zanka, zato, da se vid da se na cin-u nikol ne ustav ampak kr cikla. Če bi pa dal v while zanko še cout << "neki" << endl; , da neki izpiše, bi se lepš vidl da izpisuje "neki", brez da bi se umes ustavlal in zahteval vnos.

In ne, to ni copy/paste nobenga dela moje kode :D .

Vesolc je ugotovu, da flush-at ne zna (dva posta nad tvojim).

Daviey, to pa dela. Hvala;)


Pa še neki sm vidu, pr Daviey-em postu, da si je sam spremenu popravu post, sm mislu da to lahko samo moderator nardi. Kako se to nardi, ker bi to pršlo učas kr prov.

Vesoljc ::

timeout imas (2 uri?), se pravi ko post oddas, ga lahko se dve uri spreminjas. potem pa ne vec.
Abnormal behavior of abnormal brain makes me normal...

BigWhale ::

A tole je manj komplicirano kot ce bi bral string in ga v float pretvarjal?

Huh.

Tutankhamun ::

Je mn kompliciran ja. Tistga cin.good() sploh ne rabm. Edin kar rabm je cin.clear() in cin.ignore(...). Ne glede na to kaj upišem, vedno grem skoz ta dva klica.
Se prav vse skp je dve vrstice. :D


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++] Obdelovanje vhodnega besedila

Oddelek: Programiranje
8842 (766) technolog
»

[C++] vprašanja (strani: 1 2 3 4 5 6 7 8 9 )

Oddelek: Programiranje
44727339 (11885) aljazko1995
»

vprasanje c++

Oddelek: Programiranje
422461 (2460) Volk|
»

[C++][Naloga] Tekstovne datoteke, realna števila

Oddelek: Programiranje
254019 (3635) Gundolf
»

c++ datoteke

Oddelek: Programiranje
464044 (3533) Vesoljc

Več podobnih tem