Witam.
Mam problem z zadaniem, które brzmi tak: “stworzyć tablicę dynamiczną struktur o wielkości n, a następnie za pomocą funkcji dodawać, kasować i wyświetlać elementy.” Struktura wygląda tak jak w kodzie.
Kompilator nie wyświetla żadnego błędu, ale gdy próbuję wykonać dowolną operację na tablicy w funkcji (np. cout << tablica[numer].imie; albo przypisanie wartości), program zawiesza się.
#include
#include
using namespace std;
struct student
{
string imie;
string nazwisko;
float srednia_ocen;
int stypendium;
int wiek;
};
student *tablica;
int n;
void dodaj();
void kasuj();
void wyswietl();
int main()
{
cout << "Podaj ilosc studentow : ";
cin >> n;
student *tablica = new student[n];
string dzialanie = "koniec";
do
{
cout <<"\n\nPodaj, co chcesz zrobic (dodaj/kasuj/wyswietl/koniec) : ";
cin >> dzialanie;
if (dzialanie != "koniec" && dzialanie != "dodaj" && dzialanie != "kasuj" && dzialanie != "wyswietl")
dzialanie = "koniec";
if (dzialanie == "dodaj")
dodaj();
if (dzialanie == "kasuj")
kasuj();
if (dzialanie == "wyswietl")
wyswietl();
}while (dzialanie != "koniec");
cout <<"\n\n\n";
system("PAUSE");
return EXIT_SUCCESS;
}
void dodaj()
{
cout << "\n\nPodaj numer studenta, ktorego dane chcesz edytowac : ";
int numer;
cin >> numer;
cout << "\n\nPodaj kolejno : imie, nazwisko, srednia ocen, stypendium, wiek\n";
cin >> tablica[numer].imie;
cin >> tablica[numer].nazwisko;
cin >> tablica[numer].srednia_ocen;
cin >> tablica[numer].stypendium;
cin >> tablica[numer].wiek;
}
void kasuj()
{
cout << "\n\nPodaj numer studenta, ktorego dane chcesz skasowac : ";
int numer;
cin >> numer;
tablica[numer].imie =' ';
tablica[numer].nazwisko = ' ';
tablica[numer].srednia_ocen = 0;
tablica[numer].stypendium = 0;
tablica[numer].wiek = 0;
}
void wyswietl()
{
cout <<"\n\nWyswietlanie zawartosci tablicy dynamicznej:";
for (int i = 0; i < n; i++)
{
cout << endl << tablica[i].imie;
cout << endl << tablica[i].nazwisko;
cout << endl << tablica[i].srednia_ocen;
cout << endl << tablica[i].stypendium;
cout << endl << tablica[i].wiek;
}
}