Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Aiuto su piccola applicazione in visual basic

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

Aiuto su piccola applicazione in visual basic

Postdi giulioumif » 27/05/08 23:43

Non sono molto pratico di visual basic e chiedo se qualcuno sa illustrarmi questa piccola applicazione che chiede all'utente di inserire valori di base e altezza di un triangolo, ne calcola la base e poi calcola l'area massima e quella minima trovata. Soprattutto su questo ultimo punto non mi trovo(check??). Devo arrivare a riuscire a riscrivere questa applicazione da solo!!!
Codice: Seleziona tutto
Private Sub Command1_Click()
Dim base(100) As Integer
Dim altezza(100) As Integer
Dim areetriangoli(100) As Double
Dim i As Integer
Dim ntriangoli As Integer
Dim areamax As Integer
Dim areamin As Integer

ntriangoli = Val(InputBox("quanti triangoli sono?"))
If ntriangoli < 2 Then
        MsgBox ("i triangoli devono essere minimo DUE")
        End
End If

For i = 1 To ntriangoli
    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
   
    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
       
   areetriangoli(i) = base(i) * altezza(i) / 2
   MsgBox ("il risultato è" & CStr(areetriangoli(i)))
     
Next i

 areamax = areamassima(areetriangoli(), ntriangoli)
 areamin = areaminima(areetriangoli(), ntriangoli)
MsgBox ("L'area massima è" & CStr(areamax) & ". L'area minima è" & CStr(areamin))
 
End Sub

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

areamassima = check
End Function

Private Function areaminima(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

areaminima = check

End Function
giulioumif
Utente Junior
 
Post: 21
Iscritto il: 04/01/05 18:25

Sponsor
 

Re: Aiuto su piccola applicazione in visual basic

Postdi nerolubo85 » 29/05/08 15:34

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
nerolubo85
Utente Senior
 
Post: 124
Iscritto il: 04/12/05 11:33


Torna a Programmazione


Topic correlati a "Aiuto su piccola applicazione in visual basic":


Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

cron