Difference between revisions of "User talk:Python"

From Sistemi Operativi
Jump to navigation Jump to search
(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">
  
−
#ESERCIZIO 3 ESAME 20 GIUGNO 2013
+
Esame 2014.01.22
−
#Scrivere un programma python o uno script bash per cercare all'interno
 
−
#della directory corrente tutti i file che abbiano lo stesso contenuto
 
  
 +
[[  http://www.cs.unibo.it/~renzo/so/compiti/2014.01.22.tot.pdf  ]]
  
−
import os,sys
+
monitor bridge {
−
import filecmp
+
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 */
  
−
def ordina(A,B):
+
procedure entry enter (char EoW)
−
    for i in range(0,len(B)) :
+
{
−
        for j in range(i,len(B)) :
+
if(EoW == "E") /* viene da est */
−
            if(B[i]>B[j]) :
+
{
−
                A[i],A[j]=A[j],A[i]
+
if(turn == 2 || est >=N || !empty(q))
−
                B[i],B[j]=B[j],B[i]
+
{
−
    return A,B
+
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++;
 +
}
 +
}
  
−
def main() :
+
procedure entry exit(char EoW)
−
    A=[]
+
{
−
    B=[]
+
char r;
−
    l=[]
+
if(EoW == "O")
−
    H={}
+
{
−
    P=[]
+
est--;
−
    print os.getcwd()
+
r=tail(q);
−
    pa=os.getcwd()
+
if(est == 0 || r == "E")
−
    for root, dirs, files in os.walk(pa):
+
{
−
        if(root != pa):
+
est--;
−
            H[root]=0
+
if(est == 0) /*nessuna auto in transito nel ponte */
−
    for root, dirs, files in os.walk(pa):
+
{
−
        if (root == pa) :
+
turn = 0; /*avanti un altro */
−
            for name in files :
+
}
−
                f = pa + '/' + name
+
if(!empty(q))
−
                A = os.listdir(pa)
+
{
 +
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*/
 +
}
 +
}
 +
}
  
−
    P = H.keys()
+
}
−
    for i in A :
 
−
        f = pa + '/' + i
 
−
        c = f in P
 
−
        if(c == 1) :
 
−
          A.remove(i)
 
−
    x=-1
 
−
    for root, dirs, files in os.walk(pa):
 
−
        if (root == pa) :
 
−
            for name in files :
 
−
                c = name in A
 
−
                if(c == 1) :
 
−
                    x=x+1
 
−
                    statinfo = os.stat(name)
 
−
                    B.insert(x,statinfo.st_size)
 
−
    print
 
−
    l=list()
 
−
    (A,B)=ordina(A,B)
 
−
    j=1
 
−
    c=0
 
−
    z=0       
 
−
    for i in range(0,(len(A)-1)) :
 
−
        if(B[i] == B[j]) :
 
−
            F1 = open(A[i],'r')
 
−
            F2 = open(A[j],'r')
 
−
            if(filecmp.cmp(A[i], A[j])) :
 
−
                c=1
 
−
                if(z==0):
 
−
                    l.append(A[i])
 
−
                    z=1
 
−
                l.append(A[j])
 
−
           
 
−
        if (B[i] != B[j] and c==1):
 
−
            print "Questi file sono uguali di dimensione : ",B[i], "Byte"
 
−
            print l
 
−
            l=[]
 
−
            c=0
 
−
            z=0
 
−
            print
 
−
        j=j+1     
 
−
    if(c==1) :
 
−
        print "Questi file sono uguali di dimensione : ",B[i]
 
−
        print l     
 
−
    print
 
−
 
 
−
if __name__ == "__main__" :
 
−
    main()
 

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*/ } } }

}