Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Cosa c'è che non va? if annnidati.
Forum - Visual Basic 6 - Cosa c'è che non va? if annnidati.

Avatar
genuzzu (Normal User)
Pro


Messaggi: 107
Iscritto: 24/06/2009

Segnala al moderatore
Postato alle 14:53
Sabato, 27/06/2009
Questo codice dovrebbe restituirmi l' ordine di tre numeri per grandezza... ma li ordina in modo sbagliato...
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Command2_Click()
  2. a = InputBox("inserisci il primo numero")
  3. b = InputBox("inserisci il secondo numero")
  4. c = InputBox("inserisci il terzo numero")
  5. If a > b Then
  6.     If b > c Then
  7.         MsgBox ("l' ordine è " & a & " " & b & " " & c & "!")
  8.     Else
  9.         If a > c Then
  10.             MsgBox ("l' ordine è " & a & " " & c & " " & b & "!")
  11.         Else
  12.             MsgBox ("l' ordine è " & c & " " & b & " " & a & "!")
  13.         End If
  14.         End If
  15. Else
  16.     If a > c Then
  17.         MsgBox ("l' ordine è " & b & " " & a & " " & c & "!")
  18.     Else
  19.         If c > b Then
  20.             MsgBox ("l' ordine è " & c & " " & a & " " & b & "!")
  21.         Else
  22.             MsgBox ("l' ordine è " & b & " " & a & " " & c & "!")
  23.         End If
  24.     End If
  25. End If
  26. End Sub


:(
edit: ma visualizza quello nelle parentesi come commento? lol

Ultima modifica effettuata da genuzzu il 27/06/2009 alle 14:55
PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 15:55
Sabato, 27/06/2009
Guarda a mio avviso l'approccio con il problema é sbagliato. Dovresti usare le matrici.
In particolare c'é un algoritmo chiamato BubbleSort che provvede con facilità all'ordinamento crescente o decrescente di una serie numerica. Fai una ricerca ...
8-)

PM Quote
Avatar
Enemy (Member)
Rookie


Messaggi: 59
Iscritto: 26/01/2008

Segnala al moderatore
Postato alle 16:03
Sabato, 27/06/2009
Ho letto gia' un posto che non ricordo il link, puoi utilizzare un ciclo, per il codice te l'ho riadattato. Poi la modifica e' intuitiva.
L'ordine di stampa e' in modo decrescente.


Codice sorgente - presumibilmente VB.NET

  1. a = InputBox("inserisci il primo numero")
  2. b = InputBox("inserisci il secondo numero")
  3. c = InputBox("inserisci il terzo numero")
  4.  
  5. Dim i, k, j As Integer
  6. Dim stamp(3) As Integer
  7.  
  8. stamp(1) = a
  9. stamp(2) = b
  10. stamp(3) = c
  11.  
  12.  For i = 1 To 3
  13.             k = stamp(i)
  14.             For j = 0 To 3 - i
  15.                 If stamp(i) < stamp(i + j) Then
  16.                     stamp(i) = stamp(i + j)
  17.                     stamp(i + j) = k
  18.                     k = stamp(i)
  19.                 End If
  20.             Next j
  21.         Next i
  22.         For i = 1 To 3
  23.             MsgBox ("L' ordine e' " & stamp(i))
  24.  
  25.         Next i


PM Quote
Avatar
genuzzu (Normal User)
Pro


Messaggi: 107
Iscritto: 24/06/2009

Segnala al moderatore
Postato alle 16:31
Sabato, 27/06/2009
Il mio problema è che ho un compito che mi dice che devo arrivarci usando degli if annidati. In quel modo non è possibile? Mi sa che ha sbagliato il professore...

PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 7:06
Lunedì, 29/06/2009
Ciao gennuzzo,
Se si tratta di permutazioni semplici senza ripetizione,
ad esempio degli elementi dell'insieme {a,b,c} sono 3! = 6: abc, acb, bac, bca, cab, cba.
il problema potrebbe trovare la seguente soluzione:


Codice sorgente - presumibilmente VB.NET

  1. Private Sub Command2_Click()
  2.     Dim a As Integer, b As Integer, c As Integer
  3.    
  4.     a = InputBox("inserisci il primo numero")
  5.     b = InputBox("inserisci il secondo numero")
  6.     c = InputBox("inserisci il terzo numero")
  7.    
  8.     'a,b,c:
  9.     If a > b And c < a And c < b Then
  10.         MsgBox ("l' ordine è" & Space(1) & a & "a" & "," & Space(1) & b & "b" & Space(1) & "," & Space(1) & c & "c" & Space(1) & "!")
  11.     'a,c,b:
  12.     ElseIf a > c And b < a And b < c Then
  13.         MsgBox ("l' ordine è" & Space(1) & a & "a" & "," & Space(1) & c & "c" & Space(1) & "," & Space(1) & b & "b" & Space(1) & "!")
  14.     'b,a,c,:
  15.     ElseIf b > a And c < b And c < a Then
  16.         MsgBox ("l' ordine è" & Space(1) & b & "b" & "," & Space(1) & a & "a" & Space(1) & "," & Space(1) & c & "c" & Space(1) & "!")
  17.     'b,c,a:
  18.     ElseIf b > c And a < b And a < c Then
  19.         MsgBox ("l' ordine è" & Space(1) & b & "b" & "," & Space(1) & c & "c" & Space(1) & "," & Space(1) & a & "a" & Space(1) & "!")
  20.     'c,a,b:
  21.     ElseIf c > a And b < c And b < a Then
  22.         MsgBox ("l' ordine è" & Space(1) & c & "c" & "," & Space(1) & a & "a" & Space(1) & "," & Space(1) & b & "b" & Space(1) & "!")
  23.     'c,b,a:
  24.     ElseIf c > b And a < c And a < b Then
  25.         MsgBox ("l' ordine è" & Space(1) & c & "c" & "," & Space(1) & b & "b" & Space(1) & "," & Space(1) & a & "a" & Space(1) & "!")
  26.     End If
  27. End Sub



Fai delle prove e vedi se il problema è quello sopra detto, non vorrei aver sbagliato tutto; mi raccomando !!  :-|

PM Quote
Avatar
genuzzu (Normal User)
Pro


Messaggi: 107
Iscritto: 24/06/2009

Segnala al moderatore
Postato alle 18:40
Lunedì, 29/06/2009
Avevo sbagliato un' altra cosa... elseif è un alternativa, ma in questo caso non serviva. Grazie lo stesso!

PM Quote