DUVIDA ARQUIVO.TXT

1. DUVIDA ARQUIVO.TXT

kamylla
mila001

(usa Outra)

Enviado em 03/04/2013 - 22:05h

Olá pessoal,
Estou com um trabalho em C que lê dados de um arq.txt e depois salva os calculos... pede-se os seguintes dados:

ex arq.txt:
6
30
40
60
80
45
24

a) A amplitude amostral
b) O número de classes
c) O limite das classes
d) As frequências absolutas das classes
e) As frequências relativas das classes
f) As frequências acumuladas (absolutas e relativas)
g) Os pontos médios das classes
h) As classes: modal e mediana

Consegui calcular os itens a,b,c e g... agora o restante estou com muita dificuldade...
Já ordenei todos os dados mais não consigo mais sair do lugar!
Segue abaixo o código que fiz.



#include<stdio.h>
#include<stdlib.h>
#include<math.h>

struct dados{

char vetAlturas [100][100];/* 1 : quantidade de registro , 2 : comprimento das strings*/
int qtdAlturas;
int *vetorInteiros; /*vetor para converter vetAlturas em inteiro*/

};

int leArquivo(){

struct dados *d;
float cont = 0;
int i;
int j;
float ptomedio;
int aux = 0; /* aux = variável que usaremos para guardar o maior valor de cada comparação*/
char nome_arquivo[20]; /*tamanho do array para o nome do arquivo*/


d=(struct dados*)malloc(1000*sizeof(struct dados)); /*Alocando a estrutura dados*/

if(!d){
printf("Erro ao alocar a memoria");
exit(1);
}

(*d).vetorInteiros=(int *) malloc((*d).qtdAlturas * sizeof(int)); /*Alocando o ponteiro vetorInteiros*/

if(!(*d).vetorInteiros){
printf("Erro ao alocar a memoria");
exit(1);
}

/*=================Código abrir arquivo txt e armazenar registros no vetor=================*/

FILE *arq_alturas;

printf("\tInforme o nome do arquivo texto que deseja abrir:\n");
printf("\t(exemplo: arq.txt): ");
scanf("%s", nome_arquivo);
arq_alturas = fopen(nome_arquivo,"r"); /*abrindo para leitura arq.txt*/
if(arq_alturas == NULL)
{
printf("erro ao ler arquivo!");
}
else
{
(*d).qtdAlturas = 0;
while(fgets((*d).vetAlturas[(*d).qtdAlturas], sizeof((*d).vetAlturas), arq_alturas)) /*a vetorização ocorre nessa linha*/
/*fgets le todos os caracteres do arquivo e tem como paramentros ( ponteiro para uma matriz, n max de caracteres, ponteiro p/ o arquivo)*/
{

(*d).qtdAlturas++;

}
}
fclose(arq_alturas);

/*=============================== Fim Função abrir arquivo==================================*/


/* primeiro for = esse for fará com que o a variável i percorra o vetor a ser ordenado, mas ela vai anda uma casa enquanto a variável j percorre o vetor todo,
ou seja i percorrerá apenas o tamanho do vetor e ja j percorrerá o tamanho do vetor vezes o tamanho do vetor*/


for (i = 0; i<(*d).qtdAlturas+1; i++)
{
(*d).vetorInteiros[i] = atoi((*d).vetAlturas[i]);
for (j = 0; j < (*d).qtdAlturas; j++)
{
if ((*d).vetorInteiros[i] < (*d).vetorInteiros[j])
{
/*aqui acontece a troca, do maior vai para a direita e o menor para a esquerda*/
aux = (*d).vetorInteiros[i];
(*d).vetorInteiros[i] = (*d).vetorInteiros[j];
(*d).vetorInteiros[j] = aux;
}
}
}


for (i=1;i<(*d).qtdAlturas;i++) /*le todos os dados a partir da primeira linha*/
{
(*d).vetorInteiros[i];
}

(*d).qtdAlturas = (*d).qtdAlturas-1; /*total de alturas será o total de dados (linhas) menos a primeira linha*/



/*=================Código salvar arquivo txt =================*/
limpar();

FILE *saida;

printf("\n\tInforme o nome do arquivo texto que deseja gravar (.txt):\n");
printf("\t(exemplo: arq.txt): ");
scanf("%s", nome_arquivo);
saida = fopen(nome_arquivo,"w"); /*para gravar arq.txt*/
if(saida == NULL)
{
printf("erro ao ler arquivo!");
}


/*item a*/
int amplitudeAmostral;
amplitudeAmostral = (*d).vetorInteiros[(*d).qtdAlturas] - (*d).vetorInteiros[1];
fprintf(saida,"\nAmplitude Amostral: %d\n",amplitudeAmostral);

/*item b*/
int numerodeclasses;
numerodeclasses = round((1 + 3.22f * log10((*d).qtdAlturas))); /*uma funçao usa a outra.*/
fprintf(saida,"\nNumero de Classes: %d\n",numerodeclasses);

/*item c*/
float limiteclasses;
limiteclasses = (amplitudeAmostral)/(numerodeclasses);
printf("\n\n");

/*item d*/

/*item e*/

/*item f*/

/*item h*/




/*item g*/


fprintf(saida,"\t\t\t\t\t\tTABELA DO ARQUIVO %s\n", nome_arquivo);

fprintf(saida,"\nClasses \t|\tP.Med\t|\tFreq.rel\t|\tFreq.rel.acm.\t|\tFreq.abs\t|\tFreq.abs.acm.\n");

cont = (*d).vetorInteiros[1];
for(i=0;i<numerodeclasses;i++){

fprintf(saida,"%0.0f-----",cont); /*cont iniciado como 0, o q sera o primeiro print.*/
cont = (limiteclasses+cont);
fprintf(saida,"%0.0f",cont);/*e aqui ele printa na frente.*/
ptomedio = (cont+cont-limiteclasses)/2;
fprintf(saida,"\t %3.2f\n",ptomedio);
}


}

int limpar(){ /* limpa ecran, limpa memória */
system("cls");
fflush(stdin);
}

int main(){

leArquivo();
system("pause");

}



  


2. Re: DUVIDA ARQUIVO.TXT

euteste da silva
foxbit3r

(usa Solaris)

Enviado em 06/04/2013 - 19:17h

Olá,
Boa tarde.

Se você informar como cada item deve ser calculado fica mais fácil de te ajudar.




3. Re: DUVIDA ARQUIVO.TXT

Perfil removido
removido

(usa Nenhuma)

Enviado em 06/04/2013 - 20:51h

Se frequência tiver a ver com número de repetições de um item, então trata-se de uma função de contagem de itens repetidos.
Aliás, é isso que chamam de moda, não é?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts