Programa dando 0

1. Programa dando 0

Vinícius Mateus Siqueira Barbosa
FifteLolBR

(usa Ubuntu)

Enviado em 28/10/2016 - 03:36h

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(){
float g,h,j;
do{
printf("informe um numero:\n");
printf("para sair do sistema digite:0\n");
scanf("%d",&g);
if(g!=0){
if(g<h){
j=g;}
}
h=g;
}
while(g!=0);
printf("o menor numero e:%d",j);
return 2;}


  


2. Re: Programa dando 0

doom load
doomload

(usa Ubuntu)

Enviado em 28/10/2016 - 03:43h

Caro colega, você declarou um float e no scanf utilizou "%d". Troque o "%d" por "%f" que é o correto para utilizar com float.

Depois você fez o mesmo em:
printf("o menor numero e:%d",j);

onde o correto é fazer printf("o menor numero e:%f",j);


3. Re: Programa dando 0

doom load
doomload

(usa Ubuntu)

Enviado em 28/10/2016 - 03:48h

Outra coisa, você só atribuiu um número a variável g com o scanf. Depois você utiliza o h e o j sem atribuir qualquer número, portanto elas estão com um valor aleatório, pegando qualquer coisa que esteja gravada no trecho de memória que elas estão utilizando. Inicie suas variáveis.


4. Re: Programa dando 0

Paulo
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.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts