daily pastebin goal
13%
SHARE
TWEET

p5_array

a guest Jan 24th, 2019 65 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. // int start = 1;   // da initialisierung ja mit null gefuellt wird
  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
  55.         if (ereignismenge[i] == NULL) {
  56.  
  57.             event->serial = serial;
  58.             ereignismenge[i] = event;
  59.             serial++;
  60.            
  61.         }
  62.     }
  63.     bubblesort();
  64.  
  65. }
  66.  
  67. long event_retrieve(int *type, double *time) {
  68.     for (long i = 0; i < 100; i++) {
  69.         // Attribute werden uebergeben
  70.         if (ereignismenge[i]!=NULL) {
  71.            // long seriennummer = ereignismenge[i]->serial;
  72.             *type = ereignismenge[i]->type;
  73.             *time = ereignismenge[i]->time;
  74.             free(ereignismenge[i]);
  75.             ereignismenge[i] = NULL;
  76.             /*if (start == 1) {
  77.             //    printf("Type: %3d \tTime: %f\n", *type, *time);
  78.             }*/
  79.             return serial;
  80.         }
  81.     }
  82. }
  83.  
  84. int main() {
  85.  
  86.     srand(time(NULL));
  87.     long id;
  88.     int type;
  89.     double time;
  90.     int n = 100;// Ereignisliste fuellen
  91.     clock_t start, ende;
  92.     event_initialize();
  93.  
  94.     start = clock();
  95.     for (int i = 0; i < n; i++) {
  96.         event_store(rand() % 100, myrand() * 10); // Zufallstyp (1..100)
  97.         for (int j = 0; j<100; j++) {
  98.             printf("innere schleife %d %g %ld\n", ereignismenge[j]->type, ereignismenge[j]->time, ereignismenge[j]->serial);
  99.         }
  100.     }
  101.     // PraktikumsPDF Zeile 14 n=100000 // n neu definieren ???
  102.  
  103.     n = n + 99800; // viele Ereignisse generieren
  104.  
  105.     for (int i = 0; i < n; i++) {
  106.         id = event_retrieve(&type, &time); // Ereignis abrufen
  107.  
  108.         printf("ID: %10ld TYPE: %3d TIME: %g\n", id, type, time); // Kontrollausgabe
  109.  
  110.         event_store(rand() % 100, myrand() * 10); // weiteres Ereignis
  111.     }
  112.     ende = clock();
  113.     printf("Zeit sec. = %f\n", (float)(ende - start) / CLOCKS_PER_SEC);
  114.  
  115.     return 0;
  116. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top