Ir ao conteúdo

Duvida em um exercício em c.


miikke

Posts recomendados

Postado

Bom dia pessoa!

Estou com uma duvida nesse exercício.

Criar um programa para ler a altura de vários jogadores de um time de basquete e mostrar qual e a maior e a menor altura. A ultima será zero.

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

main(){

float altura, maior = 0 , menor = 0;

while(altura !=0){

printf("\ndigite uma altura: ");

scanf("%f",&altura);

if(altura > maior)

maior = altura;

if(altura < menor)

menor = altura;

}

printf("\no maior numero e: %.2f", maior);

printf("\no menor numero e: %.2f", menor);

getch();

}

O problema, e que esta mostrando o zero como menor, e não e para mostrar ele, e sim encerrar o programa e mostrar o menor numero listado, sem ser o zero, como eu faço isso?

Agradeço a atenção de vocês.

Postado

O problema é que você está declarando a variável "menor" como 0, e não existe nenhuma altura menor que zero, certo?

O que você pode fazer é declarar ao invés de 0, uma altura que seja suficientemente grande para que exista outra menor, como por exemplo 10, então declare: menor = 10;

Ou pode fazer deste jeito:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

void main()
{
float altura, menor, maior;

setlocale(LC_ALL, "");
printf("Digite a altura do jogador: ");
scanf("%f", &altura);
maior = altura;
menor = altura;

while(altura != 0){
if(altura > maior)
maior = altura;
if(altura < menor)
menor = altura;
printf("Digite a altura do jogador (Digite 0 para sair): ");
scanf("%f", &altura);
}

printf("\nA maior altura é: %.2f\nA menor altura é: %.2f", maior, menor);

getch();
}

Postado

eu tentei rodar aqui esse codigo que você me mandou, ficou num laço infinito.

Eu entendi, eu ja tentei colocar o valor menor = 999999.

E mesmo assim continuou mostrando menor como zero. E como se o programa contasse o zero, mas não e para contar, e sim encerrar. Entende a minha duvida?

Postado

Você pode criar uma variável auxiliar para controlar a primeira atribuição para a variável menor.


#include <stdio.h>

int main(void){
float altura, menor, maior;
int aux = 0;
altura = menor = maior = 0;

do{
scanf("%f", &altura);

if(!aux){
menor = altura;
aux = 1;
}

if(altura > maior)
maior = altura;

if(altura && altura < menor)
menor = altura;
}while(altura);

printf("\nMaior = %.2f\n", maior);
printf("Menor = %.2f\n", menor);
return 0;
}

Postado
eu tentei rodar aqui esse codigo que você me mandou, ficou num laço infinito.

Eu entendi, eu ja tentei colocar o valor menor = 999999.

E mesmo assim continuou mostrando menor como zero. E como se o programa contasse o zero, mas não e para contar, e sim encerrar. Entende a minha duvida?

Deu looping infinito porque você provavelmente está entrando com os floats com ponto (ex: 3.5), utilize vírgulas (ex: 3,5).

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!