Ajuda com lógica

Olá galera muito bom dia, eu estou fazendo Técnico em Informática no IFCE da minha cidade e nas aulas de programação o professor está ensiando o C, porém esses dias ele passou um exercício para criar um programinha que faça o seguinte:

  • Pegar o nome do usuário;
  • Pegar o último sobrenome;
  • Depois ele quer pegar 3 notas, (A, B e C);
  • Em seguida quer comparar as 3 notas entre si e eliminar a menor;
  • Com as 2 notas que sobraram é pra calcular a média;
  • Ai diante da média ver se o aluno foi aprovado, reprovado ou ficou de avaliação final, com base na média que for definida;
  • Depois exibir na tela o resultado informando o nome do aluno com o seu sobrenome.

Galera agradeço muito se me ajudarem, assim, boa parte desse programa eu conseguiria fazer, no caso, de alguma outra forma simples, porém onde estou me complicando é na lógica em relação a pegar as 3 notas e comparar entre si e excluir a menor, é só nessa parte que de mim não está conseguindo sair nada, eu sei que preciso estudar um pouco mais, porém acredito que o forúm sirva pra isso para tirarmos dúvidas entre os outros, porque sempre tem alguém que saiba um pouco mais do que um outro. Peço uma luz, uma idéia de como posso fazer isso ai, desde já agradeço.

Ola amigo, tudo bem?

Uma ideia seria colocar as 3 notas em um array, depois ordenar esse array em ordem crescente.
Daí com o array ordenado você descartaria a posição zero do array e utiliza as outras duas para fazer a média.
Podem haver outras soluções, essa é só uma. :wink: .

2 curtidas

Agradeço a sua ajuda amigo, porém tenho que criar a solução desse exercício com base no que o professor já ensinou. Até agora ele só ensinou o básico do básico, variáveis, tipos de dados, if e else, comparadores, nada ainda sobre arrays. Mas mesmo assim obrigado por tentar ajudar.

Estou sem IDE C ou C++ aqui. Fiz no braço em notepad. Logo pode ter erros. A lógica da comparação pode ser melhorada. Não consigo formatar o include no código, mas tem que ter o # na frente e a biblioteca entre < e > pra compilar legal. Fiz muito rápido isso, mas já é um início pra você otimizar o código:

include stdio.h
include conio.h

main(){

char usuario, sobrenome, situacao
double a, b, c;

printf(“Digite o nome do usuário: “);
scanf(”%s”,&usuario);

printf(“Digite o sobrenome do usuário: “);
scanf(”%s”,&sobrenome);

printf(“Digite a primeira nota: “);
scanf(”%f”,&a);

printf(“Digite a segunda nota: “);
scanf(”%f”,&b);

printf(“Digite a terceira nota: “);
scanf(”%f”,&c);

if (a > b) && (b > c){
media = (a + b) / 2;
}else if (a > c) && (c > b){
media = (a + c) / 2 ;
}else if (b > a) && (a > c){
media = (b + a) / 2;
}else if (b > c) && (c > a){
media = (b + c) / 2;
}
if (media > 6){
situacao = “Aprovado”;
else{
situacao = “Reprovado”;
}
printf(“A média é: %f”, media);
printf("\nEsse aluno foi %s", situacao);
getch();
}

1 curtida

Se ele não te ensinou array, ele nem pode cobrar o exercício, já que para pegar o nome/sobrenome é necessário um array de char com uma posição mínima…

char sobrenome[50];

Não há como fugir disso, é assim que o C trabalha com string’s…

Ou seja, seu professor está sendo contraditório te pedindo uma coisa que ainda não ensinou e você e a classe têm total direito de puxarem a orelha dele quanto a isso…

Só para ficar mais claro, apenas exemplos…

char letra = 'A';
char palavra[] = "teste"; //calcula tamanho automaticamente...
char palavra2[6] = "teste"; //tamanho fixo...
char palavra3[6] = {'t', 'e', 's', 't', 'e', '\0'};

Perceba as diferentes formas de se declarar uma string diretamente… a primeira palavra calcula o tamanho do texto automaticamente devido os colchetes vazios [], mas um caractere de terminador de string é inserido ‘\0’…

O segundo exemplo, define o tamanho (6), mas o texto “teste” só tem 5? Isso é necessário porque todo texto precisa do terminador ‘\0’, logo passa a ser 6 no total…

O terceiro exemplo é como realmente a string é composta pelo C, cada posição é uma letra e no final um terminador…

Valeu cara obrigado pela ajuda.