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?
Soluções para a tarefa
Respondido por
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); }
#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
Matemática,
8 meses atrás
Matemática,
8 meses atrás
Matemática,
8 meses atrás
Direito,
1 ano atrás
Geografia,
1 ano atrás
Matemática,
1 ano atrás