Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wczytywanie danych w pętli

Ostatnio zmodyfikowano 2016-11-09 22:17
Autor Wiadomość
Veranez
Temat założony przez niniejszego użytkownika
Wczytywanie danych w pętli
» 2016-11-09 12:06:04
Mam pewien problem, otóż, w pętli for podczas odpalanie programu pomijana jest linijka
getline( cin,( * wsk ).marka );
Jakby mógł mi ktoś wytłumaczyć dlaczego tak się dzieje, kod zamieszam poniżej.

C/C++
#include <iostream>
#include <conio.h>  // getch()

using namespace std;

int ile;

struct car
{
    string marka;
    int rocznik;
};

int main()
{
    cout << "Ile samochodow chcesz skatalogowac? ";
    cin >> ile;
   
    car * wsk = new car[ ile ];
   
    for( int i = 0; i < ile; i++ )
    {
        cout << "Samochod #" << i + 1 << ": \n";
        cout << "Prosze podac marke: ";
        getline( cin,( * wsk ).marka );
       
        cout << "Rok produkcji: ";
        cin >>( * wsk ).rocznik;
       
        cout << "#" << i + 1 << ": " <<( * wsk ).rocznik << ", " <<( * wsk ).marka;
    }
   
   
    getch();
    return 0;
}
P-153498
karambaHZP
» 2016-11-09 14:16:04
Po
cin >> ile;
 oczyść bufor strumienia. Pozostaje w nim
'\n'
, na który reaguje
std::getline()
.
http://cpp0x.pl/kursy/Kurs-C++​/Poziom-1​/Obsluga-strumienia-wejscioweg​o​/12
P-153500
mateczek
» 2016-11-09 14:18:19
połatany
C/C++
#include <iostream>
using namespace std;

struct car
{
    string marka;
    int rocznik;
};

int main()
{
    int ile;
    cout << "Ile samochodow chcesz skatalogowac? ";
    cin >> ile; // nie usuwa znaku końca linii!!!
    cin.ignore();
    car * wsk = new car[ ile ]; // no i chyba tworzysz tablicę ?? a nie wskaźnik na obiekt car??
   
    for( int i = 0; i < ile; i++ )
    {
        cout << "Samochod #" << i + 1 << ": \n";
        cout << "Prosze podac marke: ";
        getline( cin, wsk[ i ].marka );
       
        cout << "Rok produkcji: ";
        cin >> wsk[ i ].rocznik; // nie usuwa znaku końca linii!!!
        cin.ignore();
    }
   
   
    //wyświetlenie tablicy
    for( int i = 0; i < ile; i++ )
         cout << "#" << i + 1 << ": " << wsk[ i ].rocznik << ", " << wsk[ i ].marka;
   
    delete[] wsk; //usunięcie wskaźnika
    return 0;
}
P-153501
Veranez
Temat założony przez niniejszego użytkownika
» 2016-11-09 22:17:56
Aaaa no tak, teraz wszystko jasne, wypadło mi z głowy, dzięki za pomoc, no i tam jeszcze kilka drobnych przeoczeń, dziena za pomoc :)
P-153530
« 1 »
  Strona 1 z 1