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

program nie chce pobierac danych

Ostatnio zmodyfikowano 2015-02-12 01:03
Autor Wiadomość
moninf
Temat założony przez niniejszego użytkownika
program nie chce pobierac danych
» 2015-02-11 18:11:52
C/C++
#include <iostream>

using namespace std;

struct car {
    char marka[ 20 ];
    int rokbud;
};

int main()
{
    cout << "Podaj ile samochodow skatalogowac" << endl;
    int liczba;
    cin >> liczba;
    car * auta = new car[ liczba ];
    int i = 1;
    while( i <= liczba ) {
        cout << "Podaj nazwe auta" << endl;
        cin.get( auta->marka, 20 );
        cout << "Podaj rok budowy tego samochodu" << endl;
        cin >> auta->rokbud;
        i++; }
    delete[] auta;
    return 0;
}

Program wyswietla wszystkie napisy ale nie chce pobierac danych.... nie wiem co jest nie tak z tym kodem.
Prosze o pomoc
P-126367
Peruskough
» 2015-02-12 01:03:46
Po pierwsze, zmienna "i" powinna być początkowo równa zero (tablice numeruje się od zera).
Warunek pętli while to powinno być i<liczba, a nie i<=liczba, bo tak jak wspomniałem wcześniej, tablice numerujemy od zera.
I najważniejsze. Gdy masz auta->marka to przypisujesz dane tylko do pierwszego elementu tablicy, a chodzi Ci o wszystkie. Dlatego zastosuj (auta+i)->marka, dzięki temu przypiszesz dane do wszystkich elementów tablicy. To samo oczywiście z auta->rokbud.
I zamiast cin.get() zastosuj zwyczajne cin.

Czyli ogółem z poprawkami:
C/C++
cout << "Podaj ile samochodow skatalogowac" << endl;
int liczba;
cin >> liczba;
car * auta = new car[ liczba ];
int i = 0;
while( i < liczba ) {
    cout << "Podaj nazwe auta" << endl;
    cin >>( auta + i )->marka;
    cout << "Podaj rok budowy tego samochodu" << endl;
    cin >>( auta + i )->rokbud;
    i++;
}
delete[] auta;
return 0;
P-126409
« 1 »
  Strona 1 z 1