Ir ao conteúdo

Posts recomendados

Postado

Boa tarde! 😼 Por favor, eu estou com uma dúvida muito grande em relação a um programa que eu precisava fazer! Ele se divide em três partes, mas receio que esta seja a única parte que está sendo díficil pra mim.

 

Então, o programa irá pedir 15 notas diferentes de 15 diferentes atletas, e então, o programa deverá mostrar qual é a pior e qual é a melhor nota dentre essas 15, porém, eu não consigo chegar onde eu quero!

Obs: eu não aprendi vetor ainda, eu gostaria de resolver esse exercício sem o mesmo

Eu tentei de diversos modos diferentes, o que eu fiz abaixo está longe de ser do jeito que eu queria que aparecesse.
Aliás, eu conseguiria fazer isso se fosse somente com dois valores, mas não sei o que fazer agora que são 15 valores 🥺

 

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main ()
{
	setlocale (LC_ALL , "Portuguese");
	
	
	int atleta; 
	float at1, at2, at3, at4, at5, at6, at7, at8, at9, at10, at11, at12, at13, at14, at15, media;
	
	
	printf ("Informe a nota do primeiro atleta: ");
	scanf ("%f", &at1 );
	
	printf ("Informe a nota do segundo atleta: ");
	scanf ("%f", &at2 );
	
	printf ("Informe a nota do teceiro atleta: ");
	scanf ("%f", &at3 );
	
	printf ("Informe a nota do quarto atleta: ");
	scanf ("%f", &at4 );
	
	printf ("Informe a nota do quinto atleta: ");
	scanf ("%f", &at5 );
	
	printf ("Informe a nota do sexto atleta: ");
	scanf ("%f", &at6 );
	
	printf ("Informe a nota do sétimo atleta: ");
	scanf ("%f", &at7 );
	
	printf ("Informe a nota do oitavo atleta: ");
	scanf ("%f", &at8 );
	
	printf ("Informe a nota do nono atleta: ");
	scanf ("%f", &at9 );
	
	printf ("Informe a nota do décimo atleta: ");
	scanf ("%f", &at10 );
	
	printf ("Informe a nota do décimo primeiro atleta: ");
	scanf ("%f", &at11 );
	
	printf ("Informe a nota do décimo segundo atleta: ");
	scanf ("%f", &at12 );
	
	printf ("Informe a nota do décimo terceiro atleta: ");
	scanf ("%f", &at13 );
	
	printf ("Informe a nota do décimo quarto atleta: ");
	scanf ("%f", &at14 );
	
	printf ("Informe a nota do décimo quinto atleta: ");
	scanf ("%f", &at15 );
  
    	printf ("Vou mostrar a melhor e a pior nota. ");
      
	  if (at1 >at2 || at1 >at3  || at1 >at4  || at1 >at5  || at1 >at6 || at1 >at7 || at1 >at8 || at1 >at9 || at1 > at10 || at1 >at11  || at1 >at12 || at1 >at13 || at1 >at14 || at1 >at15)
      {
      	printf ("A nota do primeiro nadador é a melhor.");
	  }
      
	  if (at1 <at2 || at1 <at3  || at1 <at4  || at1 <at5  || at1 <at6 || at1 <at7 || at1 <at8 || at1 <at9 || at1  <at10 || at1 <at11  || at1 <at12 || at1 <at13 || at1 <at14 || at1 <at15)
      {
        printf ("A nota do primeiro nadador é a pior.");
      }
   
  //se fosse pra fazer desse jeito, eu teria que fazer dois ifs pra cada at, mas não acredito que saíria do jeito que eu quero
  //na realidade eu queria mostrar em um único printf a maior e a menor nota juntas, mas não consigo fazer isso :(
      
  
	return 0;
}

 

 

  • Obrigado 1
Postado

Esse é um exercício de ciclos (while, for, ou do while) e deve usar um ciclo para resolver.

 

A ideia básica é fazer um ciclo que repete várias vezes a pergunta pedindo a nota do n-ésimo atleta, dentro do ciclo deve guardar em uma variável a maior nota, e em outra variável no número do atleta com a maior nota, e também a menor nota, e em outra variável o número do atleta com a menor nota.

 

