Ajuda Please |||

ribeirinhu

Power Member
"Desenvolva um programa que leia um ficheiro texto contendo colunas com os seguintes dados: número de aluno, nota de avaliação contínua, nota do trabalho prático e nota de exame. O programa deverá realizar as operações seguintes: cálculo de médias, totais, apresentação de informação sobre um aluno dado o seu número e contagem dos alunos acima da média. As operações a realizar são escolhidas pelo utilizador. No final os dados deverão ser guardados no mesmo ficheiro, ou num segundo ficheiro, conforme escolha do utilizador."


ncessito de ajuda para elaborar este programa em C, qualquer ajuda será benvida!!




obrigado




 
1 - Abrir o ficheiro: fopen.
2 - Para ler informação do ficheiro: fgets, fscanf.
3 - Lês a informação para uma estrutura de dados definida por ti. Só depois é que fazes os cálculos.
4 - No fim escreves em ficheiro: fprintf, fputs.
5 - Fechas o ficheiro: fclose.
 
1 - Abrir o ficheiro: fopen.
2 - Para ler informação do ficheiro: fgets, fscanf.
3 - Lês a informação para uma estrutura de dados definida por ti. Só depois é que fazes os cálculos.
4 - No fim escreves em ficheiro: fprintf, fputs.
5 - Fechas o ficheiro: fclose.

:x2: tá tudo dito!!!
 
1 - Abrir o ficheiro: fopen.
2 - Para ler informação do ficheiro: fgets, fscanf.
3 - Lês a informação para uma estrutura de dados definida por ti. Só depois é que fazes os cálculos.
4 - No fim escreves em ficheiro: fprintf, fputs.
5 - Fechas o ficheiro: fclose.


abraço e valeu pela ajuda !!
 
Última edição pelo moderador:
pessoal até agora consegui fazer isto podem-me ajudar pq n consigo por isto a correr:

Código:
#include <stdio.h>

void m(int dim, float notas[3][100]);
void total(int dim, int, float notas[3][100]);
void informacao(int dim, float notas[3][100]);
void acima(int dim, float notas[3][100]);
float mediaA(int i,float notas[3][100]);

