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

Przypisanie wartości struktury dynamicznej do tablicy

Ostatnio zmodyfikowano 2015-04-24 21:43
Autor Wiadomość
Bastian
Temat założony przez niniejszego użytkownika
Przypisanie wartości struktury dynamicznej do tablicy
» 2015-04-24 21:19:35
Cześć.

Uczę się c++. Do tej pory programowałem radośnie w PHP i Javascriptcie, z sukcesami. Niestety zachciało mi się nauczyć statycznie typowanego języka i padło na C++. No i wychodzą wszystkie złe nawyki języków dynamicznie typowanych. Do rzeczy: robie ćwiczenia z Praty no i jest sobie ćwiczonko, gdzie program ma przyjmować z klawiatury marke aut i rok produkcji a potem wyświetlać. Program ma korzystać ze struktury dynamicznej. No i mam problem z przypisaniem roku (int) do tablicy, żeby na końcu wyświetlić wszystko co program przyjął. Zamiast podanych lat, dostaje śmieci.

Program wygląda tak:

C/C++
#include <iostream>           
#include <cstring>            

void kataloguj( int );

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

void kataloguj( int ile ) {
   
    char wprowadzone_marka[ ile ][ 20 ];
    int wprowadzone_rok[ ile ];
   
    using namespace std;
   
    for( int x = 0; x < ile; x++ ) {
       
        car * samochod = new car;
       
        cout << "Samochod:#" << x << endl << "Prosze podać marke: ";
       
        cin.getline( samochod->marka, 20 );
       
        strncpy( wprowadzone_marka[ x ], samochod->marka, 20 );
       
        wprowadzone_marka[ x ][ 20 ] = '\0';
       
        cout << "Prosze podać rocznik: ";
       
        cin >> samochod->rok;
       
        //cout << samochod->rok;    
       
        cin.get();
       
        wprowadzone_rok[ ile ] = samochod->rok;
       
        delete samochod;
       
    };
   
    for( int i = 0; i < ile; i++ ) {
       
        cout << wprowadzone_marka[ i ] << " ";
        cout << wprowadzone_rok[ i ] << " ";
       
    };
   
};

int main() {
   
    using namespace std;
   
    int liczba_aut = 0;
   
    cout << "Podaj liczbe aut: ";
   
    cin >> liczba_aut;
   
    cin.get();
   
    kataloguj( liczba_aut );
   
};



A oto output programu:



╰─>$ ./a.out
Podaj liczbe aut: 2
Samochod:#0
Prosze podać marke: bmw
Prosze podać rocznik: 2004
Samochod:#1
Prosze podać marke: audi
Prosze podać rocznik: 1998
bmw -1217483232 audi -1217176417 ⏎                                                                                                                                                                                          

Czy problem leży w poniższej operacji przypisania?

C/C++
wprowadzone_rok[ ile ] = samochod->rok;

C/C++
samochod->rok

jest typu int więc wg. mnie powinnien się ten rok zapisać do tablicy poprawnie..?                                                       
P-131385
czosnek17
» 2015-04-24 21:38:05
Po klamrach funkcji i pętli masz średniki, a w tym przypisaniu nie wykorzystałeś iteratora przy dostępie do elementu tablicy. Powinno być
wprowadzone_rok[ x ] = samochod->rok;
P-131386
Bastian
Temat założony przez niniejszego użytkownika
» 2015-04-24 21:43:01
Aaaahhh...czeski błąd :/ Dzięki.
P-131387
« 1 »
  Strona 1 z 1