Note que isso é um exercício de máximo e mínimo, o que significa que inicialmente pode simplesmente admitir que o primeiro valor do primeiro atleta é tanto a maior quanto a menor nota de todos os atletas, e a partir do segundo atleta basta comparar com os valores guardados atualmente como maior ou menor, e então substituir se aparecer um novo valor maior que o maior atual (ou um valor menor que o menor atual).

  • Curtir 1
  • Amei 1
Postado

@Noobia Você poderia criar um if para saber a maior nota logo de inicio: 

float nota(supondo que seja uma nota com virgula) = 0;

float maiornota = 0;

você pode dar scanf e, a cada nota, pode fazer: if(nota>maiornota){ maiornota = nota;}

só nisso você já vai saber a maior ^^

vou deixar esse raciocinio ai e tente pensar como fazer a da menor nota, boa sorte.

  • Curtir 1
  • Amei 1
Postado

@vangodp Também precisa guardar quais foram os atletas com maior e menor notas.

 

Eu sugiro passos um pouco diferentes:

 

declarar n, maior, atletamaior, menor, atletamenor

ler nota do primeiro atleta e atribuir a n

maior é a nota do primeiro atleta, menor nota é a nota do primeiro atleta, o primeiro atleta é o atletamaior e o atletamenor

>> Repete 14 vezes

-ler nota e atribuir a n
-comparar n com "maior", se n for maior que a variável "maior", atribuir n a maior e o número do atleta ao atletamaior
-comparar n com "menor", se n for menor que a variável "menor", atribuir n a "menor" e o número do atleta ao atletamenor

<<

  • Curtir 1
  • Amei 1
  • 3 semanas depois...
Postado

Oi gente! Desculpa pela demora, eu acabei tendo que desenvolver outros programas na frente e acabou atrapalhando tudo.. Eu meio que consegui chegar em uma lógica, mas está dando diversos erros nesse código, o que poderia ser?

 

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main ()
{
	setlocale (LC_ALL, "Portuguese");
	char resp;
	int nadador, contnad=0, idade, somanad, qntdnad++, nota=0, melhor=0;
    float media;
	
	do
	{
		printf ("Digite uma nota: ");
		scanf ("%d", &nota);
		
		qntdnad++;
		
		if (nota > melhor)
		{
			melhor = nota;
			
		}
		
		printf ("Tem mais um nadador? : ");
		scanf (" %c", &resp);
		
	} while (resp == 's');
	
	media = somanad / qtdnad;
	
	
	printf ("O nadador com a melhor nota é o com a nota de %i.\n", melhor);
	
	printf ("O nadador com a pior nota teve uma nota de %i\n", pior);
	
	printf ("A média de pontos é de %.2f\n", media);
	
	return 0;
}

 

  • Curtir 1
Postado

@Noobia Oi, tudo bem? Então, eu vejo alguns problemas no seu código, vou tentar comentar sobre cada separadamente : 

int nadador, contnad=0, idade, somanad, qntdnad++, nota=0, melhor=0; //aqui você está adicionando 1 a variavel que está sendo declarada, você precisa declarar ela para depois acrescentar.
int nadador, contnad=0, idade, somanad, qntdnad, nota=0, melhor=0; //ficaria assim
media = somanad / qtdnad; // o nome da variável está errado 
media = somanad / qntdnad; // mesmo consertando ainda teremos dois problemas: 
// Primeiro que a variável somanad nunca foi acrescentadando as notas recebidas durante o código. Sempre que o usuário inserir uma nota adicione a variável!
// Segundo que ambas são int que no caso se o resultado fosse 9.5 o retorno seria 9, se você quer consertar isso:
// Solução para isso seria declarar as variáveis somanad e qntdnad em floats ao invés de int.
float somanad, qntdnad;
printf ("O nadador com a pior nota teve uma nota de %i\n", pior); // aqui você está utilizando uma variável(pior) que você nunca declarou

Se ainda ocorrer algum problema, ou ainda tiver alguma dúvida, sinta-se livre para perguntar! 

Abraços.

  • Curtir 1
  • Obrigado 1

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