Cześć, robiłem właśnie zadanie 7. z załącznika i natrafiłem na problem. Mianowicie, po podaniu liczby aut do skatalogowania, program przeskakiwał mi opcje podania maki i przechodził od razu do roku produkcji. Było to spowodowane tym, że znak nowego wiersza zostawał w strumieniu wejściowym. Rozwiązałem ten problem, dodając linie "cin.get()" na początku pętli i teraz moje pytanie: czy można się jakoś obejść bez tego "cin.get()" lub zastąpić funkcję "getline()" inną, aby to sprawnie działało?
Kod programu:
#include "stdafx.h" #include <iostream> #include <conio.h> #include <string> using namespace std; struct car { string brand; int yop; }; int main() { int n, i; cout << "how many cars do you want to catalogue? "; cin >> n; car *tab = new car[n]; for (i = 0; i < n; i++) { cin.get(); cout << endl << "car "<< i + 1 << "."<< endl; cout << "car brand: "; getline(cin, tab[i].brand); cout << "year of production: "; cin >> tab[i].yop; } for (i = 0; i < n; i++) { cout << endl << "car "<< i + 1 << "."<< endl; cout << tab[i].brand << endl << tab[i].yop << endl; } delete [] tab; _getch(); return 0; }