Usuário com melhor resposta
ALGORITMOS C#

Pergunta
-
int min= 0;
foreach (object item in LISTA.Items)
{
max = Math.Min(min, Convert.ToInt32(item));
}
MessageBox.Show("O menor número é : " + min.ToString());MINHA DÚVIDA É : Estou usando esse mesmo código para retornar o maior numero e funcionou perfeitamente ,porém agora para mostrar o menor ele simplesmente me retorna o zero ,gostaria que mostrasse o erro para corrigir o algoritmo .Obrigada.
Respostas
-
Se voce compara sua lista (caso ela tenha somente valores positivos) com zero entao o menor sempre vai ser zero.
Digamos que sua lista seja 50, 30,1,4, entao veja as etapas
1- minimo entre 0 e 50? é 0
2- minimo entre 0 e 30? é 0
3- minimo entre 0 e 1? é 0
4- minimo entre 0 e 4? é 0
Resultado final : 0
O que voce tem que fazer é inicializar com o maximo (Int32.MaxValue)
1- minimo entre Int32.MaxValue e 50? é 50
2- minimo entre 50 e 30? é 30
3- minimo entre 30 e 1? é 1
4- minimo entre 1 e 4? é 1
resultado final: 1
aqui esta a rotina corrigida:
int min= int.MaxValue; foreach (object item in LISTA.Items) { min = Math.Min(min, Convert.ToInt32(item)); } MessageBox.Show("O menor número é : " + min.ToString());
ps.:havia uma troca de variaveis tambem (max= math.min...), como o cesar mostrou, mas o erro na logica era o mais grave.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam TrindadeModerator quarta-feira, 23 de março de 2016 13:38
- Marcado como Resposta Marcos SJ quarta-feira, 23 de março de 2016 13:49
Todas as Respostas
-
você está atribuindo o valor para a variável max
int min= 0; foreach (object item in LISTA.Items) { // aqui o valor deve ser atribuido a min min = Math.Min(min, Convert.ToInt32(item)); } MessageBox.Show("O menor número é : " + min.ToString());
- Sugerido como Resposta Antero Marques quarta-feira, 23 de março de 2016 06:07
- Não Sugerido como Resposta William John Adam TrindadeModerator quarta-feira, 23 de março de 2016 13:39
-
Se voce compara sua lista (caso ela tenha somente valores positivos) com zero entao o menor sempre vai ser zero.
Digamos que sua lista seja 50, 30,1,4, entao veja as etapas
1- minimo entre 0 e 50? é 0
2- minimo entre 0 e 30? é 0
3- minimo entre 0 e 1? é 0
4- minimo entre 0 e 4? é 0
Resultado final : 0
O que voce tem que fazer é inicializar com o maximo (Int32.MaxValue)
1- minimo entre Int32.MaxValue e 50? é 50
2- minimo entre 50 e 30? é 30
3- minimo entre 30 e 1? é 1
4- minimo entre 1 e 4? é 1
resultado final: 1
aqui esta a rotina corrigida:
int min= int.MaxValue; foreach (object item in LISTA.Items) { min = Math.Min(min, Convert.ToInt32(item)); } MessageBox.Show("O menor número é : " + min.ToString());
ps.:havia uma troca de variaveis tambem (max= math.min...), como o cesar mostrou, mas o erro na logica era o mais grave.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam TrindadeModerator quarta-feira, 23 de março de 2016 13:38
- Marcado como Resposta Marcos SJ quarta-feira, 23 de março de 2016 13:49