void main() {
    int i, dim, escolha;
    FILE * trabalho = fopen ("trabalho.txt","a+");
        if(trabalho==NULL)
             printf("impossivel abrir o ficheiro, tente novamente", trabalho.txt);
        else
            {
                printf("o ficheiro foi aberto com sucesso", trabalho.txt);
            }                            
            
    dim=0;
    while (fscanf(trabalho,"%d;%f;%f;%f", &notas[0][dim], &notas[1][dim], &notas[2][dim], &notas[3][dim]) != EOF) 
    {

        dim=dim+1;
    }

    

    escolha=0;
    
    while (escolha != 1) {
        printf("\n o que deseja saber??\nA=Medias?\nB=Totais?\nC=Informacao do aluno?\nD=Numero de alunos acima da media?\n prima 1 para sair");
        
        scanf("%c", &escolha);
        switch(escolha) {
            
            


            case 'A':
                 'a':void m(int dim, float notas[3][100]) {    
                    int i;
                    float m[3]
                    FILE * trabalho;
                    trabalho = fopen ("trabalho.txt","a+");    
                    m[0]=0;
                    m[1]=0;
                    m[2]=0;
    
                    for(i=0;i<dim;i++) {
                        m[0]=m[0]+notas[1][i];}
                        m[0]=m[0]/dim;
                        fprintf(trabalho,"\nMedia da Avaliacao Continua=%f",m[0])
                        printf("\n Media da Avaliacao Continua=%f",m[0]
    
                    for(i=0;i<dim;i++) {
                            m[1]=m[1]+notas[2][i];}
                        m[1]=m[1]/dim;
                        fprintf(trabalho,"\nmedia dos trabalhos=%f",m[1])
                        printf("\n Media dos trabalhos=%f",m[1]

                    for(i=0;i<dim;i++) {
                        m[2]=m[2]+notas[3][i];}
                        m[2]=m[2]/dim;
                        fprintf(trabalho,"\nmedia dos exames=%f",m[2])
                        printf("\n Media dos exames=%f",m[2]}
                    break;            
            





            case 'B':                    
                 'b':void total(int dim, int, float notas[3][100]) {                
                        int i;    
                    float media;
                    FILE * trabalho;
                    trabalho = fopen ("trabalho.txt","a+");

                            for(i=0;i<dim;i++) {
                    media = (notas[1][i]*0.15+notas[2][i]*0.20+notas[3][i]*0.65);}
                        
                        fprintf(trabalho,"\n\nNumero=%d" notas[0][i],"\n\nmedia=%f", media[i]);    
                        printf("\n\nNumero=%d" notas[0][i],"\n\nmedia=%f", media[i]);
                    break;    
    
                                                    
                                        }


            case 'C': 
                 'c':void informacao(int dim,float notas[3][100]) {
                        int i, aluno;
                        FILE * trabalho;
                        trabalho = fopen ("trabalho.txt","a+");

                        printf("\n Introduza o numero de aluno");
                        scanf ("%d", &aluno);
                        i=0
                            while(aluno!=notas[0][i]){
                            i=i+1}
    
                        fprintf(trabalho,"\nAvaliaçao continua=%f"notas[1][i], "\nNota do Trabalho=%f" notas[2][i], "\nNota do Exame=%f"notas [3][i]);
    
                        printf("\nAvaliaçao continua=%f"notas[1][i], "\nNota do Trabalho=%f" notas[2][i], "\nNota do Exame=%f" notas [3][i]);
                    break;    



                                        }
            
            case 'D':
                 'd':void acima(int dim, float notas[3][100]){ 
                        float mediaA(int i,float notas[3][100]) 
                        float mediaA;
                        FILE * trabalho;
                        trabalho = fopen ("trabalho.txt","a+");

                        mediaA= (notas[1][i]*0.15+notas[2][i]*0.20+notas[3][i]*0.65);
                        mediaT=0;
                        for (i=0;i<dim;i++) {    
                            mediaT = mediaT + mediaA(i,numero,notas);
                                    }
                        quant=0
                        mediaT= mediaT/dim
                        for (i=0;i<dim;i++)
                        {
                            If (mediaA>mediaT)
                                        {    
                            quant=quant+1
                                    }
                                }
                        fprintf(trabalho,"\nO numero de alunos acima da media é: %d", quant);    
                        printf("\nO numero de alunos acima da media é: %d", quant);
                    break;    
                                        }        






            default: printf("erro!! operaçao escolhida invalida.... )
                }
                fclose(trabalho);

                }
 
Última edição pelo moderador:
Não sei quem te ensinou a fazer isto, mas este código está cheio de erros. Falta de ponto e vírgula, variáveis não declaradas, variáveis simples que depois são usadas como arrays, declarações de funções dentro de funções, funções declaradas dentro de um switch, erros de sintaxe...dava para escrever um livro. Isto de programar não pode ser feito de rajada! Convém ir testanto à medida que se faz. Vê lá o que consegues fazer com este arranjo:

Código:
#include <stdio.h>

void m(int dim, float notas[3][100]);
void total(int dim,float notas[3][100]);
void informacao(int dim, float notas[3][100]);
void acima(int dim, float notas[3][100]);
float mediaA(int i,float notas[3][100]);

int main() {
    int i, dim, escolha;
    FILE * trabalho = fopen ("trabalho.txt","a+");
    if(trabalho==NULL)
       printf("impossivel abrir o ficheiro, tente novamente", trabalho.txt);
    else
       printf("o ficheiro foi aberto com sucesso", trabalho.txt);
    dim=0;
    while (fscanf(trabalho,"%d;%f;%f;%f", &notas[0][dim], &notas[1][dim], &notas[2][dim], &notas[3][dim]) != EOF)
          dim=dim+1;
    escolha=0;
    while (escolha != 1) {
          printf("\n o que deseja saber??\nA=Medias?\nB=Totais?\nC=Informacao do aluno?\nD=Numero de alunos acima da media?\n prima 1 para sair");
          scanf("%c",&escolha);
          switch(escolha) {
             case 'A':
                  'a': m(dim,notas[3][100]);
                       break;
             case 'B':
                  'b': total(dim,notas[3][100]);
                       break;
             case 'C':
                  'c': informacao(dim,notas[3][100]) 
                       break;
             case 'D':
                  'd': acima(dim,notas[3][100]) 
                       break;
             default: printf("erro!! operaçao escolhida invalida....");
          }
    fclose(trabalho);

}

void m(int dim, float notas[3][100]) {
     float m[3],media;
     m[0]=0;
     m[1]=0;
     m[2]=0;
     for(i=0;i<dim;i++)
        m[0]=m[0]+notas[1][i];
     m[0]=m[0]/dim;
     fprintf(trabalho,"\nMedia da Avaliacao Continua=%f",m[0]);
     printf("\n Media da Avaliacao Continua=%f",m[0]);
     for(i=0;i<dim;i++) 
        m[1]=m[1]+notas[2][i];
     m[1]=m[1]/dim;
     fprintf(trabalho,"\nmedia dos trabalhos=%f",m[1]);
     printf("\n Media dos trabalhos=%f",m[1]);
     for(i=0;i<dim;i++) 
        m[2]=m[2]+notas[3][i];
     m[2]=m[2]/dim;
     fprintf(trabalho,"\nmedia dos exames=%f",m[2]);
     printf("\n Media dos exames=%f",m[2]);
     }
     
void total(int dim,float notas[3][100]) {
          int i;
          float media;
          FILE * trabalho;
          trabalho = fopen ("trabalho.txt","a+");
          for(i=0;i<dim;i++) 
             media = (notas[1][i]*0.15+notas[2][i]*0.20+notas[3][i]*0.65);
          fprintf(trabalho,"\n\nNumero=%d\n\nmedia=%f",notas[0][i],media);
          printf("\n\nNumero=%d\n\nmedia=%f",notas[0][i],media);
          }
          
void informacao(int dim,float notas[3][100]) {
     int i, aluno;
     FILE * trabalho;
     trabalho = fopen ("trabalho.txt","a+");
     printf("\n Introduza o numero de aluno");
     scanf ("%d",&aluno);
     i=0;
     while(aluno!=notas[0][i])
        i=i+1;
     fprintf(trabalho,"\nAvaliaçao continua=%f\nNota do Trabalho=%f\nNota do Exame=%f",notas[1][i],notas[2][i],notas[3][i]);
     printf("\nAvaliaçao continua=%f\nNota do Trabalho=%f\nNota do Exame=%f",notas[1][i],notas[2][i],notas[3][i]);
     }
     
void acima(int dim, float notas[3][100]) {
     float mediaA(int i,float notas[3][100])
     float mediaA;
     FILE * trabalho;
     trabalho = fopen ("trabalho.txt","a+");
     mediaA= (notas[1][i]*0.15+notas[2][i]*0.20+notas[3][i]*0.65);
     mediaT=0;
     for (i=0;i<dim;i++) 
        mediaT = mediaT + mediaA(i,numero,notas);
     quant=0;
     mediaT= mediaT/dim;
     for (i=0;i<dim;i++)
      if (mediaA>mediaT)
         quant=quant+1;
     fprintf(trabalho,"\nO numero de alunos acima da media é: %d", quant);
     printf("\nO numero de alunos acima da media é: %d", quant);
     }

Não está a funcionar, e ainda tem a função mediaA declarada dentro da função acima, mas como não sei o que queres e também não tenho mais tempo, fica assim.
 
Back
Topo