Wczytywanie stringów z konsoli
Ostatnio zmodyfikowano 2015-06-14 16:08
atub Temat założony przez niniejszego użytkownika |
Wczytywanie stringów z konsoli » 2015-06-14 14:44:55 Witam! Mam problem z wczytywaniem stringów z konsoli. Kiedy chce wczytać informacje o modelu to program wyświetla tylko "Model:" i nie mogę nic wpisać. Natomiast w firma i w typ działa wszystko normalnie. Gdzie tu jest problem skoro takiej samej składni użyłem do wczytywanie modelu firmy i typu a nie działa tylko wczytywanie modelu? #include <iostream> #include <conio.h> using namespace std;
class gitara { public: string model; string firma; string typ; float cena; void wypisz() { cout << "Model: " << model << endl; cout << "Firma: " << firma << endl; cout << "Typ: " << typ << endl; cout << "Cena: " << cena << endl; } void zapisz() { cout << "Podaj firme: "; getline( cin, firma ); cout << endl; cout << "Podaj model: "; getline( cin, model ); cout << endl; cout << "Podaj typ gitary(akustyczna elektryczna czy basowa): "; getline( cin, typ ); cout << endl; cout << "Podaj cene: "; cin >> cena; cout << endl; } }; class sklep { public: gitara t[ 100 ]; int ilosc; void wprowadz_wszystkie() { cout << "Podaj ilosc gitar ktore chcesz wprowadzic od 1 do 100" << endl; do { cin >> ilosc; if( ilosc < 1 && ilosc > 100 ) { cout << "Podales zla liczbe . Podaj jeszcze raz" << endl; } } while( ilosc < 1 || ilosc > 100 ); for( int i = 0; i < ilosc; i++ ) { cout << "Podaj dane gitary nr " << i + 1 << endl; t[ i ].zapisz(); } } void wypisz_wszystkie() { for( int i = 0; i < ilosc; i++ ) t[ i ].wypisz(); cout << endl; } };
int main( int argc, char ** argv ) { int menu; sklep GitarMax; cout << "Witam w Bazie Danych " << endl; do { cout << "Nacisnij 1 by dodac gitary do bazy danych" << endl << "Nacisnij 2 by wyswietlic podane gitary" << endl << "Nacisnij 3 by zakonczyc" << endl; cin >> menu; switch( menu ) { case 1: GitarMax.wprowadz_wszystkie(); break; case 2: GitarMax.wypisz_wszystkie(); break; case 3: cout << "Koniec programu" << endl; break; default: cout << "Podales zly znak"; } } while( menu != 3 ); system( "pause" ); return 0; } |
|
stevy |
» 2015-06-14 15:46:59 Trochę trudno było ze zrozumieniem pytania, ale po odpaleniu programu wiem o co Ci chodzi. Problem jest chyba taki, że jak chcesz wczytać gitarę, to przeskakuje bezpośrednio do modelu, omijając jakby firmę, prawda? leży on tu: cout << "Podaj firme: "; getline( cin, firma );
cout zostawia w buforze klawiatury znak nowej linii, a cin kończy wczytywanie po napotkaniu biłego znaku. Musisz ten znak złapać, używając np. cin.ignore(); |
|
atub Temat założony przez niniejszego użytkownika |
» 2015-06-14 16:08:40 Tak dokładnie o to mi chodziło jakoś ciężko było mi to opisać. Dzięki za pomoc |
|
« 1 » |