Ir ao conteúdo
  • Cadastre-se

C++ maior e menor altura


raphu_
Ir à solução Resolvido por eduds08,

Posts recomendados

Olá  gente , poderiam me ajudar com esse código? estou querendo a maior e a menor altura  de 5  pessoas.

fiz ate essa parte. A altura maior fica gravada mas a menor altura fica 1 em todos os casos. Alguém sabe o que está acontecendo?

 

#include<stdio.h>
#include<stdlib.h>
int main(){
    int n;
    int maior;
    int menor;
    int contador;
    
        for (contador=0;contador<5;contador++) {
             printf("\ndigite a altura:");
             scanf("%d",&n);
     
                       if(n > maior && n  < menor){ 
                                  maior= n;
                                    menor= n;
                         }
                                        if(n<menor&&n!=0){
                                               menor=n;
                                          }
                                                      if (n>maior && n!=0){    
                                                               maior=n;    
                                                        }    
        
        }
         printf ("maior altura: %d\n",maior);
         printf ("menor altura: %d\n",menor);
    }

 

bee 3040 - A Árvore de Natal.pdf

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Experimenta assim:

#include<stdio.h>
#include<stdlib.h>
int main(){
    int n;
    int maior;
    int menor;
    int contador;

	maior = 0;
	menor = 0;
	for (contador=0;contador<5;contador++) {
		printf("\ndigite a altura:");
		scanf("%d",&n);
		if (menor == 0) {
			menor = n;
			maior = n;
		}
 		if (n<menor){
 		    menor=n;
		}
		if (n>maior){    
			maior=n;    
		}
	}
	printf ("maior altura: %d\n",maior);
	printf ("menor altura: %d\n",menor);
}

 

  • Curtir 1
  • Obrigado 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • Solução

Primeiramente, inicialize todas as suas variáveis em 0 da seguinte maneira:

int n = 0;
int maior = 0;
int menor = 0;
int contador = 0;

Isso vai evitar problemas, pois no seu primeiro if, você está verificando se "n" é maior ou menor que as variáveis "maior" e "menor", sendo que elas não possuem nenhum valor definido.

if(n > maior && n  < menor)
{ 
	maior= n;
	menor= n;
}

Esse código aqui não faz sentido. Como é possível que uma altura "n" seja maior que a maior altura e menor que a menor altura simultaneamente?


Agora, respondendo a sua dúvida do porquê que menor não está sendo o que você quer: você precisa inicializar a variável "menor" com algum valor para você poder verificar se a idade "n" digitada é menor do que "menor".

Por exemplo, um jeito simples (mas feio) de fazer isso seria inicializar "menor" com um valor alto como 999.

Aqui está um exemplo do código completo:

#include <stdio.h>

int main() {
  int n = 0;
  int maior = 0;
  int menor = 999;
  int contador = 0;

  for (contador = 0; contador < 5; contador++) {
    printf("\ndigite a altura:");
    scanf("%d", &n);

    if (n < menor && n != 0) {
      menor = n;
    }
    if (n > maior && n != 0) {
      maior = n;
    }
  }

  printf("maior altura: %d\n", maior);
  printf("menor altura: %d\n", menor);

  return 0;
}


Note que um jeito mais elegante de fazer seria inicializar as variáveis "maior" e "menor" com o valor do primeiro "n" digitado. Dessa forma, mesmo que um usuário digitasse um valor maior do que 999, o programa não bugaria e continuaria funcionando como o planejado.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@raphu_ Você pode fazer como comentado acima e também pode ler a primeira altura fora do loop e atribuir para as outras duas variáveis, aí é só fazer um teste simples da menor e maior, p.ex,

 

#include <stdio.h>

int main(void){
    int altura;
    int maior;
    int menor;
    
    printf("1a Altura (cm): ");
    scanf("%d", &altura);
    
    maior = altura;
    menor = altura;
    
    for(int i = 2; i <= 5; i += 1){
        printf("%da Altura (cm): ", i);
        scanf("%d", &altura);
        if(altura > maior){
            maior = altura;
        }else if(altura < menor){
            menor = altura;
        }
    }
    printf("Menor = %d\nMaior = %d\n", menor , maior);
    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • 2 meses depois...
  • 4 meses depois...

Esse exercício é um clássico, tem aquela abordagem dos maximo, mínimo e meio:

 

Por exemplo.

/*
* FÓRUM CLUBE DO HARDWARE --- CdH
* @Ansi C
* 2014
*/
typedef unsigned  altura;/* Considera-se alto\baixo sempre acima do chão. */
#include <stdio.h>/* Include the header file for input and output */
int main (){
  altura nova= -1 ,menor= -1 ,maior= 0;
  /* Sendo 0 logicamente o chão, e -1 o céu */

  printf ("Entre com 5 alturas (use a Espaço ou a Enter entre elas):\n");  
  for (unsigned idx= 1 ; idx<=5 ; ++idx) {
    printf ("%c%s",'\r',">>>");

    nova= -1; 
    int c= scanf ("%u",&nova);
    if (c!=1 || ((int)nova)<=-1) {
    /* Ou seja, uma nova é muito abaixo do céu até o chão */
      if (c==EOF) break;
      if (c!=1) getchar ();
      idx-= 1;
      } else {
      if (maior<nova) maior= nova;
      if (menor>nova) menor= nova;
      }
    }
  printf ("%s","Resultado: \n\t");
  printf ("%s%u%s","<: ",menor,"\n\t");
  printf ("%s%u%c",">: ",maior,'\n');
  return 0;
  }

 

Eu acho que é isso.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!