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

}