Boa tarde, sou novato e estou no 1 período da faculdade, e meu professor passou o seguinte exercício :
"Desenvolva um programa que contenha uma função que receba 4 notas de um aluno e uma letra que representa o tipo do cálculo. Se a letra for “A”, a função deverá fazer o cálculo da média aritmética das notas do aluno. Caso for a letra “P”, a função deverá realizar o cálculo de média ponderada com pesos, 4, 3, 2 e 1. Não deve ser permitido que o usuário informe uma letra diferente daquelas definidas para a função (para isso crie uma função que leia e valide o caractere digitado e retorne o mesmo para ser passado para a função do cálculo). Apresente o resultado da média, bem como se é média ponderada ou aritmética no corpo do programa principal."
Cheguei ao seguinte código:
#include <stdio.h>
char valida (char *escolha)
{
if (*escolha = 'P' || 'p' || 'A' || 'a'){
return *escolha;
}
else return 'r';
}
media_aritmetica(float *nota1, float *nota2, float *nota3, float *nota4)
{
float resultado=0;
resultado = (*nota1 + *nota2 + *nota3 + *nota4) / 4;
return resultado;
}
media_ponderada(float *nota1, float *nota2, float *nota3, float *nota4)
{
float resultado=0;
resultado = (*nota1 * 4 + *nota2 * 3 + *nota3 * 2 + *nota4 * 1) / (4+3+2+1);
}
int main()
{
char escolha, escolha_validada;
float nota1=0, nota2=0, nota3=0, nota4=0, media=0;
printf("Digite os valores das quatro notas:\n");
scanf("%f%f%f%f", ¬a1, ¬a2, ¬a3, ¬a4);
fflush(stdin);
do {
printf("Digite A para media aritmetica e P para media ponderada\n");
scanf("%c", &escolha);
escolha_validada = valida(&escolha);
if(escolha_validada == 'r'){
printf("Escolha invalida, por favor tente novamente\n");
}
}while (escolha_validada == 'r');
if (escolha == 'P' || 'p' ){
media = media_ponderada(¬a1, ¬a2, ¬a3, ¬a4);
printf("A media ponderada é: %f", media);
}
else{
media = media_aritmetica(¬a1, ¬a2, ¬a3, ¬a4);
printf("A media aritmetica é: %f", media);
}
return 0;
}
Porém ao executa-lo ele não esta executando corretamente, apresenta sempre a média ponderada, e ainda por cima pega lixo na memória. Como na imagem: