JimmyPage Postado Junho 29, 2009 Denunciar Share Postado Junho 29, 2009 (editado) Escreva, na linguagen C, um programa que leia de um arquivo os dados de uma turma e imprimaa m´edia final de acordo com o crit´erio tamb´em descrito no arquivo de entrada.No arquivo de entrada est˜ao os seguintes dados, nesta ordem:• quatro inteiros n, p,m e t, representando respectivamente o n´umero de alunos da turma, o n´umerode notas de provas, o n´umero de notas de exerc´ıcios-programa e o n´umero de mˆeses de aulas nosemestre;• uma sequˆencia de p naturais representando o peso de cada prova;• uma sequˆencia de m naturais representando o peso de cada exerc´ıcio-programa;• dois naturais pp e pep representando o peso da m´edia de provas e da m´edia de exerc´ıcios-programapara o c´alculo da m´edia final;• uma sequˆencia de t naturais representando a quantidade de dias letivos de cada mˆes;• uma sequˆencia de n linhas, cada uma com os dados de um dos n alunos da turma: nome, notasde provas, notas de exerc´ıcios-programa e as freq¨uencias (n´umero de faltas) de cada mˆes.Voces podem assumir que o nome de cada aluno cont´em no m´aximo 29 caracteres. Mais especificamentevocˆes podem assumir que os 30 primeiros caracteres de cada linha com os dados de um alunocont´em um nome seguido de brancos (haver´a pelo menos um branco depois do nome) e que na coluna31 come¸cam as notas deste aluno. Cada nota deve ser um n´umero real entre 0 e 10.Exemplo de arquivo de entrada3 3 5 41 2 21 1 2 2 31 220 20 18 20Cassandra Avestruz da Silva 5.0 6.6 4.2 10.0 9.0 8.0 7.0 6.0 0 0 0 4Roberto Carlos 2.0 1.5 3.2 0.0 5.0 0.0 6.0 6.5 10 2 4 0Ronaldinho Gaucho 8.0 3.0 7.7 9.5 8.0 10.0 9.5 9.0 12 10 8 12O seu programa pode ler e escrever os dados na entrada e sa´ıda padr˜ao ou pedir que ousu´ario digite o nome do arquivo de entrada e deve ter como sa´ıda um arquivo de nome‘‘saida.txt’’ contendo as seguintes informa¸c˜oes:1• uma linha inicial com os r´otulos das v´arios colunas a serem impressas (veja noexemplo abaixo);• uma linha para aluno, contendo o seu nome, as suas notas de prova, a sua m´edia deprova usando os pesos dados no arquivo de entrada, as suas notas dos exerc´ıciosprograma,a sua m´edia de exerc´ıcio-programa usando os pesos dados no arquivo deentrada e finalmente a sua m´edia final;• uma linha contendo a m´edia da turma em cada prova, a m´edia das m´edias das provas,a m´edia de cada exerc´ıcio-programa, a m´edia das m´edias dos exerc´ıcios-programa ea m´edia das m´edias finais;• no final, o n´umero de alunos aprovados (com m´edia final maior ou igual a 5.0 efreq¨uencia maior ou igual a 75%), o n´umero de alunos que ficaram de recupera¸c˜ao(com m´edia final maior ou igual a 3.0 e menor que 5.0 e freq¨uencia maior ou iguala 75%) e o n´umero de reprovados (com m´edia final menor que 3.0 ou freq¨uenciamenor que 75%).Exemplo de sa´ıda (para o arquivo de entrada j´a visto):Nome p1 p2 p3 mp ep1 ep2 ep3 ep4 ep5 mep mf fmCassandra Avestruz da Silva 5.0 6.6 4.2 5.3 10.0 9.0 8.0 7.0 6.0 7.4 6.7 94.9Roberto Carlos 2.0 1.5 3.2 2.3 0.0 5.0 0.0 6.0 6.5 4.1 3.5 79.5Ronaldinho Gaucho 8.0 3.0 7.7 5.9 9.5 8.0 10.0 9.5 9.0 9.3 8.1 46.2Medias 5.0 3.7 5.0 4.5 6.5 7.3 6.0 7.5 7.2 6.9 6.1Aprovados: 1Recuperacao: 1Reprovados: 1 Editado Junho 30, 2009 por Jonathan Queiroz Título editado conforme regra 3.6 (Jonathan) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Maligno Postado Junho 29, 2009 Denunciar Share Postado Junho 29, 2009 Mostre o que você já fez. E aponte sua dúvida. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JimmyPage Postado Junho 29, 2009 Autor Denunciar Share Postado Junho 29, 2009 Mostre o que você já fez. E aponte sua dúvida.eu preciso ler cada linha e gardar em variaveis os valores separados por tab, e a partir dos daos dos alunos, fazer as contas e ao fim exibir o resultado... se puder me ajudar agradeço, meu fonte tá ruim... recomeçando ele... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JimmyPage Postado Junho 30, 2009 Autor Denunciar Share Postado Junho 30, 2009 (editado) Mostre o que você já fez. E aponte sua dúvida.eu preciso ler cada linha e gardar em variaveis os valores separados por tab, e a partir dos daos dos alunos, fazer as contas e ao fim exibir o resultado... se puder me ajudar agradeço, meu fonte tá ruim... recomeçando ele...# include<stdio.h> # include <stdio.h> # include <stdlib.h> #define MAX_NOME 30 enum { MAX = 81 }; char *extraiDado (char *, char *); int main(){ system("pause"); system("cls"); FILE *pArq; /* ponteiro para o arquivo com os dados */ char nomeArq[MAX]; /* nome do arquivo */ int n, m, pr, t, i; float n1, n2, media, p1, p2, p3; char linha[MAX]; /* dados lidos do arquivo */ char nome[MAX]; char temp[MAX]; /* b dado extraido de linha */ char *p; /* ponteiro que anda pela linha durante a extracao dos dados */ puts("DIGITE O ARQUIVO DE ENTRADA"); gets(nomeArq); if ((pArq = fopen(nomeArq, "r")) == NULL) { puts("Arquivo não pode ser aberto."); exit(EXIT_FAILURE); } /* quatro inteiros n, p,m e t, representando respectivamente o n´umero de alunos da turma, o número de notas de provas, o número de notas de exercícios-programa e o número de mˆeses de aulas no semestre */ fscanf(pArq, "%d %d %d %d", &n, &pr, &m, &t); /* Verificação os valores que foram lidos - impressão na tela */ printf("n = %d pr = %d m = %d t = %d\n", n, pr, m, t); /* uma sequˆencia de p naturais representando o peso de cada prova;*/ fscanf(pArq + 1, "%d %d %d", &p1, &p2, &p3); /* Verificação os valores que foram lidos - impressão na tela */ printf("p1 = %d p2 = %d p3 = %d\n", p1, p2, p3); fgets (linha, MAX, pArq); while ( ! feof(pArq) ) { for(i=0; i<n; i++){ /* extrai nome */ p = linha; p = extraiDado (p, temp); strcpy(nome, temp); /* extrai nota 1 */ p = extraiDado (p, temp); n1 = atoi (temp); /* extrai nota 2 */ p = extraiDado (p, temp); n2 = atoi (temp); media = (n1 + n2)/2; /*gravando arquivo de saida*/ printf( "NOME P1 P2 MEDIA\n"); fprintf (stdout, "%-40s %4.1f %4.1f %4.1f ", nome, n1, n2, media); if (media > 5.0) puts ("aprovado"); else puts("reprovado"); system("pause"); fgets (linha, MAX, pArq); } } } char *extraiDado (char *buffer, char *temp) { int i=0; do { temp[i] = *buffer; buffer++; i++; } while (*buffer != ';'); temp[i] = ''; return ++buffer; system("pause"); return 0; } Editado Junho 30, 2009 por Jonathan Queiroz Adcionar tag's (Jonathan) Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
JimmyPage
Escreva, na linguagen C, um programa que leia de um arquivo os dados de uma turma e imprima
a m´edia final de acordo com o crit´erio tamb´em descrito no arquivo de entrada.
No arquivo de entrada est˜ao os seguintes dados, nesta ordem:
• quatro inteiros n, p,m e t, representando respectivamente o n´umero de alunos da turma, o n´umero
de notas de provas, o n´umero de notas de exerc´ıcios-programa e o n´umero de mˆeses de aulas no
semestre;
• uma sequˆencia de p naturais representando o peso de cada prova;
• uma sequˆencia de m naturais representando o peso de cada exerc´ıcio-programa;
• dois naturais pp e pep representando o peso da m´edia de provas e da m´edia de exerc´ıcios-programa
para o c´alculo da m´edia final;
• uma sequˆencia de t naturais representando a quantidade de dias letivos de cada mˆes;
• uma sequˆencia de n linhas, cada uma com os dados de um dos n alunos da turma: nome, notas
de provas, notas de exerc´ıcios-programa e as freq¨uencias (n´umero de faltas) de cada mˆes.
Voces podem assumir que o nome de cada aluno cont´em no m´aximo 29 caracteres. Mais especificamente
vocˆes podem assumir que os 30 primeiros caracteres de cada linha com os dados de um aluno
cont´em um nome seguido de brancos (haver´a pelo menos um branco depois do nome) e que na coluna
31 come¸cam as notas deste aluno. Cada nota deve ser um n´umero real entre 0 e 10.
Exemplo de arquivo de entrada
3 3 5 4
1 2 2
1 1 2 2 3
1 2
20 20 18 20
Cassandra Avestruz da Silva 5.0 6.6 4.2 10.0 9.0 8.0 7.0 6.0 0 0 0 4
Roberto Carlos 2.0 1.5 3.2 0.0 5.0 0.0 6.0 6.5 10 2 4 0
Ronaldinho Gaucho 8.0 3.0 7.7 9.5 8.0 10.0 9.5 9.0 12 10 8 12
O seu programa pode ler e escrever os dados na entrada e sa´ıda padr˜ao ou pedir que o
usu´ario digite o nome do arquivo de entrada e deve ter como sa´ıda um arquivo de nome
‘‘saida.txt’’ contendo as seguintes informa¸c˜oes:
1
• uma linha inicial com os r´otulos das v´arios colunas a serem impressas (veja no
exemplo abaixo);
• uma linha para aluno, contendo o seu nome, as suas notas de prova, a sua m´edia de
prova usando os pesos dados no arquivo de entrada, as suas notas dos exerc´ıciosprograma,
a sua m´edia de exerc´ıcio-programa usando os pesos dados no arquivo de
entrada e finalmente a sua m´edia final;
• uma linha contendo a m´edia da turma em cada prova, a m´edia das m´edias das provas,
a m´edia de cada exerc´ıcio-programa, a m´edia das m´edias dos exerc´ıcios-programa e
a m´edia das m´edias finais;
• no final, o n´umero de alunos aprovados (com m´edia final maior ou igual a 5.0 e
freq¨uencia maior ou igual a 75%), o n´umero de alunos que ficaram de recupera¸c˜ao
(com m´edia final maior ou igual a 3.0 e menor que 5.0 e freq¨uencia maior ou igual
a 75%) e o n´umero de reprovados (com m´edia final menor que 3.0 ou freq¨uencia
menor que 75%).
Exemplo de sa´ıda (para o arquivo de entrada j´a visto):
Nome p1 p2 p3 mp ep1 ep2 ep3 ep4 ep5 mep mf fm
Cassandra Avestruz da Silva 5.0 6.6 4.2 5.3 10.0 9.0 8.0 7.0 6.0 7.4 6.7 94.9
Roberto Carlos 2.0 1.5 3.2 2.3 0.0 5.0 0.0 6.0 6.5 4.1 3.5 79.5
Ronaldinho Gaucho 8.0 3.0 7.7 5.9 9.5 8.0 10.0 9.5 9.0 9.3 8.1 46.2
Medias 5.0 3.7 5.0 4.5 6.5 7.3 6.0 7.5 7.2 6.9 6.1
Aprovados: 1
Recuperacao: 1
Reprovados: 1
Editado por Jonathan QueirozTítulo editado conforme regra 3.6 (Jonathan)
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.