Difference between revisions of "User talk:Python"
(Created page with " #ESERCIZIO 3 ESAME 20 GIUGNO 2013 #Scrivere un programma python o uno script bash per cercare all'interno #della directory corrente tutti i file che abbiano lo stesso contenu...") |
|||
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | <syntaxhighlight lang="C"> | ||
− | + | Esame 2014.01.22 | |
− | |||
− | |||
+ | [[ http://www.cs.unibo.it/~renzo/so/compiti/2014.01.22.tot.pdf ]] | ||
− | + | monitor bridge { | |
− | + | condition oktomove; /*si muove solo se il ponte è libero o non ci sono auto che vengono nel senso opposto */ | |
+ | int turn=0; /*indica il senso delle auto */ | ||
+ | int est=0,ovest=0; /*contatori delle auto da est e da ovest */ | ||
+ | Queue q; /*coda delle senso delle macchine in attesa */ | ||
− | + | procedure entry enter (char EoW) | |
− | + | { | |
− | + | if(EoW == "E") /* viene da est */ | |
− | + | { | |
− | + | if(turn == 2 || est >=N || !empty(q)) | |
− | + | { | |
− | + | q=equeue("E"); /*inserisco nella coda dei sensi*/ | |
− | + | oktomove.wait(); /*aspetta*/ | |
− | + | ||
+ | } | ||
+ | turn = 1; /*impongo il senso delle auto in circolo nel ponte */ | ||
+ | est++; | ||
+ | } | ||
+ | else /* viene da ovest */ | ||
+ | { | ||
+ | if(turn ==1 || ovest >=N || !empty(q)) | ||
+ | { | ||
+ | q=equeue("O"); /*inserisco nella coda dei sensi*/ | ||
+ | oktomove.wait(); /*aspetta*/ | ||
+ | |||
+ | } | ||
+ | turn = 2; /*impongo il senso delle auto in circolo nel ponte */ | ||
+ | ovest++; | ||
+ | } | ||
+ | } | ||
− | + | procedure entry exit(char EoW) | |
− | + | { | |
− | + | char r; | |
− | + | if(EoW == "O") | |
− | + | { | |
− | + | est--; | |
− | + | r=tail(q); | |
− | + | if(est == 0 || r == "E") | |
− | + | { | |
− | + | est--; | |
− | + | if(est == 0) /*nessuna auto in transito nel ponte */ | |
− | + | { | |
− | + | turn = 0; /*avanti un altro */ | |
− | + | } | |
− | + | if(!empty(q)) | |
− | + | { | |
+ | q.dequeue(); | ||
+ | oktomove.signal(); /*segnale*/ | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | ovest--; | ||
+ | if(ovest == 0) /*nessuna auto in transito nel ponte */ | ||
+ | { | ||
+ | turn = 0; /*avanti un altro */ | ||
+ | } | ||
+ | if(!empty(q)) | ||
+ | { | ||
+ | q.dequeue(); | ||
+ | oktomove.signal(); /*segnale*/ | ||
+ | } | ||
+ | } | ||
+ | } | ||
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Latest revision as of 23:54, 14 March 2014
<syntaxhighlight lang="C">
Esame 2014.01.22
[[ http://www.cs.unibo.it/~renzo/so/compiti/2014.01.22.tot.pdf ]]
monitor bridge { condition oktomove; /*si muove solo se il ponte è libero o non ci sono auto che vengono nel senso opposto */ int turn=0; /*indica il senso delle auto */ int est=0,ovest=0; /*contatori delle auto da est e da ovest */ Queue q; /*coda delle senso delle macchine in attesa */
procedure entry enter (char EoW) { if(EoW == "E") /* viene da est */ { if(turn == 2 || est >=N || !empty(q)) { q=equeue("E"); /*inserisco nella coda dei sensi*/ oktomove.wait(); /*aspetta*/
} turn = 1; /*impongo il senso delle auto in circolo nel ponte */ est++; } else /* viene da ovest */ { if(turn ==1 || ovest >=N || !empty(q)) { q=equeue("O"); /*inserisco nella coda dei sensi*/ oktomove.wait(); /*aspetta*/
} turn = 2; /*impongo il senso delle auto in circolo nel ponte */ ovest++; } }
procedure entry exit(char EoW) { char r; if(EoW == "O") { est--; r=tail(q); if(est == 0 || r == "E") { est--; if(est == 0) /*nessuna auto in transito nel ponte */ { turn = 0; /*avanti un altro */ } if(!empty(q)) { q.dequeue(); oktomove.signal(); /*segnale*/ } else { ovest--; if(ovest == 0) /*nessuna auto in transito nel ponte */ { turn = 0; /*avanti un altro */ } if(!empty(q)) { q.dequeue(); oktomove.signal(); /*segnale*/ } } }
}