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

Tablice struktur

Ostatnio zmodyfikowano 2016-05-05 20:21
Autor Wiadomość
DeWuKa
Temat założony przez niniejszego użytkownika
Tablice struktur
» 2016-05-04 19:40:26
Witam, próbuję zrobić zadanie, w którym podaję liczbę struktur która ma być utworzona, następnie zbieram 2 dane tworząc "katalogi", a na koniec wyświetlam wszystkie zebrane informacje. Nie mam już pomysłu jak to zrobić.

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

using namespace std;

int main()
{
    struct auta
    {
        string nazwa;
        int rok;
    };
    cout << "Ile samochodow chcesz skatalogowac? " << endl;
    int samochody;
    cin >> samochody;
    auta * autka = new auta;
    for( int i = 0; i <= samochody; i++ )
    {
        cout << "Podaj nazwe samochodu: " << endl;
        cin >> autka->nazwa[ i ];
        cout << "Podaj rok produkcji samochodu: " << endl;
        cin >> autka->rok[ i ];
    };
   
    for( int j = 0; j <= samochody; j++ )
    {
        int k = 0;
        cout << "Samochód " << k++ << ":" << endl;
        cout << "Nazwa: " << autka[ j ].nazwa << endl;
        cout << "Rocznik " << autka[ j ].rok << endl;
    };
    delete autka;
   
    getchar();
    return 0;

Edit: Program nie kompiluje się, ponoć błąd jest w tym wierszu "cin >> autka->rok;"
P-147935
Phestek
» 2016-05-04 19:46:59
Napisz może co ci nie działa, z czym masz problem. Czarodziejska kula jest na urlopie.
P-147936
marcolo2307
» 2016-05-04 20:13:15
auta * autka = new auta[ samochody ];

I
delete[] autka

A strukturę deklaruj poza funkcją.
P-147941
DeWuKa
Temat założony przez niniejszego użytkownika
» 2016-05-04 20:21:33
Dziękuję, poprawiłem wskazane przez ciebie błędy, jednak dalej nie chce się skompilować.
Dostałem komunikat "expression must have pointer-to-object type" dotyczący wiersza "in >> autka->rok[ i ];" jednak nie rozumiem, co jest nie tak.
P-147943
michal11
» 2016-05-04 20:39:03
autka->rok nie jest tablicą więc nie ma operatora[].
P-147945
DeWuKa
Temat założony przez niniejszego użytkownika
» 2016-05-04 20:44:23
Po poprawkach wygląda to tak:

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


using namespace std;

struct auta
{
    string nazwa;
    int rok;
};

int main()
{
    cout << "Ile samochodow chcesz skatalogowac? " << endl;
    int samochody;
    cin >> samochody;
    auta * autka = new auta[ samochody ];
    for( int i = 0; i <= samochody; i++ )
    {
        cout << "Podaj nazwe samochodu: " << endl;
        cin >> autka->nazwa[ i ];
        cout << "Podaj rok produkcji samochodu: " << endl;
        cin >> autka->rok[ i ];
    };
   
    for( int j = 0; j <= samochody; j++ )
    {
        int k = 0;
        cout << "Samochód " << k++ << ":" << endl;
        cout << "Nazwa: " << autka[ j ].nazwa << endl;
        cout << "Rocznik " << autka[ j ].rok << endl;
    };
    delete[] autka;
   
    getchar();
    return 0;
}
Niestety dalej nie działa
P-147946
marcolo2307
» 2016-05-04 20:45:05
autka to wskaźnik na tablicę, więc:
autka[ i ]->rok;

Tak samo jak to wyświetlasz.
P-147947
DeWuKa
Temat założony przez niniejszego użytkownika
» 2016-05-04 20:59:22
marcolo2307 bardzo dziękuję, po zmianie na:
cin >> autka[ i ].rok;
Wszystko działa.
P-147948
« 1 » 2
  Strona 1 z 2 Następna strona