Informática, perguntado por Eric1005, 1 ano atrás

Implemente um algoritmo na linguagem C, que leia a nota da prova p (0 <= p < 10) e a quantidade de faltas f (0 <=f < 60) de n alunos e:

• Calcule a média das notas de todas as provas
• Calcule a média de faltas de todos os alunos
• Verificar para cada aluno, se este foi aprovado ou reprovado. Para que o aluno seja aprovado, e necessário obter frequência acima de 75% e nota da prova maior ou igual a 5.

Apresente esses valores ao usuario.
Neste algoritmo, deve-se verificar se os dados fornecidos pelo usuário estão corretos, isto e, se obedecem aos critérios acima mencionados. Por exemplo, se a nota da prova informada for -5, o algoritmo deve informar o erro e solicitar ao usuário que digite um valor correto.


KuroeJin: é só uma prova por aluno?
Eric1005: SIm
Eric1005: Sim só um prova por aluno.

Soluções para a tarefa

Respondido por KuroeJin
2
#include<stdio.h>
#include<stdlib.h>

int n=30;

typedef struct{
 float nota;
 int nfaltas;}Alunos;

int inserir_dados(Alunos a[], int aux);
int notas(int aux);
int faltas(int aux);
float media_notas(float sm_nota, Alunos a[], int aux);
float media_falta(int sm_falta, Alunos a[], int aux);
int aprovadoounao(Alunos a[], int aux);

int main(){
 Alunos alunos[n];
 inserir_dados(alunos, 0);
 printf("A media das notas eh %.2f\n", media_notas(0, alunos, 0));
 printf("A media de faltas eh %.2f\n\n", media_falta(0, alunos, 0));
 aprovadoounao(alunos, 0);
 system("pause");
 return 0;}

int inserir_dados(Alunos a[], int aux){
 if(aux<n){
  a[aux].nota=notas(aux);
  a[aux].nfaltas=faltas(aux);
  printf("\n-------------------------------------------\n");
  return inserir_dados(a, aux+1); }
 printf("\n\n");
 return 0;}

float notas(int aux){
 float nt;
 printf("Nota do aluno %d: ", aux+1);
 scanf("%f", &nt);
 if((nt<0)||(nt>10)){
  printf("Erro!!!\nNota invalida!\n\n");
  return notas(aux); }

 return nt; }

int faltas(int aux){
 int ft;
 printf("Numero de faltas do aluno %d", aux+1);
 scanf("%d", &ft);
 if((ft<0)||(ft>60)){
  printf("Erro!!!\nNumero invalido!\n\n");
  return faltas(aux); }
 
 return ft; }

float media_notas(float sm_notas ,Alunos a[], int aux){
 if(aux<n) return media_notas(sm_notas+a[aux].nota, a, aux+1);

 return sm_notas/(float)n;}

float media_falta(int sm_falta, Alunos a[], int aux){
 if(aux<n) return media_falta(sm_falta+a[aux].nfaltas, a, aux+1);
 
 return (float)sm_falta/(float)n; }

int aprovadoounao(Alunos a[], int aux){
 if(aux==n){
  printf("\n\n");
  return 0; }
 
 if((a[aux].nota>=5)&&(a[aux]nfaltas<=60*0.25) ){
  printf("Aluno %d aprovado!", aux+1);
  printf("\n-------------------------------------------\n");
  return aprovadoounao(a, aux+1); }
 
 printf("Aluno %d reprovado!", aux+1);
 printf("\n--------------------------------------------\n");
 return aprovadoounao(a, aux+1); }
Perguntas interessantes