Advertisement
Guest User

p5_array1

a guest
Jan 24th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <time.h>
  5. #include <limits.h>
  6.  
  7. struct event_t {
  8. int type; // Ereignis -Typ
  9. double time; // Aktuelle Zeit
  10. long serial; // laufende Ereignisnummer , wird beim Einfuegen generiert 5 };
  11. };
  12. typedef struct event_t event_t;// Ereignismenge fuer funktionen
  13. event_t *ereignismenge[100];
  14.  
  15. void bubblesort(); // c99 blabla...
  16. long serial = 1; // da initialisierung ja mit null gefuellt wird
  17.  
  18.  
  19.  
  20. double myrand() { // P3 +1 oder nicht?
  21. return (double)rand() / ((double)RAND_MAX);
  22. }
  23.  
  24. void event_initialize() //
  25. {
  26. // ersten hundert eintraege sind schon in der liste bestehend?
  27. for (int i = 0; i < 100; i++)
  28. {
  29. ereignismenge[i] = NULL;
  30. }
  31.  
  32. }
  33. void bubblesort(){
  34. for(int j = 1; j < 100; j++) {
  35. for (int i = 0; i < (j - 1); i++) {
  36. if((ereignismenge[i] != NULL)){
  37. if (ereignismenge[i]->time > ereignismenge[i + 1]->time) {
  38. struct event_t *temp; // temp damit das erste ereignis nicht ueberschrieben wird
  39. temp = ereignismenge[i];
  40. ereignismenge[i] = ereignismenge[i + 1];
  41. ereignismenge[i + 1] = temp;
  42. }
  43. }
  44. }
  45. }
  46. }
  47.  
  48. long event_store(int type, double time) {
  49.  
  50. struct event_t *event = (struct event_t *)calloc(1, sizeof(struct event_t));
  51. event->type = type;
  52. event->time = time;
  53. for(int i=0; i < 100; i++) {
  54. // erzeuge eintraege// irgendwas ausdenken damit ergebnisse nicht ueberschrieben weredn
  55. if (ereignismenge[i] == NULL) {
  56.  
  57. event->serial = serial;
  58. ereignismenge[i] = event;
  59. serial++;
  60.  
  61. }
  62. }
  63. bubblesort();
  64. }
  65.  
  66. long event_retrieve(int *type, double *time) {
  67. for (long i = 0; i < 100; i++) {
  68. // Attribute werden uebergeben
  69. if (ereignismenge[i]!=NULL) {
  70. long serial = ereignismenge[i]->serial;
  71. *type = ereignismenge[i]->type;
  72. *time = ereignismenge[i]->time;
  73. free(ereignismenge[i]);
  74. ereignismenge[i] = NULL;
  75. return serial;
  76. }
  77. }
  78. }
  79.  
  80. int main() {
  81.  
  82. srand(time(NULL));
  83. long id;
  84. int type;
  85. double time;
  86. int n = 100;// Ereignisliste fuellen
  87. clock_t start, ende;
  88. event_initialize();
  89.  
  90. start = clock();
  91. for (int i = 0; i < n; i++) {
  92. event_store(rand() % 100, myrand() * 10); // Zufallstyp (1..100)
  93. }
  94.  
  95. // PraktikumsPDF Zeile 14 n=100000 // n neu definieren ???
  96. n = n + 99800; // viele Ereignisse generieren
  97.  
  98. for (int i = 0; i < n; i++) {
  99. id = event_retrieve(&type, &time); // Ereignis abrufen
  100.  
  101. printf("ID: %10ld TYPE: %3d TIME: %g\n", id, type, time); // Kontrollausgabe
  102.  
  103. event_store(rand() % 100, myrand() * 10); // weiteres Ereignis
  104. }
  105. ende = clock();
  106. printf("Zeit sec. = %f\n", (float)(ende - start) / CLOCKS_PER_SEC);
  107.  
  108. return 0;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement