#include #include #include #include #include struct numbers { int n1; int n2; int max; }; typedef struct numbers numbers; void * max(void * n){ numbers *comp = (numbers *) n; if (comp->n1 > comp->n2) comp->max = comp->n1; else comp->max = comp->n2; } int main(int argc, char **argv){ if (argc != 9){ printf("Usage : %s \n", argv[0]); return EXIT_FAILURE; } pthread_t threads[4]; numbers duels[4]; for(int i = 0; i < 4; i++){ duels[i].n1 = (int) strtod(argv[2*i+1], NULL); duels[i].n2 = (int) strtod(argv[2*(i+1)], NULL); duels[i].max = 0; pthread_create(&threads[i], NULL, max, (void*) (duels + i)); } for (int i = 0; i < 4; i++){ pthread_join(threads[i], NULL); } numbers demi_f[2]; for (int i = 0;i < 2; i++){ demi_f[i].n1 = duels[i*2].max; demi_f[i].n2 = duels[i*2+1].max; demi_f[i].max = 0; pthread_create(&threads[i], NULL, max, (void*) (demi_f + i)); } for (int i = 0; i < 2;i++){ pthread_join(threads[i], NULL); } numbers finale = {}; finale.n1 = demi_f[0].max; finale.n2 = demi_f[1].max; pthread_create(&threads[0], NULL, max, (void*) (&finale)); pthread_join(threads[0], NULL); printf("Le plus grand des huits nombres est : %d\n", finale.max); return EXIT_SUCCESS; }