Może chociaż ktośby mi pokazał, jak do takiej struktury
struct sDrawResults{
unsigned int ID;
unsigned int Number;
};
sDrawResults DrawResults[6]; // tożsame z sDrawResults *DrawResults; jak dobrze rozumiem?
stworzyć dynamiczną tablicę struktur (nie wiem czy się dobrze wyrażam). Po prostu ta pojemność nie zawsze będzie 6. Chcę, by to użytkownik decydował o tym, dlatego chcę to zrobić dynamicznie. To jest zadanie na zajęcia, więc może i da się to zrobić inaczej, ale ja chcę potrenować struktury i dynamiczne alokowanie pamieć. Na razie próbuję i nic mi nie wychodzi.
Może wkleję co mam tak dla jasności
#include <cstdio>
#include <stdlib.h>
#include <ctime>
//Funkcja zwraca liczbę pseudolosową z przedziału <min, max>
int RandRange(int min, int max)
{
return min + rand() % (1 + max - min);
}
int rozmiar = 6; // zmienna globalna - ile liczb losować
struct sDrawResults{
unsigned int ID;
unsigned int Number;
};
void DrawNumbers(int first, int last)
{
//tutaj tworzę nową tablicę typu struktura sDrawResults o nazwie DrawResults.
//sDrawResults DrawResults[6]; // to ma być dynamiczne. Możemy losować tyle ile zadany w 'rozmiar'
sDrawResults *DrawResults; // to samo co na górze
DrawResults = (int*)malloc(rozmiar*sizeof(rozmiar)); // tutaj nie wiem jak to zrobić
for (int i=0; i<6; i++)
{
DrawResults[i].ID = RandRange(first, last);
DrawResults[i].Number = i+1;
for (int j=0; j<i; j++)
{
if (DrawResults[i].ID == DrawResults[j].ID)
{
i = i-1;
break;
}
}
// printf("Wynik: %d \n", DrawResults[i].ID);
// printf("ID losowania: %d \n\n", i, DrawResults[i].Number);
}
}
void PrintDrawnNumbers()
{
printf("Wylosowano następujące liczby: \n");
printf("ID | Numer liczby \n");
printf("--------------------\n");
for (int i=0; i<6; i++)
{
printf("%3d | %3d\n", DrawResults[i].Number, DrawResults[i].ID);
}
}
int main()
{
srand(time(NULL));
DrawNumbers(1,49);
PrintDrawnNumbers();
return 0;
}