| | |
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Autor | Správa |
---|
Registrovaný: 14.01.12 Prihlásený: 20.07.13 Príspevky: 46 Témy: 9 |
zdravim, ucim sa c++, som este lamka a idem podla prirucky mistrvstvi v c++ , dosiel som po ulohu so strukturami v dynamickom poli, ktoreho pocet prvkov zadame interne pocas behu. Problem je s objektom cin, skusal som viac kombinacii a z knihy neviem nabrat poterbnu predstavivost pre vsetky funkcne principi cin. podobne ani na nete som nenatrafil na nieco co by mi to lepsie osvetlilo...ide oto ze po zadani znacky auta mi program preskakuje na uplny jeho koniec. prikaldam kod ktory som zo seba vypotil..ak by mi niekto vedel osvetlit principi cin v tomto pripade tak bomba..zakladne rozdiely medzi cin.get a cin.getline sa domnievam ze viem. Dakujem
Kód: #include<iostream> using namespace std;
struct cars { char mark[20]; int year; };
int main() { int n, i; cout<<"zadaj pocet aut, ktore chces ulozit do zoznamu >>"; cin>>n; cars *info=new cars[n];
for( i=0 ; i<n ; i++ ) { cout<<"car # "<<i+1; cout<<"zadaj znacku auta >>"; cin.getline(info[i].mark,20,'\n'); cin.get(); cout<<info[i].mark; cout<<"zadaj rok vyroby >>"; cin>>info[i].year; cout<<'\n'; } return 0;
} // pridané po 19 minútach od posledného príspevkuchyba este cast ktora potom vytlaci cely zoznam..ale to by nemal byt problem.snad (:
|
|
Registrovaný: 11.01.09 Prihlásený: 24.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 18.03.2012 13:54 | |
|
Problem je v tom, ze getline() nechvava vo vstupnom buffri znak noveho riadku, ktory stlacis pre potvrdenie toho, co napises. A tento znak sa potom precita v dalsom cin. Nieco podobne sa riesilo tu -> http://www.pcforum.sk/nefungujuci-fgets-vt127550.html <- akurat to je v C-cku, ide ale o podobny problem.
Pouzi miesto funkcie getline() iba funkciu get(), kde si mozes vsimnut tuto vetu:
Citácia: If the delimiting character is found, it is not extracted from the input sequence and remains as the next character to be extracted. Use getline if you want this character to be extracted (and discarded).
Dalej, ak pouzivas pretazeny operator >> , tu budes zrejme musiet volat cin.get() aby sa precital tento znak. Da sa to riesit aj pomocou manipulatorov, ale to je na zaciatok asi prilis vela. Ries to zatial takto, urcite bude v knizke dalej vysvetlene, ako tomu predist.
Kód: #include<iostream> using namespace std;
struct cars { char mark[20]; int year; };
int main() { int n, i; cout<<"zadaj pocet aut, ktore chces ulozit do zoznamu >>"; cin >> n; cin.get(); // * PRIDANE * cars *info=new cars[n];
for( i=0 ; i<n ; i++ ) { cout<<"car # "<<i+1; cout<<"zadaj znacku auta >>"; cin.get(info[i].mark,20); // * PRIDANE *
cout<<info[i].mark; cout<<"zadaj rok vyroby >>"; cin >> info[i].year; cin.get(); // * PRIDANE * cout<<'\n';
}
delete [] info;
return 0;
}
|
|
Registrovaný: 14.01.12 Prihlásený: 20.07.13 Príspevky: 46 Témy: 9 | Napísal autor témy math-ew: 18.03.2012 19:49 | |
|
tvoja rada funguje..ako obvykle. nepaci sa mi len to ze zatial tomu vobec nerozumiem
aj ked navstivil som cplusplus.com uz predtym a vedel som aj ze getline nechava v zasobniku znak newline pre potvrdenie stlacenim.no nic ale aj tak vdaka velky saman-nacelnik sediaci kód.
|
|
Registrovaný: 11.01.09 Prihlásený: 24.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 18.03.2012 20:43 | |
|
Ak ti nie je jasne nieco konkretne, tak sem s tym, ak budem vediet, poradim, ak nie, poradi niekto iny. Ale ked to myslis vseobecne, ze zatial tomu nerozumies, v tom pripade nezufaj, dostanes sa do toho. Zaciatky su stale tazke, ale za kratku dobu sa do toho dostanes, chce to len svoj cas a vela skusania.
_________________ Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS. |
|
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| cin v Assembler, C, C++, Pascal, Java | 9 | 600 | 26.06.2009 12:59 Fico | | cin+cout vs. scanf()+printf() v Assembler, C, C++, Pascal, Java | 2 | 830 | 14.07.2007 12:40 jizzy.w | | Naburanie do WiFi siete - trestny cin? v Bezpečnosť a firewally | 12 | 5878 | 26.10.2010 21:55 ado21 | | GET premenne v PHP, ASP | 8 | 618 | 30.04.2011 22:17 emer | | GET pise bludy v PHP, ASP | 4 | 471 | 28.04.2010 15:00 jtomcik | | GET a ID v PHP, ASP | 6 | 605 | 13.12.2008 21:04 p360t | | GET method PHP v PHP, ASP | 6 | 389 | 22.02.2016 13:54 stenley | | Vista get conected v Operačné systémy Microsoft | 2 | 368 | 11.10.2010 13:49 Mego | | class get/post v PHP, ASP | 0 | 514 | 06.06.2010 18:20 Unlink | | problem s get page ... v PHP, ASP | 1 | 484 | 30.01.2009 22:08 stenley | | php, get a mysql v PHP, ASP | 3 | 339 | 27.07.2012 4:13 TheRay | | vytiahnutie premennej cez GET v JavaScript, VBScript, Ajax | 4 | 846 | 01.12.2009 14:51 pilná lama glama | | [VYRIESENE] Php GET problem v PHP, ASP | 4 | 559 | 21.02.2009 20:12 Xardas | | GET aby to user nevidel v PHP, ASP | 11 | 729 | 05.06.2008 15:23 Tominator | | Problem s get a post v PHP, ASP | 3 | 385 | 24.04.2010 0:13 djsulo | | Get IP address by URL v Operačné systémy Unix a Linux | 5 | 643 | 18.02.2010 10:44 Ďuri |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|