Skip to content

Instantly share code, notes, and snippets.

@simondegheselle
Created June 20, 2018 15:47
Show Gist options
  • Select an option

  • Save simondegheselle/1d90efdc3a084591e76aa4c80555f198 to your computer and use it in GitHub Desktop.

Select an option

Save simondegheselle/1d90efdc3a084591e76aa4c80555f198 to your computer and use it in GitHub Desktop.
2.c
// 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