Muszę napisać program, w którym zdefiniuję jedną strukturę zawierającą trzy zmienne. Następnie muszę napisać funkcję, której argumentem będzie liczba n struktur, które mają zostać utworzone. Funkcja ta ma także alokować dynamicznie pamięć pod tablicę n wskaźników na struktury, a potem alokować kolejno n struktur, przypisując uzyskane adresy do kolejnych komórek utworzonej wcześniej tablicy. Zmienne w utworzonych strukturach mają mieć losowo przypisane wartości z pewnych zakresów. Na końcu funkcja ma zwrócić adres tablicy.
Druga funkcja służąca do kasowania powinna pobierać wskaźnik na tablicę struktur oraz jej wielkość, później zwalniać pamięć zajętą przez struktury, a potem zwalniać pamięć zajętą przez tablicę wskaźników.
Napisałam coś takiego:
Kod: Zaznacz cały
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
struct Structure
{
int a;
int b;
int c;
};
Structure **create(int n)
{
Structure **arr;
//alokowanie
arr = new Structure*[n];
for(int i =0; i<n; i++)
{
arr[i]=new Structure;
}
//przypisywanie losowych liczb do kolejnych zmiennych
for(int i=0; i<n; i++)
{
arr[i]->a = (1 + rand() % 101);
arr[i]->b = (1 + rand() % 101);
arr[i]->c = (1 + rand() % 101);
}
//wyswietlanie
for(int i=0; i<n; i++)
{
cout << arr[i]->a << endl;
cout << arr[i]->b << endl;
cout << arr[i]->c << endl;
}
return arr;
}
void del(Structure **str, int n)
{
for(int i =0; i<n; i++)
delete str[i];
delete [] str;
str=NULL;
}
int main()
{
srand(time(0));
int s = 5;
Structure **str;
str = create(s);
del(str, s);
return 0;
}