
paulo1205
(usa Ubuntu)
Enviado em 28/10/2016 - 08:33h
FifteLolBR escreveu:
Eu estou fazendo um programa que receba x quantidade de números e dizer qual o menor deles mas toda vez que coloco pra rodar da 0, alguém poderia me ajudar?
segue o programa
#include <stdio.h>
int main(){
Como este programa é em C (e não C++), você deveria ter dito “
int main(void)”.
float g,h,j;
do{
printf("informe um numero:\n");
printf("para sair do sistema digite:0\n");
scanf("%d",&g);
Como já foi dito, como a variável é do tipo
float, a conversão usada em
scanf() tem de ser compatível com o tipo da variável. Algumas possibilidades são
"%f",
"%g",
"%e" e
"%a".
if(g!=0){
if(g<h){
Também já foi dito antes, mas volto a lembrar: na primeira iteração do loop,
h tem um valor indefinido, de modo que qualquer operação com ele terá um resultado imprevisível. Tenha certeza de que você não quer isso.
j=g;}
}
h=g;
}
while(g!=0);
Note você compara
g com zero duas vezes na mesma iteração do laço de repetição. Se você repensar um pouquinho sua lógica, certamente conseguirá fazer tudo com uma comparação apenas.
printf("o menor numero e:%d",j);
De novo o erro na especificação do dado a ser convertido, só que, agora, numa operação de saída. Se você está imprimindo um dado do tipo
float, você deve usar uma conversão compatível na chamada a
printf().
return 2;}
Tipicamente, quando
main() retorna um valor diferente de zero, isso indica uma condição de erro ao sistema operacional (ou ambiente de execução). Se você quiser sair de modo amigável, o correto seria retornar zero.