
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>  // srand

#include <mpi.h>

// Programm zur Bestimmung des Maximums
// jeweils der aktuelle Wert wird zum nächsten Client gesendet
//   MAX2

void main(int argc, char *argv[])
{
	int Pid, tag=0;
	int numprocs;
	int value;
	int g_max_value;


	MPI_Init(&argc,&argv);

	   // Anzahl der Prozesse
	MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
    
	   // meine eigene ID
	MPI_Comm_rank(MPI_COMM_WORLD,&Pid);

    	 // Init der Werte
	switch (Pid) {
	case 0: value = 11;
			break;
	case 1: value = 131;
			break;
	case 2: value = 12331;
			break;
	case 3: value = 1331;
			break;
	case 4: value = 1441;
			break;
	case 5: value = 441441;
			break;
	case 6: value = 13441;
			break;
	default: value = Pid+4;
	}
    printf("Pid: %d   Value: %d\n", Pid, value);

	  // Reduce für das Maximum
	MPI_Reduce(&value, &g_max_value, numprocs, MPI_INT, 
		  MPI_MAX, 0, MPI_COMM_WORLD);
	
	if (Pid  ==  0) {
	    printf("Root   Maximum: %d\n", g_max_value);
	}
	MPI_Finalize();
}


