MAIOR DE CINCO
Tenho cinco numeros e quero saber qual o maior e menor dos cinco numeros armazenados em variaveis.
N1, N2, N3, N4, N5
sabendo que há possibilidade de um numero ser igual ao outro. Por exemplo o n1 ser igual ao n2 e assim sucessivamente.
Alguem poderia me ajudar?
N1, N2, N3, N4, N5
sabendo que há possibilidade de um numero ser igual ao outro. Por exemplo o n1 ser igual ao n2 e assim sucessivamente.
Alguem poderia me ajudar?
Tem vários jeitos de resolver, fiz um exemplo proximo do que voce citou (com variaveis):
Alguns debugs:
N1 = 12
N2 = 48
N3 = 15
N4 = 7
N5 = 97
NMAIOR = 97
NMENOR = 7
N1 = 6
N2 = 44
N3 = 1
N4 = 87
N5 = 53
NMAIOR = 87
NMENOR = 1
Sub teste()
Dim N1, N2, N3, N4, N5
Dim NMAIOR
Dim NMENOR
Randomize 1000
N1 = Int(Rnd(1000) * 100)
N2 = Int(Rnd(1000) * 100)
N3 = Int(Rnd(1000) * 100)
N4 = Int(Rnd(1000) * 100)
N5 = Int(Rnd(1000) * 100)
NMENOR = 1000
NMAIOR = 0
If N1 < N2 And N1 < N3 And N1 < N4 And N1 < N5 Then NMENOR = N1
If N2 < N1 And N2 < N3 And N2 < N4 And N2 < N5 Then NMENOR = N2
If N3 < N1 And N3 < N2 And N3 < N4 And N3 < N5 Then NMENOR = N3
If N4 < N1 And N4 < N2 And N4 < N3 And N4 < N5 Then NMENOR = N4
If N5 < N1 And N5 < N2 And N5 < N3 And N5 < N4 Then NMENOR = N5
If N1 > N2 And N1 > N3 And N1 > N4 And N1 > N5 Then NMAIOR = N1
If N2 > N1 And N2 > N3 And N2 > N4 And N2 > N5 Then NMAIOR = N2
If N3 > N1 And N3 > N2 And N3 > N4 And N3 > N5 Then NMAIOR = N3
If N4 > N1 And N4 > N2 And N4 > N3 And N4 > N5 Then NMAIOR = N4
If N5 > N1 And N5 > N2 And N5 > N3 And N5 > N4 Then NMAIOR = N5
Debug.Print [Ô]N1 = [Ô] & N1
Debug.Print [Ô]N2 = [Ô] & N2
Debug.Print [Ô]N3 = [Ô] & N3
Debug.Print [Ô]N4 = [Ô] & N4
Debug.Print [Ô]N5 = [Ô] & N5
Debug.Print [Ô]NMAIOR = [Ô] & NMAIOR
Debug.Print [Ô]NMENOR = [Ô] & NMENOR
End Sub
Alguns debugs:
N1 = 12
N2 = 48
N3 = 15
N4 = 7
N5 = 97
NMAIOR = 97
NMENOR = 7
N1 = 6
N2 = 44
N3 = 1
N4 = 87
N5 = 53
NMAIOR = 87
NMENOR = 1
O problema é quando alguns dos numeros se repete, por exemplo:
N1 = 2, N2 = 2, N3 = 2, N4 = 5, N5 = 6
Nesse caso o maior é 6 mas e o menor? seriam muitos ifs na historia..entende?
N1 = 2, N2 = 2, N3 = 2, N4 = 5, N5 = 6
Nesse caso o maior é 6 mas e o menor? seriam muitos ifs na historia..entende?
Citação::
Tem vários jeitos de resolver, fiz um exemplo proximo do que voce citou (com variaveis):
Sub teste()
Dim N1, N2, N3, N4, N5
Dim NMAIOR
Dim NMENOR
Randomize 1000
N1 = Int(Rnd(1000) * 100)
N2 = Int(Rnd(1000) * 100)
N3 = Int(Rnd(1000) * 100)
N4 = Int(Rnd(1000) * 100)
N5 = Int(Rnd(1000) * 100)
NMENOR = 1000
NMAIOR = 0
If N1 < N2 And N1 < N3 And N1 < N4 And N1 < N5 Then NMENOR = N1
If N2 < N1 And N2 < N3 And N2 < N4 And N2 < N5 Then NMENOR = N2
If N3 < N1 And N3 < N2 And N3 < N4 And N3 < N5 Then NMENOR = N3
If N4 < N1 And N4 < N2 And N4 < N3 And N4 < N5 Then NMENOR = N4
If N5 < N1 And N5 < N2 And N5 < N3 And N5 < N4 Then NMENOR = N5
If N1 > N2 And N1 > N3 And N1 > N4 And N1 > N5 Then NMAIOR = N1
If N2 > N1 And N2 > N3 And N2 > N4 And N2 > N5 Then NMAIOR = N2
If N3 > N1 And N3 > N2 And N3 > N4 And N3 > N5 Then NMAIOR = N3
If N4 > N1 And N4 > N2 And N4 > N3 And N4 > N5 Then NMAIOR = N4
If N5 > N1 And N5 > N2 And N5 > N3 And N5 > N4 Then NMAIOR = N5
Debug.Print [Ô]N1 = [Ô] & N1
Debug.Print [Ô]N2 = [Ô] & N2
Debug.Print [Ô]N3 = [Ô] & N3
Debug.Print [Ô]N4 = [Ô] & N4
Debug.Print [Ô]N5 = [Ô] & N5
Debug.Print [Ô]NMAIOR = [Ô] & NMAIOR
Debug.Print [Ô]NMENOR = [Ô] & NMENOR
End Sub
Alguns debugs:
N1 = 12
N2 = 48
N3 = 15
N4 = 7
N5 = 97
NMAIOR = 97
NMENOR = 7
N1 = 6
N2 = 44
N3 = 1
N4 = 87
N5 = 53
NMAIOR = 87
NMENOR = 1
Olá,
Use Array[ô]s em vez de variaveis.
Se vc só quiser saber os valores Maior e Menor sem querer saber qual a variável ou elemento do Array que armazena esse valor , faça assim:
Espero ter ajudado!!
Use Array[ô]s em vez de variaveis.
Se vc só quiser saber os valores Maior e Menor sem querer saber qual a variável ou elemento do Array que armazena esse valor , faça assim:
Option Explicit
Private Sub Command1_Click()
Dim arrNumeros(1 To 5) As Long
Dim i As Long, lMaior As Long, lMenor As Long
Randomize
Debug.Print [Ô]****** Novo Teste ******[Ô]
[ô]Atribuir valores ao Array
For i = LBound(arrNumeros) To UBound(arrNumeros)
arrNumeros(i) = Int(Rnd * 10) [ô]Numeros de 0 a 9
Debug.Print arrNumeros(i)
Next [ô]i
[ô]Achar o Maior valor
For i = LBound(arrNumeros) To UBound(arrNumeros)
If arrNumeros(i) > lMaior Then lMaior = arrNumeros(i)
Next [ô]i
[ô]Atribuir o Maior valor ao Menor
lMenor = lMaior
[ô]Achar o Menor valor
For i = LBound(arrNumeros) To UBound(arrNumeros)
If arrNumeros(i) < lMenor Then lMenor = arrNumeros(i)
Next [ô]i
Debug.Print [Ô]Maior: [Ô] & lMaior
Debug.Print [Ô]Menor: [Ô] & lMenor
End Sub
Espero ter ajudado!!
Tem que ver se você precisa saber apenas qual o menor valor ou em qual (ou quais) variável está o menor valor. Como o GANDA falou com array é mais fácil para encontrar o menor/maior valor, porém o código dele só funciona para achar o maior número se ele for maior ou igual a zero, se o maior número for negativo ele não vai funcionar.
Agora se precisam ser variáveis diferentes e são sempre 5 é bem simples também, considerando as variaveis N1 a N5
Agora se precisam ser variáveis diferentes e são sempre 5 é bem simples também, considerando as variaveis N1 a N5
Dim NMaior as Integer
Dim NMenor as Integer
[ô]Inicia considerando que o N1 seja o menor/maior
NMaior = N1
NMenor = N2
[ô]Agora comaça a procurar o menor/maior
if NMaior < N2 then NMaior = N2
if NMaior < N3 then NMaior = N3
if NMaior < N4 then NMaior = N4
i NMaior < N5 then NMaior = N5
if NMenor > N2 then NMenor = N2
if NMenor > N3 then NMenor = N3
if NMenor > N4 then NMenor = N4
if NMenor > N5 then NMenor = N5
Para pegar o maior numero, faça assim:
Public Function GetMaiorNumero(numeros() As Integer) As Integer
Dim x, y, resultado As Integer
resultado = numeros(0)
For x = 0 To numeros.Length - 1
For y = x + 1 To numeros.Length - 1
If numeros(y) > resultado Then
resultado = numeros(y)
End If
Next
Next
Return resultado
End Function
Para usar:
[ô]Preenche o array
Dim v(5) As Integer
v(0) = 7
v(1) = 11
v(2) = 8
v(3) = 13
v(4) = 6
v(5) = -15
[ô]Mostra qual o maior numero
MsgBox(GetMaiorNumero(v))
Public Function GetMaiorNumero(numeros() As Integer) As Integer
Dim x, y, resultado As Integer
resultado = numeros(0)
For x = 0 To numeros.Length - 1
For y = x + 1 To numeros.Length - 1
If numeros(y) > resultado Then
resultado = numeros(y)
End If
Next
Next
Return resultado
End Function
Para usar:
[ô]Preenche o array
Dim v(5) As Integer
v(0) = 7
v(1) = 11
v(2) = 8
v(3) = 13
v(4) = 6
v(5) = -15
[ô]Mostra qual o maior numero
MsgBox(GetMaiorNumero(v))
E para pegar o MenorNumero é assim:
Public Function GetMenorNumero(numeros() As Integer) As Integer
Dim x, y, resultado As Integer
resultado = numeros(0)
For x = 0 To numeros.Length - 1
For y = x + 1 To numeros.Length - 1
If numeros(y) < resultado Then
resultado = numeros(y)
End If
Next
Next
Return resultado
End Function
Public Function GetMenorNumero(numeros() As Integer) As Integer
Dim x, y, resultado As Integer
resultado = numeros(0)
For x = 0 To numeros.Length - 1
For y = x + 1 To numeros.Length - 1
If numeros(y) < resultado Then
resultado = numeros(y)
End If
Next
Next
Return resultado
End Function
Esta dando erro na execução. O qualificador não existe pra a variavel.
Citação::
E para pegar o MenorNumero é assim:
Public Function GetMenorNumero(numeros() As Integer) As Integer
Dim x, y, resultado As Integer
resultado = numeros(0)
For x = 0 To numeros.Length - 1
For y = x + 1 To numeros.Length - 1
If numeros(y) < resultado Then
resultado = numeros(y)
End If
Next
Next
Return resultado
End Function
Esse codigo acima é para VB.NET
Amelorp, me diga qual é a linha que está dando erro para eu poder corrigir pra você.
For x = 0 To numeros.Length - 1 (nessa linha)
ele diz que a propriedade Length nao existe pra variavel numeros
ele diz que a propriedade Length nao existe pra variavel numeros
Citação::
Amelorp, me diga qual é a linha que está dando erro para eu poder corrigir pra você.
Tópico encerrado , respostas não são mais permitidas