ProvaTeorica 2012.07.16

From Sistemi Operativi
Revision as of 11:40, 27 March 2014 by MidoloM (talk | contribs) (Created page with "[http://www.cs.unibo.it/~renzo/so/compiti/2012-07-16.tot.pdf Link Testo] <h2>Esercizio C.2</h2> Mia Soluzione: <syntaxhighlight lang="C"> #define RED 0 #define BLUE 1 //resti...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Link Testo

Esercizio C.2

Mia Soluzione:

#define RED 0
#define BLUE 1
//restituisce 1 se c'e piu del 75% blue o 75% di red
//restituisce 0 se non c'e una maggiornza
int media(color){
	int mediared;
	int localinto =  into;
	if (color != NULL){
		localinto[color]++;
	}
	mediared = ((100*localinto[0])/(localinto[0]+localinto[1]));
	if(mediared >=75 || mediared < 25){
		return 1;//75% di rossi o di blue
	}else{
		return 0;// non c'e maggioranza		
	}
}

monitor limcol{

	conditon oktoenter[2];
	int into[2];

	enter(color){
		if(media(color) != 1){// attendo perche' non c'e una maggioranza
			oktoenter[color].wait();
		}
		into[color]++;
	}

	exit(color){
		into[color]--;
		if(media(1-color) == 1){
			oktoenter[1-color].signal();
		}else if(media(color) == 1){
			oktoenter[color].signal();
		}
	}
}

- Midolo