1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda Please |||

Discussão em 'Programação' iniciada por ribeirinhu, 16 de Janeiro de 2008. (Respostas: 7; Visualizações: 856)

  1. ribeirinhu

    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




     
  2. Baderous

    Baderous Banido

    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.
     
  3. AragTey

    AragTey Power Member

    :x2: tá tudo dito!!!
     
  4. ribeirinhu

    ribeirinhu Power Member

    brigadao pessoal !!!
     
  5. ribeirinhu

    ribeirinhu Power Member


    abraço e valeu pela ajuda !!
     
    Última edição pelo moderador: 16 de Janeiro de 2008
  6. ribeirinhu

    ribeirinhu Power Member

    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: 23 de Janeiro de 2008
  7. Baderous

    Baderous Banido

    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.
     
  8. ribeirinhu

    ribeirinhu Power Member

    brigadao! brigadao! é a primeira vez que programo na vida, isto num tá facil, mas brigadao pela ajuda !!!
     

Partilhar esta Página