ott 16

Programmi Visual Basic: calcolo della moda con gli array

Categoria: Icefox-Script

Visite 127

Guadagna denaro contante con il tuo sito web!

Traccia: Dati in input un numero qualunque di dati associati ad un numero qualunque di frequenze, calcolarne la moda. Per chi non lo sa, la moda è il dato corrispondente alla frequenza più grande ;) … 

Interfaccia grafica: per questo programma è stata scelta un interfaccia grafica formata da un solo pulsante (calcola la moda) che da il via a tutto il processo. Dentro a questo unico bottone è stato previsto il carica_vettore, il mostra_vettore e il calcola_moda. Sono state inserite anche quattro textbox, le prime due per mostrare i due array che abbiamo inserito, una per mostrare il valore della moda, ed un altra ancora per inserire una descrizione  del procedimento.

Codice: 

Iniziamo con la dichiarazione delle variabili e constanti; è stata dichiarata una sola costante, max, a cui si è assegnato come valore 32000. Poi abbiamo dichiarato i due principali vettore iniziali, i cui valori sono scleti dall’utente. Questi due vettori vanno da uno a ad un massimo di 32000. Poi abbiamo dichiarato semplicemente i, le variabili moda e appoggio e posizione (quest’ultima integer).

Const max = 32000
Dim dati(1 To max) As Double
Dim freq(1 To max) As Double
Dim i As Integer
Dim moda, appoggio As Double
Dim posizione As Integer

Di seguito è presente il main, ovvero la parte principale del programma, che in questo caso si limita a fare le chiamate verso gli altri sottoprogrammi.

Private Sub cmdcalcola_Click()
carica_vettori
calcola_moda
End Sub

Nella procedura di sotto carichiamo e mostriamo i nostri due vettori di partenza (uno dei dati e uno delle frequenze). Prima chiediamo all’utente la dimensione dei due vettori (che sarà una sola per entrambi). Poi carichiamo i due vettori inserendoli nello stesso ciclo for. In tal modo il programma chiederà il primo dato, poi la prima frequenze, poi il secondo dato, poi la seconda frequenza… e così via… Infine abbiamo mostrato i vettori nelle due textbox.

Public Sub carica_vettore()
Do
dimensione = Val(InputBox(”inserisci numero di dati e frequenze”))
Loop Until dimensione > 0
For i = 1 To dimensione
   dati(i) = InputBox(”inserisci valore” & (CStr(i)) & ” ° dato “)
   freq(i) = InputBox(”inserisci frequenza corrispondente”)
Next i
For i = 1 To dimensione
   txtdati.Text = txtdati.Text & (CStr(dati(i))) & “  ; ”
   txtfreq.Text = txtfreq.Text & (CStr(freq(i))) & “  ; ”
Next i
End Sub

Questo è il sottprogramma che si occupa di calcolare la moda. Prima abbiamo inizializzato le due variabili appoggio e posizione. Poi abbiamo aperto un ciclo for e con due cicli If nidificati abbiamo imposto che, o si cerca una frequenza maggiore delle altre e poi si va a cercare il dato che corrisponde a quella frequenza (quindi moda) o se le frequenze sono tutte uguali non calcoli la moda ma si inserisca nella nostra casella delle informazioni che la nostra distribuzione è zeromodale.

Public Sub calcola_moda()
appoggio = 0
posizione = 0
For i = 1 To dimensione
   If freq(i) > appoggio Then
         appoggio = freq(i)
         posizione = i
         txtdescrizione.Text = “è presente una sola moda”
         moda = dati(posizione)
         txtmoda.Text = CStr(moda)
       Else
          If freq(i) = appoggio Then
             For J = 1 To dimensione
             appoggiovet(J) = J
             Next J
             txtdescrizione = “sono presenti più mode”
             For J = 1 To dimensione
               txtmoda.Text = txtmoda.Text & (CStr(appoggiovet(J))) & “;”
             Next J
          End If
   End If
Next i
End Sub

Lascia un commento