Informática, perguntado por pbc397, 1 ano atrás

Analise o programa, em C:


main()
{
float n[10], m;
int p=1, i;
for(i=1; i<=10; i++)
{
printf("\nValor n. %d = ", i);
scanf ("%f", &n[i]);
if(n[i]<m)
{
m=n[i];
p=i;
}
}
printf("\nMenor valor = %.1f", m);
printf("\nPosicao = %d\n\n", p);
system ("pause");
return 0;
}

Porque não consigo fazer com que ele mostre o menor valor dentro do vetor?
Funciona somente quando tento com o maior valor dentro do vetor " if(n[i]>m) "


arthurmatolarj: M recebeu o alor de n[i]
kalil12392: Em qual linha?
arthurmatolarj: na 11°
kalil12392: Recebeu depois da comparação, ele tem que receber antes, pois, se a variável tomar uma posição de memória mt grande o if n vai ser executado.
kalil12392: Muito pequeno*
arthurmatolarj: Correto
arthurmatolarj: Então realmente, o m não deveria estar na comparação pois não tem valor e sim o p.
pbc397: Mas se eu assumo que m=n[i] antes da comparação, ele passa a ser sempre o ultimo valor dentro do vetor, impossibilitando a comparação
pbc397: Eu preciso comparar os valores dentro do vetor, e dizer qual é o menor
pbc397: E sua posição dentro do vetor

Soluções para a tarefa

Respondido por kalil12392
0
main()
{
float n[10], menor;
int p=1, i;
menor = 1;
for(i=1; i<=10; i++)
{
printf("\nValor n. %d = ", i);
scanf ("%f", &n[i]);
}
for(i = 0; i<10; i++)
{
if(n[i]<=menor) 

menor=n[i];
p=i;
}
}
printf("\nMenor valor = %.1f", m);
printf("\nPosicao = %d\n\n", p);
system ("pause");
return 0;
}

Creio que seja isso, pois agr ele tem um valor inicial pra ser comparado.

pbc397: Ele sempre me retorna:
Menor valor = 1.0
Posição = 1
Exceto se eu usar um número negativo
Perguntas interessantes