#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <assert.h>
//-----------------------------------------------------------------------------
//Hier soll der Typ RandomSet definiert werden. /*DONE*/
typedef struct RandomSet{
float newNumber;
float* numbers;
unsigned int length;
} RandomSet;
//-----------------------------------------------------------------------------
float randomFloat(float a, float b)
{
//Hier die Funktion entwickeln : /*DONE*/
//die Rueckgabe muss eine zufaellige Gleitkommazahl zwischen a und b sein.
float x
= (double)rand() / RAND_MAX
; return a + (b-a)*x;
}
//-----------------------------------------------------------------------------
/* diese Funktion initialisiert ein RandomSet */
void initRandomSet(RandomSet* p_set)
{
p_set->numbers = 0;
p_set->length = 0;
}
void addNumberToSet(RandomSet* p_set, float number)
{
//Hier die Funktion entwickeln : /*DONE*/
//number muss zum Set p_set hinzugef?gt werden.
p_set->length++;
p_set
->numbers
= realloc(p_set
->numbers
, (p_set
->length
)*sizeof (float)); if (!p_set
->numbers
) exit(1); p_set->numbers[p_set->length-1] = number;
}
/* diese Funktion gibt ein RandomSet auf der Konsole aus */
void printRandomSet(RandomSet* p_set)
{
printf("%i numbers: ", p_set
->length
); for (unsigned int i
= 0; i
< p_set
->length
; i
++) printf("%f ", p_set
->numbers
[i
]); }
//-----------------------------------------------------------------------------
int main()
{
printf("\n===== Random series ==================================\n");
//Initialisiere den Zufallszahlengenerator. /*DONE*/
srand(time(0)); //srand(time(NULL)); =>Gibt jedoch einen Fehler .. typkonvertierung von time_t zu unsigned int
RandomSet sets[5]; // 5 leere Sets werden erzeugt
/*for (int a = 0; a < 5; a++)
{
sets[a].numbers = (float*)malloc(sets[a].length * sizeof(float));
}*/
for (int i = 0; i < 5; i++) // fuellt die 5 sets und gibt sie aus
{
initRandomSet(&sets[i]);
float newNumber = randomFloat(100.0, 100000.0); // erzeugt Startzahl dieses Sets
addNumberToSet(&sets[i], newNumber); // fuegt diese Zahl dem Set hinzu
//Hier m?ssen jetzt die weiteren Nummern erzeugt werden! /*TODO*/
while ( newNumber < 1.0 && newNumber > 0.0)
{
newNumber = randomFloat(0.0, newNumber);
addNumberToSet(&sets[i], newNumber);
}
}
for (int i = 0; i < 5; i++) printRandomSet(&sets[i]); // gibt die Sets aus
for (int i
= 0; i
< 5; i
++) free(sets
[i
].
numbers); // gibt den Speicher der Sets wieder frei }