Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <time.h>
- #include <limits.h>
- struct event_t {
- int type; // Ereignis -Typ
- double time; // Aktuelle Zeit
- long serial; // laufende Ereignisnummer , wird beim Einfuegen generiert 5 };
- };
- typedef struct event_t event_t;// Ereignismenge fuer funktionen
- event_t *ereignismenge[100];
- void bubblesort(); // c99 blabla...
- long serial = 1; // da initialisierung ja mit null gefuellt wird
- // int start = 1; // da initialisierung ja mit null gefuellt wird
- double myrand() { // P3 +1 oder nicht?
- return (double)rand() / ((double)RAND_MAX);
- }
- void event_initialize() //
- {
- // ersten hundert eintraege sind schon in der liste bestehend?
- for (int i = 0; i < 100; i++)
- {
- ereignismenge[i] = NULL;
- }
- }
- void bubblesort(){
- for(int j = 1; j < 100; j++) {
- for (int i = 0; i < (j - 1); i++) {
- if((ereignismenge[i] != NULL)){
- if (ereignismenge[i]->time > ereignismenge[i + 1]->time) {
- struct event_t *temp; // temp damit das erste ereignis nicht ueberschrieben wird
- temp = ereignismenge[i];
- ereignismenge[i] = ereignismenge[i + 1];
- ereignismenge[i + 1] = temp;
- }
- }
- }
- }
- }
- long event_store(int type, double time) {
- struct event_t *event = (struct event_t *)calloc(1, sizeof(struct event_t));
- event->type = type;
- event->time = time;
- for(int i=0; i < 100; i++){
- // erzeuge eintraege
- if (ereignismenge[i] == NULL) {
- event->serial = serial;
- ereignismenge[i] = event;
- serial++;
- }
- }
- bubblesort();
- }
- long event_retrieve(int *type, double *time) {
- for (long i = 0; i < 100; i++) {
- // Attribute werden uebergeben
- if (ereignismenge[i]!=NULL) {
- // long seriennummer = ereignismenge[i]->serial;
- *type = ereignismenge[i]->type;
- *time = ereignismenge[i]->time;
- free(ereignismenge[i]);
- ereignismenge[i] = NULL;
- /*if (start == 1) {
- // printf("Type: %3d \tTime: %f\n", *type, *time);
- }*/
- return serial;
- }
- }
- }
- int main() {
- srand(time(NULL));
- long id;
- int type;
- double time;
- int n = 100;// Ereignisliste fuellen
- clock_t start, ende;
- event_initialize();
- start = clock();
- for (int i = 0; i < n; i++) {
- event_store(rand() % 100, myrand() * 10); // Zufallstyp (1..100)
- for (int j = 0; j<100; j++) {
- printf("innere schleife %d %g %ld\n", ereignismenge[j]->type, ereignismenge[j]->time, ereignismenge[j]->serial);
- }
- }
- // PraktikumsPDF Zeile 14 n=100000 // n neu definieren ???
- n = n + 99800; // viele Ereignisse generieren
- for (int i = 0; i < n; i++) {
- id = event_retrieve(&type, &time); // Ereignis abrufen
- printf("ID: %10ld TYPE: %3d TIME: %g\n", id, type, time); // Kontrollausgabe
- event_store(rand() % 100, myrand() * 10); // weiteres Ereignis
- }
- ende = clock();
- printf("Zeit sec. = %f\n", (float)(ende - start) / CLOCKS_PER_SEC);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement