fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <string.h>
  5. #include <assert.h>
  6. //-----------------------------------------------------------------------------
  7.  
  8.  
  9. //Hier soll der Typ RandomSet definiert werden. /*DONE*/
  10.  
  11. typedef struct RandomSet{
  12. float newNumber;
  13. float* numbers;
  14. unsigned int length;
  15. } RandomSet;
  16.  
  17. //-----------------------------------------------------------------------------
  18.  
  19. float randomFloat(float a, float b)
  20. {
  21. assert(b>a);
  22. //Hier die Funktion entwickeln : /*DONE*/
  23. //die Rueckgabe muss eine zufaellige Gleitkommazahl zwischen a und b sein.
  24.  
  25. float x = (double)rand() / RAND_MAX;
  26. return a + (b-a)*x;
  27.  
  28. }
  29.  
  30. //-----------------------------------------------------------------------------
  31.  
  32. /* diese Funktion initialisiert ein RandomSet */
  33. void initRandomSet(RandomSet* p_set)
  34. {
  35. p_set->numbers = 0;
  36. p_set->length = 0;
  37. }
  38.  
  39. void addNumberToSet(RandomSet* p_set, float number)
  40. {
  41. //Hier die Funktion entwickeln : /*DONE*/
  42. //number muss zum Set p_set hinzugef?gt werden.
  43. p_set->length++;
  44. p_set->numbers = realloc(p_set->numbers, (p_set->length)*sizeof (float));
  45. if (!p_set->numbers) exit(1);
  46. p_set->numbers[p_set->length-1] = number;
  47. }
  48.  
  49. /* diese Funktion gibt ein RandomSet auf der Konsole aus */
  50. void printRandomSet(RandomSet* p_set)
  51. {
  52. printf("\nRandomSet:\n");
  53. printf("%i numbers: ", p_set->length);
  54. for (unsigned int i = 0; i < p_set->length; i++) printf("%f ", p_set->numbers[i]);
  55. printf("\n");
  56. }
  57.  
  58. //-----------------------------------------------------------------------------
  59.  
  60. int main()
  61. {
  62. printf("\n===== Random series ==================================\n");
  63.  
  64. //Initialisiere den Zufallszahlengenerator. /*DONE*/
  65. srand(time(0)); //srand(time(NULL)); =>Gibt jedoch einen Fehler .. typkonvertierung von time_t zu unsigned int
  66.  
  67. RandomSet sets[5]; // 5 leere Sets werden erzeugt
  68. /*for (int a = 0; a < 5; a++)
  69.   {
  70.   sets[a].numbers = (float*)malloc(sets[a].length * sizeof(float));
  71.   }*/
  72. for (int i = 0; i < 5; i++) // fuellt die 5 sets und gibt sie aus
  73. {
  74. initRandomSet(&sets[i]);
  75. float newNumber = randomFloat(100.0, 100000.0); // erzeugt Startzahl dieses Sets
  76. addNumberToSet(&sets[i], newNumber); // fuegt diese Zahl dem Set hinzu
  77.  
  78. //Hier m?ssen jetzt die weiteren Nummern erzeugt werden! /*TODO*/
  79.  
  80. while ( newNumber < 1.0 && newNumber > 0.0)
  81. {
  82. newNumber = randomFloat(0.0, newNumber);
  83. addNumberToSet(&sets[i], newNumber);
  84. }
  85.  
  86. }
  87. for (int i = 0; i < 5; i++) printRandomSet(&sets[i]); // gibt die Sets aus
  88. for (int i = 0; i < 5; i++) free(sets[i].numbers); // gibt den Speicher der Sets wieder frei
  89. printf("\n");
  90. }
  91.  
  92.  
Success #stdin #stdout 0s 2380KB
stdin
Standard input is empty
stdout
=====   Random series   ==================================

RandomSet:
1 numbers: 15667.395508  

RandomSet:
1 numbers: 1979.703857  

RandomSet:
1 numbers: 69087.593750  

RandomSet:
1 numbers: 44954.425781  

RandomSet:
1 numbers: 3138.134277