11 de março de 2009

Projeto I

Possível solução da atividade 2 por Jonatas Balmant
Clique Aqui para Baixar

/***************************************************************************************

Universidade do Vale do Paraiba - Ciencia da Computacao

Materia : Projeto I - Exercicio II

Professor : Valdir Gil Pillat

Autor : Jonatas Balmant

Descricao : Trabalho de Manipulacao de Dados

Data : 10 mar 2009

***************************************************************************************/

//----( Bibliotecas )------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

//----( Inicio do Programa )-----------------------------------------------------------

void main()
{

//----( Declaracoes )-----------------------------------------------------------

char szLinha[50];
char szTemp[10];
double dbMedias[3] = {0,0,0};
double hpF_hF[3] = {0,0,0};
int cont = 0;
int nLinha = 0;
char *p; //--- PONTERIO PARA szLinha ---
int i,j,tam;
FILE *in, *out;
clrscr();

printf("Iniciando Leitura de Arquivo...");

//---( ABERTURA DOS ARQUIVOS )---------------------------------------------

if((in = fopen("C:\\Arquivo.txt", "rt"))== NULL)

{
printf("Nao Achei o Arquivo");
return;

}
if((out = fopen("C:\\RESULT.txt", "wt"))==NULL)
{
printf("Nao Consegui Criar o Arquivo");
return;
}

//---( CABECALHO )--------------------------------------------------------------------------

memset(szLinha,'\0',sizeof(szLinha));
fgets(szLinha,11,in);
fputs(szLinha,out);
fgets(szLinha,19,in);
fputs(szLinha,out);
fgets(szLinha,38,in); szLinha[35] = '\0';
fputs(szLinha, out);
sprintf(szLinha,"\thpF2-h'F\n");
fputs(szLinha, out);

//---( DADOS )-------------------------------------------------------------------------------

while((fgets(szLinha, 35, in))!= NULL)
{
hpF_hF[0] = 0; hpF_hF[1] = 0; hpF_hF[2] = 0;
nLinha++;
p = szLinha; //--- PONTEIRO PARA LINHA ---
cont=0;
//--- LOOP ATE ENCONTRAR O SEGUNDO "TAB" DA LINHA, POSICIONANDO O PONTEIRO NO LOCAL CERTO PARA O INICIO DA COLETA DOS DADOS

for(i = 0; i < 20; i++)
{
p++;
if(p[0] == '\t')
{
cont++;
if(cont == 2) { p++; break; }
}
}
memset(szTemp,'\0',sizeof(szTemp));
for(j = 0; j < 3; j++)
{
cont = 0;
for(i = 0; i < 10; i++)
{
if((p[i] == '\t') || (p[i] == '-'))
break;
cont++;
}

if((p[0] == '\t') || (p[0] == '-'))
{
dbMedias[j] = dbMedias [j] + 0;
p+=2;
}
else
{
strncpy(szTemp, p, cont);
szTemp[cont] = '\0';
hpF_hF[j] = atof(szTemp);
dbMedias[j] = dbMedias[j] + atof(szTemp);
p = p + (cont+1);
}
}
tam = strlen(szLinha);
if(szLinha[tam-1] == '\n') szLinha[tam-1] = '\0'; //--- RETIRA O CARACTER '\n' ---
fputs(szLinha,out);
sprintf(szLinha,"\t%5.0f\n",(hpF_hF[2] - hpF_hF[0]));
fputs(szLinha,out);
}

//---( RODAPE )---------------------------------------------------------------------------

sprintf(szLinha,"Medias\t\t%.1f\t%.1f\t%.1f\t\t\t%7.1f",dbMedias[0]/nLinha,dbMedias[1]/nLinha, dbMedias[2]/nLinha,(dbMedias[2] - dbMedias[0])/nLinha);
fputs(szLinha,out);
fclose(in);
fclose(out);
textcolor(10);
cprintf("\nArquivo \'Resultado\' Gerado com Sucesso!!");
getch();
}