JavascriptProva

sabato 4 gennaio 2014

Esame del programma di attribuzione dei turni.

Dunque le variabili di cui devo tener conto sono:
  • totPref, che parte da zero e viene calcolato con un ciclo for-next
  • numTurni, che è il numero totale dei turni a disposizione, il quale parte con un preciso valore
  • attribuiti, che è il numero dei turni attribuiti, calcolato nel ciclo for-next che calcola i turni
  • resto, che viene calcolato alla fine di ogni ciclo Loop, ottenuto sottraendo attribuiti da numTurni.
Creazione della matrice principale:
        mario.nome = "Mario"
        giuseppe.nome = "Giuseppe"
        luigi.nome = "Luigi"
        mario.preferenza = 0
        giuseppe.preferenza = 20
        luigi.preferenza = 20

        matrice = New ArrayList
        matrice.Add(mario)
        matrice.Add(giuseppe)
        matrice.Add(luigi)


Creazione della matrice "di lavoro":
        Dim matrice2 As New ArrayList



Rimescolamento e ordinamento della matrice principale:
        'Rimescolamento casuale della matrice di partenza
        Dim r As New Random
        Dim x As Integer
        Dim temp As persona
        For n = 0 To matrice.Count - 1
            x = r.Next(matrice.Count - n) + n
            temp = matrice(n)
            matrice(n) = matrice(x)
            matrice(x) = temp
        Next


        'ordinamento della matrice
        matrice.Sort()


Caricamento degli elementi nella matrice di lavoro (inizia il ciclo):
        Do
            For n = startnum To matrice.Count - 1
                matrice2.Add(matrice(n))
            Next


Calcolo del totale delle preferenze totPref:
            'si calcola il totale delle preferenze
            totPref = 0
            For n = 0 To matrice2.Count - 1
                totPref += matrice2(n).preferenza
            Next


Esecuzione del calcolo con calcolo dei turni attribuiti e del resto, da numTurni e attribuiti:
          
            'quindi si fa il calcolo
            For n = 0 To matrice2.Count - 1
                matrice2(n).turni += Math.Floor(numTurni / totPref * matrice2(n).preferenza)
                attribuiti += Math.Floor(numTurni / totPref * matrice2(n).preferenza)
                resto = numTurni - attribuiti
            Next


Mostra la matrice di partenza con i turni attribuiti
            'mette a video la matrice di partenza
            mostra(matrice)
            Debug.Print("resto " & resto)
            Debug.Print("-----")


Azzera totPref e attribuiti, che vanno ricalcolati al ciclo successivo; cancella la matrice di lavoro; attribuisce a numTurni il valore di resto e avanza startNum per caricare nuovamente nella matrice di lavoro con esclusione dei valori di preferenza più bassi; ricomincia il ciclo:
            totPref = 0
            attribuiti = 0
            matrice2.Clear()
            numTurni = resto
            startnum += 1
        Loop While resto <> 0

Nessun commento:

Posta un commento