Ciao, sono anche io poco esperto, però proverò ad aiutarti. Sicuramente dirò cose che già sai, ma non conosco il tuo livello. Correggetemi se scrivo boiate, mi raccomando...
- Codice: Seleziona tutto
Dim areamax As Integer
Dim areamin As Integer
questo è un errore, infatti le due variabili dovranno essere di tipo Double (come il valore restituito dalle due funzioni areamassima e areaminima).
- Codice: Seleziona tutto
ntriangoli = Val(InputBox("quanti triangoli sono?"))
If ntriangoli < 2 Then
MsgBox ("i triangoli devono essere minimo DUE")
End
End If
questa parte prima visualizza il messaggio ed assegna il valore inserito in ingresso alla variabile "ntriangoli", poi controlla che questo valore sia maggiore o uguale a 2.
- Codice: Seleziona tutto
For i = 1 To ntriangoli
...
next i
indica che la variabile "i" sarà incrementata di 1 fino ad arrivare a "ntriangoli", cioè che tutto ciò che è compreso sarà ripetuto il numero di volte indicato da "ntriangoli".
- Codice: Seleziona tutto
base(i) = Val(InputBox("inserislci il valotre del " & i & "° base"))
If base(i) < 1 Then
MsgBox ("come puo essere il lato di un poligono pari o minore di 0")
End
End If
questa parte prima visualizza il messaggio ed assegna il valore inserito in ingresso alla i-esima posizione del vettore "base", poi controlla che questo valore sia maggiore o uguale a 1. Per i-esima posizione si intende la prima posizione quando i=1, la seconda posizione quando i=2, e così via.
- Codice: Seleziona tutto
altezza(i) = Val(InputBox("inserisci il valore della " & i & "altezza"))
If altezza(i) < 1 Then
MsgBox ("come puo essere il lato di un poligono pari o minore di 0")
End
End If
questa parte è identica alla precedente, con la differenza che il valore inserito viene assegnato alla i-esima posizione del vettore "altezza".
- Codice: Seleziona tutto
areetriangoli(i) = base(i) * altezza(i) / 2
MsgBox ("il risultato è" & CStr(areetriangoli(i)))
questa parte calcola l'area di ogni triangolo e la stampa su schermo. Quando "i" è uguale a 1 moltiplicherà la prima base inserita per la prima altezza inserita, dividerà il tutto per 2 e metterà il risultato sulla prima posizione del vettore "areetriangoli".
- Codice: Seleziona tutto
areamax = areamassima(areetriangoli(), ntriangoli)
al termine del ciclo di input dei dati e di calcolo delle aree, si passa a calcolare la max e la min.
Questa riga chiama la funzione "areamassima" passandole come parametri il vettore contenente le aree di tutti i triangoli inseriti e il numero dei triangoli inseriti. una volta che ha effettuato il calcolo, assegna il risultato (cioè l'area massima) alla variabile "areamax" (che per questo motivo, come dicevo all'inizio, dovrà essere di tipo Double).
- Codice: Seleziona tutto
areamin = areaminima(areetriangoli(), ntriangoli)
MsgBox ("L'area massima è" & CStr(areamax) & ". L'area minima è" & CStr(areamin))
la prima riga fa la stessa cosa della precedente, ma per il calcolo dell'area minima.
La seconda stampa entrambe le aree su schermo.
- Codice: Seleziona tutto
Private Function areamassima(aree() As Double, naree As Integer) As Double
Dim check As Double
check = aree(1)
For i = 1 To naree
If aree(i) > check Then
check = aree(i)
End If
Next i
questa funzione calcola l'area massima di un vettore di aree passato come parametro. Per i suoi calcoli il vettore "areetriangoli()" viene automaticamente assegnato al vettore "aree()", mentre il numero dei triangoli inseriti ( (e quindi delle aree calcolate) viene assegnato a "naree".
La variabile "check" contiene la maggiore delle aree trovata fino a quel momento. La prima area del vettore è la prima ad essere trovata, quindi è la maggiore fino a quel momento e infatti viene assegnata alla variabile "check".
Poi inizia il ciclo (con "i" che va da 1 a "naree") e viene confrontata ogni area con il contenuto della variabile check.
La prima volta (con i=1), "aree(i)" non è maggiore di "check" (visto che "check" contiene già la prima area e un numero non può essere maggiore di se stesso).
*La seconda volta (con i=2), se "aree(i)" è maggiore di "check", allora significa che la seconda area è maggiore della prima e che quindi deve essere parcheggiata in "check".
Il ciclo continua così fino alla fine con check che conterrà a questo punto il maggiore dei valori del vettore delle aree...
- Codice: Seleziona tutto
areamassima = check
End Function
... e quindi sarà assegnato alla funzione stessa "areamassima" che, come già detto, restituirà il valore alla variabile "areamax".
Non sto a spiegare l'altra funzione che è esattamente uguale a questa, ma per il calcolo del valore minore del vettore delle aree.
Spero di esserti stato utile e se non ti torna qualche cosa non esitare a chiedere.
*NOTA: Nelle due funzioni i cicli possono tranquillamente partire da i=2, visto che il primo confronto è inutile.
Ciao