-
-
Save simondegheselle/1d90efdc3a084591e76aa4c80555f198 to your computer and use it in GitHub Desktop.
2.c
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Genereer 1.000.000.000 willekeurige reële getallen die je bijhoudt in een tabel. Schijf nu | |
| // twee functies die zoeken naar respectievelijk het kleinste getal en het grootste getal en | |
| // deze getallen als return-waarde teruggeven. Schrijf nu een hoofdprogramma dat | |
| // gelijktijdig zoekt naar het grootste en het kleinste getal in een tabel van 1.000.000.000 | |
| // reële getallen. Schrijf beide getallen naar het scherm. | |
| #include <stdio.h> | |
| #include <time.h> | |
| #include <pthread.h> | |
| #include <stdlib.h> | |
| #define AANTAL 10 | |
| struct argumenten { | |
| int * tabel; | |
| int grootte; | |
| }; | |
| int * genereer(aantal) { | |
| int * tabel = malloc(aantal*sizeof(int)); | |
| int i; | |
| for (i = 0; i < aantal; i++) { | |
| tabel[i] = rand() % 50; | |
| } | |
| return tabel; | |
| } | |
| void * kleinste(void * arg) { | |
| struct argumenten * args = (struct argumenten *) arg; | |
| int * tabel = args->tabel; | |
| int grootte = args->grootte; | |
| int i; | |
| int * kleinste = malloc(sizeof(int)); | |
| *kleinste = tabel[0]; | |
| for (i = 1; i < grootte; i++) { | |
| if (tabel[i] < *kleinste) { | |
| *kleinste = tabel[i]; | |
| } | |
| } | |
| return (void *) kleinste; | |
| } | |
| void * grootste(void * arg) { | |
| struct argumenten * args = (struct argumenten *) arg; | |
| int * tabel = args->tabel; | |
| int grootte = args->grootte; | |
| int j; | |
| int * grootste_v = malloc(sizeof(int)); | |
| *grootste_v = tabel[0]; | |
| for (j = 1; j < grootte; j++) { | |
| if (tabel[j] > *grootste_v) { | |
| *grootste_v = tabel[j]; | |
| } | |
| } | |
| return (void *) grootste_v; | |
| } | |
| int main () { | |
| srand(time(NULL)); | |
| int * tabel = genereer(AANTAL); | |
| int i; | |
| pthread_t zoek_kleinste; | |
| pthread_t zoek_grootste; | |
| struct argumenten arg1; | |
| arg1.tabel = tabel; | |
| arg1.grootte = AANTAL; | |
| struct argumenten arg2; | |
| arg2.tabel = tabel; | |
| arg2.grootte = AANTAL; | |
| for(i = 0; i < AANTAL; i++) { | |
| printf("%d ", tabel[i]); | |
| } | |
| printf("\n"); | |
| pthread_create(&zoek_kleinste, NULL, &kleinste, &arg1); | |
| pthread_create(&zoek_grootste, NULL, &grootste, &arg2); | |
| int * kl; | |
| int * gr; | |
| pthread_join(zoek_kleinste, (void **) &kl); | |
| pthread_join(zoek_grootste, (void **) &gr); | |
| printf("kleinste %d\n", *kl); | |
| printf("grootste %d\n", *gr); | |
| return 0; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment