Funkcje: tworząca i wczytująca prostą strukturę [C++]

0

Witam!

Od jakiegoś czasu mam problem z napisaniem w C++ prostego programu zaopatrzonego w funkcje do tworzenia i wczytywania struktur. Napisałem nawet przykładowy kod, niestety mocno kuleje jeśli chodzi o wczytywanie (tj. wyświetlanie danych już utworzonych) struktur. Najprawdopodobniej ma to związek z moimi brakami w wiedzy w temacie wskaźników... Chciałbym Was prosić o wprowadzenie w poniższym kodzie poprawek oraz, w miarę możliwości, objaśnienie mi, dlaczego i jak stosować w tym przypadku wskaźniki (jeśli rzeczywiście w tym leży problem).

Kod (UWAGA: funkcja wczytująca jest niepoprawna!)

<code=c++>
#include<iostream>

using namespace std;

struct Sauta
{
string marka;
int rocznik;
};

void utworz(Sauta &auta, int n) //znak referencji ważny!
{
if(n == 1)
{
cout << "Podaj marke: ";
cin >> auta.marka;
cout << endl;
cout << "Podaj rocznik: ";
cin >> auta.rocznik;
cout << endl;
}
else
{
Sauta auta[n];

    for(int i = 0; i < n; i++)
    {
        cout << "Dane dla auta nr: " << i << endl;
        cout << "Podaj marke: ";
        cin >> auta[i].marka;
        cout << endl;
        cout << "Podaj rocznik: ";
        cin >> auta[i].rocznik;
        cout << endl;
    }
}

}

void wyswietl(Sauta &auta, int n)
{
if(n == 1)
{
cout << auta.marka << endl;
cout << auta.rocznik << endl;
cout << endl;
}
else
{
Sauta auta[n];

    for(int i = 0; i < n; i++)
    {
        cout << "Dane dla auta nr: " << i << endl;
        cout << auta[i].marka << endl;
        cout << auta[i].rocznik << endl;
        cout << endl;
    }
}

}

int main()
{
const int n = 2;

Sauta auta[n];

utworz(auta[n], n);
wyswietl(auta[n], n);

return(0);

}

0

Wiecie co? Posiedziałem nad tym, i działa tak jak chciałem! Doczytałem trochę nt wskaźników i odpowiedniego zadawania parametrów do funkcji i poprawiłem kod. Oto on (gdyby komuś się przydało):

<code=c++>
#include<iostream>

using namespace std;

struct Sauta
{
string marka;
int rocznik;
};

void utworz(Sauta *auta, int n) //znak referencji ważny!
{
for(int i = 0; i < n; i++)
{
cout << "Dane dla auta nr: " << i << endl;
cout << "Podaj marke: ";
cin >> auta[i].marka;
cout << endl;
cout << "Podaj rocznik: ";
cin >> auta[i].rocznik;
cout << endl;
}
}

void wyswietl(Sauta *auta, int n)
{
for(int i = 0; i < n; i++)
{
cout << "Dane dla auta nr: " << i << endl;
cout << auta[i].marka << endl;
cout << auta[i].rocznik << endl;
cout << endl;
}
}

int main()
{
const int n = 2;

Sauta auta[n];

utworz(auta, n);
wyswietl(auta, n);

return(0);

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1