Yoki Temat założony przez niniejszego użytkownika |
Problem z petla » 2009-02-20 15:53:17 Witam mam następujący problem. Rozpocząłem w ramach ćwiczeń pisanie programu i napotkałem następujący problem: #include<iostream> #include<conio.h> #include<console.ddt> using namespace ddt::console; using namespace std; int main() { float wielkosc; string nazwa; unsigned char znak; gotoxy( 33, 1 ); cout << "BAZA DANYCH GIER v0.1" << endl; gotoxy( 1, 23 ); cout << "Wcisniecie [INSERT] powoduje dodanie wpisy" << endl; gotoxy( 1, 24 ); cout << "wcisniecie [DEL] powoduje usuniecie wpisu" << endl; znak = getch(); cout << static_cast < int >( znak ) << endl; while( znak = 224 ) { switch( znak ) { case 224: textbackground( 0 ); clrscr(); textcolor( 14 ); cout << " Wpisz nazwe gry: "; getline( cin, nazwa ); cout << " Wpisz wielkosc gry: "; cin >> wielkosc; cout << nazwa << wielkosc << "GB" << endl; getch(); cout << static_cast < int >( znak ) << endl; clrscr(); textcolor( 15 ); gotoxy( 33, 1 ); cout << "BAZA DANYCH GIER v0.1" << endl; gotoxy( 1, 23 ); cout << "Wcisniecie [INSERT] powoduje dodanie wpisy" << endl; gotoxy( 1, 24 ); cout << "wcisniecie [DEL] powoduje usuniecie wpisu" << endl; znak = getch(); cout << static_cast < int >( znak ) << endl; break; default: cout << "BLAD!!"; break; } } getch(); }
dlaczego polecenie getline(cin,nazwa); nie chce się powtarzać w pętli?? i polecenie to przy kolejnym obrocie jest pomijane. |
|
Yoki Temat założony przez niniejszego użytkownika |
» 2009-02-20 16:04:58 no fakt przypisania nie chce zrobic :) ale to taki bardzo bardzo wczesny projekt :) na dodatek bardzo poczatkujacego :) niejmniej dzieki za wychwycenie :) Kod wyglada teraz tak :) niemniej nadal w petli nie chce sie powtorzyc komenda getline #include<iostream> #include<conio.h> #include<console.ddt> using namespace ddt::console; using namespace std; int main() { float wielkosc; string nazwa; unsigned char znak, b; gotoxy( 33, 1 ); cout << "BAZA DANYCH GIER v0.1" << endl; gotoxy( 1, 23 ); cout << "Wcisniecie [INSERT] powoduje dodanie wpisy" << endl; gotoxy( 1, 24 ); cout << "wcisniecie [DEL] powoduje usuniecie wpisu" << endl; znak = getch(); cout << static_cast < int >( znak ) << endl; while( kbhit() ) { znak = getch(); static_cast < int >( znak ); } while( znak ) { switch( znak ) { case 82: textbackground( 0 ); clrscr(); textcolor( 14 ); cout << " Wpisz nazwe gry: "; getline( cin, nazwa ); cout << " Wpisz wielkosc gry: "; cin >> wielkosc; cout << nazwa << wielkosc << "GB" << endl; getch(); cout << static_cast < int >( znak ) << endl; while( kbhit() ) { znak = getch(); static_cast < int >( znak ); } clrscr(); textcolor( 15 ); gotoxy( 33, 1 ); cout << "BAZA DANYCH GIER v0.1" << endl; gotoxy( 1, 23 ); cout << "Wcisniecie [INSERT] powoduje dodanie wpisy" << endl; gotoxy( 1, 24 ); cout << "wcisniecie [DEL] powoduje usuniecie wpisu" << endl; znak = getch(); cout << static_cast < int >( znak ) << endl; while( kbhit() ) { znak = getch(); static_cast < int >( znak ); } break; case 83: clrscr(); textcolor( 14 ); cout << "ktory wpis chcesz usunac?"; cin >> b; break; default: cout << "BLAD!!"; break; } } getch(); } |
|
Yoki Temat założony przez niniejszego użytkownika |
» 2009-02-21 09:28:12 Pomoze mi ktos?? Bo jestem ciekawy dlaczego nie dziala w petli pobranie calej linii:( czy to komenda gets czy getline |
|
Skala |
» 2009-02-21 10:45:43 #include<iostream> #include<conio.h> #include "console.ddt" using namespace ddt::console; using namespace std; int main() { float wielkosc; string nazwa; unsigned char znak, b; while( znak ) { gotoxy( 33, 1 ); cout << "BAZA DANYCH GIER v0.1" << endl; gotoxy( 1, 23 ); cout << "Wcisniecie [INSERT] powoduje dodanie wpisy" << endl; gotoxy( 1, 24 ); cout << "wcisniecie [DEL] powoduje usuniecie wpisu" << endl; znak = getch(); switch( znak ) { case 82: textbackground( 0 ); clrscr(); textcolor( 14 ); cout << " Wpisz nazwe gry: "; cin.ignore(); getline( cin, nazwa ); cout << " Wpisz wielkosc gry: "; cin >> wielkosc; cout << nazwa << wielkosc << "GB" << endl; getch(); clrscr(); textcolor( 15 ); break; default: cout << "BLAD!!"; break; } } getch(); return 0; }
Mam nadzieję że poprawiłem problem z twoim getline'm ale przyznam się że kod jest nie czytelny, i w ogóle inaczej to bym zastosował. A co do podpowiedzi twojego programu, zastosuj tablice a potem jak dodaj wpis zmienna++; |
|
pekfos |
» 2009-02-21 11:02:19 ojojoj!! tyle błędów!! static_cast < int >( cos ); to powinno wyglądać tak: zmienna = static_cast < int >( cos ); (nie zaznaczałem powtarzających się błędów) #include<iostream> #include<conio.h> #include<console.ddt> using namespace ddt::console; using namespace std; int main() { float wielkosc; string nazwa; unsigned char znak, b; gotoxy( 33, 1 ); cout << "BAZA DANYCH GIER v0.1" << endl; gotoxy( 1, 23 ); cout << "Wcisniecie [INSERT] powoduje dodanie wpisu" << endl; gotoxy( 1, 24 ); cout << "wcisniecie [DEL] powoduje usuniecie wpisu" << endl; znak = getch(); while( kbhit() ) { znak = getch(); } while( znak != 27 ) { switch( static_cast < int >( znak ) ) { case 82: textbackground( 0 ); clrscr(); textcolor( 14 ); cout << " Wpisz nazwe gry: "; getline( cin, nazwa ); cout << " Wpisz wielkosc gry: "; cin >> wielkosc; cout << nazwa << wielkosc << "GB" << endl; getch(); cout << static_cast < int >( znak ) << endl; while( kbhit() ) { znak = getch(); static_cast < int >( znak ); } clrscr(); textcolor( 15 ); gotoxy( 33, 1 ); cout << "BAZA DANYCH GIER v0.1" << endl; gotoxy( 1, 23 ); cout << "Wcisniecie [INSERT] powoduje dodanie wpisy" << endl; gotoxy( 1, 24 ); cout << "wcisniecie [DEL] powoduje usuniecie wpisu" << endl; znak = getch(); cout << static_cast < int >( znak ) << endl; while( kbhit() ) { znak = getch(); static_cast < int >( znak ); } break; case 83: clrscr(); textcolor( 14 ); cout << "ktory wpis chcesz usunac?"; cin >> b; break; } } return 0; }
|
|
Yoki Temat założony przez niniejszego użytkownika |
» 2009-02-21 11:47:46 dzięki :) wszelkie sugestie są dla mnie bardzo ważne :)
próbuje programować od tygodnia i stad pewnie tyle błędów :) ale wiadomo każdy się na nich uczy :) więc prosze wprost o to abyście powiedzieli co ewentualnie można zmienić i gdzie mam błędy :)
dzieki jeszcze raz
pozdro |
|
DejaVu |
» 2009-02-21 16:32:06 Generalnie pobieranie znaku z klawiatury powinno być przed switch'em... u Ciebie to wogóle jest sklejka jakaś dziwna, że nawet nie chce się poprawiać błędów w tym kodzie tak dużo ich jest. |
|
Yoki Temat założony przez niniejszego użytkownika |
» 2009-02-21 16:35:19 rozumiem :( czyli zaczynam od przerobienia jeszcze raz poprzenich lekcji kursu :( pozdrawiam i dziekuje |
|
« 1 » 2 |