ep3-6435020.c


/********************************************************/
/* Aluno: Cristine Calil Kores                          */
/* N?mero USP: 6435020                                  */
/* Exercicio-Programa 3 -- Fazendo Media                 */
/* MAC115 -- 2008 -- IFUSP, turma 21 -- Prof. Reverbel   */
/* Compilador: DevC++ versao 4.9.9.2                     */
/********************************************************/

#include<stdio.h>
#include <stdlib.h>
#define MAX_NOME 30
#define MAX_NOTAS 83  /*40 provas, 40 eps, suas respectivas medias e a media final*/
#define MAX_PROVAS 40
#define MAX_EPS 40



int main()
{
    
    int n ,m,p,pp,pep,aprovados,recuperacao,reprovados; /*Respectivamente o numero de :alunos, eps, provas; peso da media 
                                                        das provas e dos eps, variaveis para o numero de alunos aprovados, em recuperacao e reprovados*/
    float mp,mep,mf; /*variaveis para a media das provas, dos eps e a media final, para cada aluno*/
    
    char nome[MAX_NOME];        /*vetor para os nomes dos alunos*/
    float notas[MAX_NOTAS];     /*vetor com todas as notas, pra saida*/
    
    float medias_sala[MAX_NOTAS];   /*vetor para as medias da sala */
    
    char nome_arq_entrada[40];  /*onde sera guardado o nome do arquivo de entrada*/
    int pesos_provas[MAX_PROVAS];     /*vetor onde estarao armazenados os pesos de cada prova*/
    int pesos_eps[MAX_EPS];        /*vetor onde estarao armazenados os pesos de cada ep*/
    
    int i, aux, aux_n;                    /*variaveis auxiliares*/
    int pesos=0;
    
    n=0;
    m=0;
    p=0;
    pp=0;
    pep=0;
    aprovados=0;
    recuperacao=0;
    reprovados=0;
other
mp=0; mep=0; mf=0; FILE *entrada, *saida; printf("Digite o nome do arquivo de entrada: "); scanf("%s", nome_arq_entrada); /*abertura do arquivo de entrada, para leitura*/ if ((entrada = fopen(nome_arq_entrada, "r")) == NULL) { printf("Arquivo de entrada nao encontrado!\n"); exit(1); } /* Abertura do arquivo de saida, para escrita */ if ((saida = fopen("saida.txt", "w")) == NULL) { printf("Erro na abertura do arquivo de saida!\n"); exit(1); } /* Lendo do arquivo de entrada */ fscanf(entrada, "%d %d %d ", &n, &p, &m); printf("n=%d, p=%d, m=%d\n", n,p,m); /*s? checando*/ for(i=1;i<=p;i++)
{ fscanf(entrada,"%d ", &pesos_provas[i]); /*guarda os pesos das provas*/ printf("peso da prova %d = %d\n",i,pesos_provas[i]); /*s? checando*/ }
other
for(i=1;i<=m;i++) { fscanf(entrada, "%d ",&pesos_eps[i]); /*guarda os pesos dos eps*/ printf("peso do ep %d = %d\n",i,pesos_eps[i]); /*s? checando*/ } fscanf(entrada, "%d %d ", &pp, &pep); /*le e guarda o peso da media das provas, pp, e o peso da media dos eps, pep*/ printf("pp = %d, pep = %d\n",pp,pep); /*s? checando*/ fprintf(saida, "Nome "); /* a palavra nome, seguida de 26 espacos*/ printf("Nome "); /*s? checando*/ for(i=1; i<=p; i++) { fprintf(saida, "p%d ",i); printf("p%d ",i); /*so checando*/ } fprintf(saida, "mp "); printf("mp ");/*so checando*/ for(i=1; i<=m; i++) {
fprintf(saida, "ep%d ",i); printf("ep%d ",i);/*so checando*/ } fprintf(saida, "mep mf\n"); printf("mep mf\n");/*so checando*/ aux_n=n; /*aux_N sera usado para nao "estragar"o n*/ for(i=1;i<=MAX_NOTAS;i++) /*inicializacao do vetor*/ medias_sala[i]=0; while(n>0) { mp=0; pesos=0; mep=0; mf=0; fgets(nome, MAX_NOME, entrada); /*para ler o 1o nome ate acabar o vetor nome, onde o nome esta sendo guardado*/ fprintf(saida,"%s ",nome); printf("%s ",nome); /*s? checando*/ for(i=1;i<=p;i++) { fscanf(entrada, "%f ", &notas[i]); fprintf(saida, "%5.1f",notas[i]); printf("i=%d\n",i); printf("%4.1f", notas[i]); /* so checando*/ mp=mp+(notas[i]*pesos_provas[i]); pesos=pesos+pesos_provas[i]; medias_sala[i]=medias_sala[i]+notas[i]; } printf("i_mp=%d",i); /*so checando*/ mp=mp/pesos;
other
notas[i]=mp; medias_sala[i]=medias_sala[i]+notas[i]; fprintf(saida, "%5.1f", notas[i]); printf("\n%5.1f", notas[i]); /*so checando*/ i++; /*i=p+1, ir para a proxima casa, seguinte a mp*/ /*i est? percorrendo o vetor notas agora i=p+1 e p=p inicial*/ printf("\n\n\ni=%d\n",i); /*so checando*/ printf("m=%d\n",m); /*so checando*/ printf("p=%d\n",p); /*so checando*/ pesos=0; aux=m; for(;m>0;m--,i++) { fscanf(entrada, "%f ", &notas[i]); fprintf(saida, "%5.1f",notas[i]); mep=mep+(notas[i]*pesos_eps[i-(p+1)]); pesos=pesos+pesos_eps[i-(p+1)]; medias_sala[i]=medias_sala[i]+notas[i];
} m=aux; printf("m=%d ",m); mep=mep/pesos; notas[i]=mep; medias_sala[i]=medias_sala[i]+notas[i]; fprintf(saida, "%5.1f", notas[i]); printf("%2.1f ",notas[i]); i++; /*agora m ? m inicial, e i=p+m+2, estando na posicao correspondente ? seguinte da que ? ocupada pela media dos eps, mep, do vetor notas[]*/ mf=(pp*mp) + (pep*mep); mf=mf/(pp+pep); notas[i]=mf; medias_sala[i]=medias_sala[i]+notas[i]; fprintf(saida, "%5.1f",notas[i]); printf("%2.1f ", notas[i]); fprintf(saida,"\n"); n--; /*pelo fato das mf serem floats e s? serem arredondadas para sua impressao, a comparacao foi feita com 3.0 e 5.0, e nao com 2.95 e 4.95 como o Sr. Prof. Reverbel havia dito para fazer*/ if(mf<3.0) reprovados++; if(mf>=3.0 && mf<=5.0) recuperacao++; if(mf>5.0) aprovados++; } /*do while(n>0)*/ aux=i; fprintf(saida,"Medias "); for(i=1;i<=aux;i++) { fprintf(saida, "%5.1f",(medias_sala[i]/aux_n)); printf("medias da sala:%2.1f", (medias_sala[i]/aux_n)); } fprintf(saida,"\n\n\nAprovados: %d\nRecuperacao: %d\nReprovados: %d",aprovados,recuperacao,reprovados); fclose(entrada); fclose(saida); }