Temos um grupo de alunos que estudam várias disciplinas. Cada disciplina pode ter várias notas. O programa deve permitir cadastrar os alunos, as disciplinas e as notas, gravando em 3 arquivos: 1 com os alunos, 1 com as matérias e 1 com as notas. O programa principal deve apenas ter a estrutura de um loop para digitar a opção desejada e parar. As opções permitidas pelo programa devem ser:
digitar os alunos, digitar as matérias, digitar as notas de cada aluno/disciplina, gravando o arquivo; as notas devem estar numa struct com:
número do aluno, número da matéria, nota1, nota2, nota3;
Sempre que for digitar os dados (nas funções anteriores), a função deve verificar se os arquivos já existem; caso existam, perguntar: “deseja criar um novo arquivo?” abrir o arquivo de acordo com a resposta do usuário;
Listar os dados a partir dos arquivos (não usar vetores para acumular os nomes dos alunos, nem o nome das matérias, nem as notas): esta função deve listar o nome do aluno e depois uma pequena tabela com as suas notas, mostrando:
Nos cabeçalhos das linhas: o nome das matérias,
Nos cabeçalhos das colunas: o número das notas (N1, N2, N3)
A média por aluno e por matéria na última coluna,
A média final do aluno,
Listar, depois do último aluno, a média geral da turma.
#include<stdio.h>
#include<stdlib.h>
# define TAM 20
# define S 20
struct Boletim {
char aluno[S];//Nome aluno
char materia[S];//Nome materia
int n1, n2, n3;//Notas dos alunos
};
void CadastrarAlunos(Boletim *v, int *ta) {
int num; // quantidade digitada de cada vez
int tot; // quantos alunos estarao no vetor
int i;
FILE * a;
printf("Quantos alunos serao cadastrados? ");
scanf("%d", &num);
tot = *ta + num;
for (i=*ta; i<tot; i++) {
printf("Digite o nome do aluno %d: ", i+1);
scanf("%s", &v[i].aluno);
}
a = fopen("alunos.txt", "w"); // abre para gravacao, no diretorio do programa
if (a == NULL) {
printf("Erro ao abrir arquivo aluno");
system("PAUSE");
exit(1);
}
for (i=*ta; i<tot; i++) {
while (v[i].aluno!= ''){
putc(v[i].aluno,a);
}
}
fclose(a);
*ta = tot;
}
void CadastrarMaterias(Boletim *v, int *tm) {
int num; // quantidade digitada de cada vez
int tot; // quantos alunos estarao no vetor
int i;
FILE * a;
printf("Quantas materias serao cadastradas? ");
scanf("%d", &num);
tot = *tm + num;
for (i=*tm; i<tot; i++) {
printf("Digite a materia %d: ", i+1);
scanf("%s", &v[i].materia);
}
a = fopen("materias.txt", "w"); // abre para gravacao, no diretorio do programa
if (a == NULL) {
printf("Erro ao abrir arquivo materia");
system("PAUSE");
exit(1);
}
for (i=*tm; i<tot; i++) {
while (v[i].materia!= ''){
putc(v[i].materia,a);
}
}
fclose(a);
*tm = tot;
}
int main() {
system("color F0");
Boletim vet[TAM];
int totalunos = 0;
int totmat = 0;
CadastrarAlunos(vet, &totalunos);
CadastrarMaterias(vet, &totmat);
system("PAUSE");
return(0);
}
Pergunta
Odione Timm
Temos um grupo de alunos que estudam várias disciplinas. Cada disciplina pode ter várias notas. O programa deve permitir cadastrar os alunos, as disciplinas e as notas, gravando em 3 arquivos: 1 com os alunos, 1 com as matérias e 1 com as notas. O programa principal deve apenas ter a estrutura de um loop para digitar a opção desejada e parar. As opções permitidas pelo programa devem ser:
digitar os alunos, digitar as matérias, digitar as notas de cada aluno/disciplina, gravando o arquivo; as notas devem estar numa struct com:
número do aluno, número da matéria, nota1, nota2, nota3;
Sempre que for digitar os dados (nas funções anteriores), a função deve verificar se os arquivos já existem; caso existam, perguntar: “deseja criar um novo arquivo?” abrir o arquivo de acordo com a resposta do usuário;
Listar os dados a partir dos arquivos (não usar vetores para acumular os nomes dos alunos, nem o nome das matérias, nem as notas): esta função deve listar o nome do aluno e depois uma pequena tabela com as suas notas, mostrando:
Nos cabeçalhos das linhas: o nome das matérias,
Nos cabeçalhos das colunas: o número das notas (N1, N2, N3)
A média por aluno e por matéria na última coluna,
A média final do aluno,
Listar, depois do último aluno, a média geral da turma.
Link para o comentário
Compartilhar em outros sites
1 resposta 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.