VII - Ciągi znaków, zadanie nr. 4 - problem.
Ostatnio zmodyfikowano 2010-09-19 19:34
Mateque Temat założony przez niniejszego użytkownika |
VII - Ciągi znaków, zadanie nr. 4 - problem. » 2010-09-19 17:36:58 Robiąc to zadanie zatrzymałem się dopiero na wprowadzaniu danych. Problem polega na tym, że markę drugiego i trzeciego samochodu program pobiera sobie sam w postaci " ". Pomóżcie noobkowi. :( #include <iostream> #include <conio.h> using namespace std; int main() { const short int ZNAKOW = 50, AUT = 3; char marka[ AUT ][ ZNAKOW ], model[ AUT ][ ZNAKOW ]; int predkosc[ AUT ]; float silnik[ AUT ]; cout << "Witaj, wprowadz marke 1go samochodu:" << endl; cin.getline( marka[ 1 ], ZNAKOW ); cout << "Wprowadziles marke " << marka[ 1 ] << "." << endl << endl; cout << "Wprowadz model 1go samochodu:" << endl; cin.getline( model[ 1 ], ZNAKOW ); cout << "Wprowadziles model " << model[ 1 ] << "." << endl << endl; cout << "Wprowadz predkosc maksymalna samochodu " << marka[ 1 ] << " " << model[ 1 ] << ":" << endl; cin >> predkosc[ 1 ]; cout << "Wprowadziles predkosc wynoszaca " << predkosc[ 1 ] << "." << endl << endl; cout << "Wprowadz pojemnosc silnika samochodu " << marka[ 1 ] << " " << model[ 1 ] << ":" << endl; cin >> silnik[ 1 ]; cout << "Wprowadziles pojemnosc wynoszaca " << silnik[ 1 ] << "." << endl << endl; cout << "Wprowadz marke 2go samochodu:" << endl; cin.getline( marka[ 2 ], ZNAKOW ); cout << "Wprowadziles marke " << marka[ 2 ] << "." << endl << endl; cout << "Wprowadz model 2go samochodu:" << endl; cin.getline( model[ 2 ], ZNAKOW ); cout << "Wprowadziles model " << model[ 2 ] << "." << endl << endl; cout << "Wprowadz predkosc maksymalna samochodu " << marka[ 2 ] << " " << model[ 2 ] << ":" << endl; cin >> predkosc[ 2 ]; cout << "Wprowadziles predkosc wynoszaca " << predkosc[ 2 ] << "." << endl << endl; cout << "Wprowadz pojemnosc silnika samochodu " << marka[ 2 ] << " " << model[ 2 ] << ":" << endl; cin >> silnik[ 2 ]; cout << "Wprowadziles pojemnosc wynoszaca " << silnik[ 2 ] << "." << endl << endl; cout << "Wprowadz marke 3go samochodu:" << endl; cin.getline( marka[ 3 ], ZNAKOW ); cout << "Wprowadziles marke " << marka[ 3 ] << "." << endl << endl; cout << "Wprowadz model 3go samochodu:" << endl; cin.getline( model[ 3 ], ZNAKOW ); cout << "Wprowadziles model " << model[ 3 ] << "." << endl << endl; cout << "Wprowadz predkosc maksymalna samochodu " << marka[ 3 ] << " " << model[ 3 ] << ":" << endl; cin >> predkosc[ 3 ]; cout << "Wprowadziles predkosc wynoszaca " << predkosc[ 3 ] << "." << endl << endl; cout << "Wprowadz pojemnosc silnika samochodu " << marka[ 3 ] << " " << model[ 3 ] << ":" << endl; cin >> silnik[ 3 ]; cout << "Wprowadziles pojemnosc wynoszaca " << silnik[ 3 ] << "." << endl << endl; system( "PAUSE" ); EXIT_SUCCESS; }
|
|
ison |
» 2010-09-19 19:34:14 rozważmy ten kawałek kodu: cout << "Wprowadz pojemnosc silnika samochodu " << marka[ 1 ] << " " << model[ 1 ] << ":" << endl; cin >> silnik[ 1 ]; cout << "Wprowadziles pojemnosc wynoszaca " << silnik[ 1 ] << "." << endl << endl;
cout << "Wprowadz marke 2go samochodu:" << endl; cin.getline( marka[ 2 ], ZNAKOW ); cout << "Wprowadziles marke " << marka[ 2 ] << "." << endl << endl;
cin w twoim programie - wczytuje zmienną do napotkania białego znaku w postaci spacji lub nowej linii cin.getline - wczytuje i przypisuje ciąg znaków tak długo aż napotka znak nowej linii wprowadzamy pojemnosc silnika samochodu - dla przykładu liczbę 100 w buforze znajduje się liczba 100 i znak końca linii liczba 100 jest wyrzuca z bufora i przypisywana pod zmienną w momencie gdy wywołujesz cin.getline w buforze znajduje się już znak końca linii (tego czego oczekuje metoda getline) zatem zostaje on wyrzucony z bufora i przypisany do zmiennej 'marka' twoim zadaniem jest wyczyścić bufor z niepotrzebnego znaku końca linii po wczytaniu pojemnosci silnika oferuje to metoda ignore(); po każdym zwykłym cin w twoim programie dopisz cin.ignore(); kilka przykładów: 1. cin.ignore(); 2. cin.ignore(5); 3. cin.ignore(5,'a'); 1. zignoruje 1 znak bufora 2. zignoruje 5 znaków bufora o ile nie napotka końca zbioru 3. zignoruje 5 znaków bufora o ile nie napotka litery 'a' |
|
« 1 » |