Ir para conteúdo
Fórum Script Brasil
  • 0

Trabalho com arquivos em C++


Odione Timm

Pergunta

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);
}

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...