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);
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, " ");
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 ", ¬a);
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 ", ¬a);
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;
}