E o critério de aprovação é dado pelas media das três provas (p1,p2 e p3). A função devera obedecer ao seguinte protótipo:
void imprime_aprovados (int n, Aluno** turmas);
E também deverá ser feita uma função para imprimir a média dos alunos de uma determinada turma. E deverá seguir o seguinte protótipo:
float media_turma (int n, Aluno** turmas, char turma);
Fiz o seguinte:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct aluno
{
char nome[81];
char matricula[8];
char turma;
float p1;
float p2;
float p3;
};
typedef struct aluno Aluno;
#define MAX 3
Aluno* turmas[MAX];
void inicializa (int n, Aluno** turmas) /*funçãos para imprimir os aprovados*/
{
int i;
for (i=0; i<n; i++)
turmas[i] = NULL;
}
void preenche (int n, Aluno** turmas, int i)
{
if (i<0 || i>=n) {
printf("Indice fora do limite do vetor\n");
exit(1);
}
if (turmas[i]==NULL)
turmas[i] = (Aluno*)malloc(sizeof(Aluno));
printf("Entre com o nome");
scanf("%80[^\n]", &turmas[i]->nome);
printf("Entre com a matricula");
scanf("%c", &turmas[i]->matricula);
printf("Entre com a turma");
scanf("%120[^\n]", &turmas[i]->turma);
printf("Entre com a primeira nota");
scanf("%f", &turmas[i]->p1);
printf("Entre com a segunda nota");
scanf("%f", &turmas[i]->p2);
printf("Entre com a terceira nota");
scanf("%f", &turmas[i]->p3);
}
void imprime (int n, Aluno** turmas, int i)
{
if (i<0 || i>=n) {
printf("Indice fora do limite do vetor\n");
exit(1);
}
if (turmas[i]!=NULL)
{
printf("\n\nMatricula: %d\n", turmas[i]->matricula);
printf("\n\nNome: %s\n", turmas[i]->nome);
printf("\n\nTurma: %s\n", turmas[i]->turma);
printf("\n\n");
}
}
void imprime_aprovados (int n, Aluno** turmas)
{
int i;
float media;
float p1,p2,p3;
media = (p1+p2+p3)/3;
for (i=0; i<n; i++)
{
if (media>6.0)
{
imprime(n,turmas,i);
}
}
}
/*programa principal*/
main(){
Aluno* turmas[10];
preenche(10,turmas,0);
preenche(10,turmas,1);
preenche(10,turmas,1);
imprime_aprovados(10,turmas);
system("pause");
return 0;
}
Só que esta com erro para cadastrar a matrícula e também no final o programa não mostra os resultado esperado que e mostrar a média dos alunos aprovados
Pergunta
RS25
O programa deverá cadastrar alunos de uma determinada disciplina
e devera ser implementada uma função que imprima o número de matrícula, o nome, a turma e a média de todos os alunos aprovados na disciplina.
E deverá seguir o seguinte modelo de estrutura
struct aluno { char nome[81]; char matricula[8]; char turma; float p1; float p2; float p3; };E o critério de aprovação é dado pelas media das três provas (p1,p2 e p3). A função devera obedecer ao seguinte protótipo: void imprime_aprovados (int n, Aluno** turmas); E também deverá ser feita uma função para imprimir a média dos alunos de uma determinada turma. E deverá seguir o seguinte protótipo: float media_turma (int n, Aluno** turmas, char turma); Fiz o seguinte:#include <stdio.h> #include <stdlib.h> #include <conio.h> struct aluno { char nome[81]; char matricula[8]; char turma; float p1; float p2; float p3; }; typedef struct aluno Aluno; #define MAX 3 Aluno* turmas[MAX]; void inicializa (int n, Aluno** turmas) /*funçãos para imprimir os aprovados*/ { int i; for (i=0; i<n; i++) turmas[i] = NULL; } void preenche (int n, Aluno** turmas, int i) { if (i<0 || i>=n) { printf("Indice fora do limite do vetor\n"); exit(1); } if (turmas[i]==NULL) turmas[i] = (Aluno*)malloc(sizeof(Aluno)); printf("Entre com o nome"); scanf("%80[^\n]", &turmas[i]->nome); printf("Entre com a matricula"); scanf("%c", &turmas[i]->matricula); printf("Entre com a turma"); scanf("%120[^\n]", &turmas[i]->turma); printf("Entre com a primeira nota"); scanf("%f", &turmas[i]->p1); printf("Entre com a segunda nota"); scanf("%f", &turmas[i]->p2); printf("Entre com a terceira nota"); scanf("%f", &turmas[i]->p3); } void imprime (int n, Aluno** turmas, int i) { if (i<0 || i>=n) { printf("Indice fora do limite do vetor\n"); exit(1); } if (turmas[i]!=NULL) { printf("\n\nMatricula: %d\n", turmas[i]->matricula); printf("\n\nNome: %s\n", turmas[i]->nome); printf("\n\nTurma: %s\n", turmas[i]->turma); printf("\n\n"); } } void imprime_aprovados (int n, Aluno** turmas) { int i; float media; float p1,p2,p3; media = (p1+p2+p3)/3; for (i=0; i<n; i++) { if (media>6.0) { imprime(n,turmas,i); } } } /*programa principal*/ main(){ Aluno* turmas[10]; preenche(10,turmas,0); preenche(10,turmas,1); preenche(10,turmas,1); imprime_aprovados(10,turmas); system("pause"); return 0; }Só que esta com erro para cadastrar a matrícula e também no final o programa não mostra os resultado esperado que e mostrar a média dos alunos aprovados
e mostrar os alunos aprovados.
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.