ep3-6434461.c


    /******************************************************/
    /* Aluno: Danilo Furlan Kaid                          */
    /* Numero USP: 6434461                                */
    /* Exercicio-Programa 3 -- Fazendo M?dia              */
    /* MAC115 --2008 -- IFUSP, turma 21 -- Prof. Reverbel */
    /* Compilador: Dev-C++ 4                              */
    /******************************************************/

#include<stdio.h>
#include<stdlib.h>
#define MAX 10             /*Quantidade m?xima de provas e EPs*/
#define MAX_ARQ 80         /*M?ximo para o nome do arquivo*/
#define NOME 30            /*(MAX_NOME) tamanho m?ximo para o nome dos alunos*/
int main(){
    int m, n, p;                           /*N?mero de EPs, alunos e provas*/
    int i, j, k, aux;                      /*Vari?veis de contagem e auxiliares*/
    int peso_p[MAX], peso_ep[MAX], pp, pep;/*Pesos das provas e EPs*/
    int aprov=0, recup=0, reprov=0;        /*Vari?veis de contagem*/
    float m_p, m_ep, m_f, medias[MAX*2+3]; /*M?dias de cada aluno e da turma*/
    float nota;                            /*Recebe cada nota*/
    char nome[NOME+1], arquivo[MAX_ARQ];   /*Para o nome dos alunos e do arquivo*/
    FILE *entrada, *saida;                 /*Vari?veis para leitura e grava??o*/
    
    for(i=0; i<MAX*2+3; i++)   /*zera o vetor*/
             medias[i]=0;
    
    /*Abertura dos arquivos*/
    printf("Digite o nome do arquivo de entrada: ");
    scanf("%s", arquivo);
other
if( (entrada = fopen(arquivo, "r")) ==NULL){ printf("Arquivo de entrada nao encontrado!\n"); exit(1); } if( (saida = fopen("saida.txt", "w")) ==NULL){ printf("Erro na abertura do arquivo de saida!\n"); exit(1); } /*Lendo as vari?veis*/ fscanf(entrada, "%d %d %d ", &n, &p, &m); for(i=0; i<p; i++) fscanf(entrada, "%d ", &peso_p[i]); for(i=0; i<m; i++) fscanf(entrada, "%d ", &peso_ep[i]); fscanf(entrada, "%d %d ", &pp, &pep); /*Imprimindo os r?tulos das colunas*/ fprintf( saida, "Nome"); for(i=4; i<NOME; i++)
fprintf( saida, " ");
other
for(i=1; i<= p; i++) fprintf( saida, " p%d ", i); fprintf( saida, " mp "); for(i=1; i<= m; i++) fprintf( saida, " ep%d ", i); fprintf( saida, " mep mf\n"); /*Impress?o das linhas*/ for(j=0; j<n; j++){ /*cada aluno*/ k=0; /*?ndice do contador das m?dias da turma*/ /*O nome*/ fgets(nome, NOME, entrada); fprintf(saida, "%s ", nome); /*Notas das provas*/ for(m_p = aux = i=0; i<p; i++){
fscanf(entrada, "%f ", &nota); m_p += nota*peso_p[i]; aux += peso_p[i]; medias[k++] +=nota; fprintf(saida, "%4.1f ", nota); } m_p= m_p /(float) aux; medias[k++] += m_p; fprintf(saida, "%4.1f ", m_p); /*Notas dos EPs*/ for(m_ep = aux = i=0; i<m; i++){ fscanf(entrada, "%f ", &nota); m_ep += nota*peso_ep[i]; aux += peso_ep[i]; medias[k++] +=nota; fprintf(saida, "%4.1f ", nota); } m_ep= m_ep /(float) aux; medias[k++] += m_ep; fprintf(saida, "%4.1f ", m_ep); /*M?dia final*/ m_f = (m_p*pp + m_ep*pep) /(float) (pp+pep); medias[k]+=m_f; fprintf( saida, "%4.1f\n", m_f); /*Avalia??o*/ if( m_f >= 5.0 ) aprov++; else if( m_f < 3.0 ) reprov++; else recup++; } /*alunos*/ /*Impress?o das M?dias da turma*/ fprintf( saida, "Medias"); for(i=6; i<NOME; i++) fprintf(saida, " "); for(i=0; i<=k; i++){ fprintf( saida, "%4.1f ", medias[i] /(float) n); } fprintf(saida, "\n\nAprovados:\t%d\nRecuperacao:\t%d\nReprovados:\t%d\n", aprov, recup, reprov); return 0; }