
Enviado em 16/03/2017 - 22:02h
Eae pessoal, estava fazendo um algoritmo pra ler os dados de um arquivo separado por vírgula, passar esses dados para uma matriz do tipo float para poder realizar contas com os dados do arquivo. Então usei a função fgets pra pegar cada linha e percorre-la de virgula em virgula, salvando os valores em uma variável (char) e depois convertendo essa variável para uma outra variável tipo float, mas a função atof() está modificando alguns valores na hora da conversão. Exemplo:#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<locale.h>
#include<string.h>
float** alocamatriz(float **m, int l, int c){
int cont;
m=(float**)malloc(sizeof(float*)*l);
for(cont=0;cont<l;cont++){
m[cont]=(float*)malloc(sizeof(float)*c);
}
return m;
}
int main(){
FILE *arq,*arquivo;
char vetor[5000],*valor,*valor2,vetor2[5000];
float **m,ventomedio,soma=0,aux=-999.989990,vento,v,z;
int l=0,c=0,cont,linha=0,coluna;
//Leitura do coeficiente
printf("Digite o valor de z:");
scanf("%f",&z);
//Abertura do arquivo
arq = fopen("Dados.txt","rt");
if(arq==NULL){
printf("Erro na abertura do arquivo!\n");
exit(0);
}
//Verificação do arquivo para saber o numero de linhas e colunas(Necessario na alocação da matriz)
while (fgets(vetor, sizeof(vetor), arq)){
valor = strtok(vetor,",");
while (valor != NULL){
valor = strtok(NULL, ",");
if(l==0){
c++;
}
}
l++;
}
//Alocação da matriz
m=alocamatriz(m,l,c);
fclose(arq);
//Reabertura do arquivo
arq = fopen("Dados.txt","rt");
if(arq==NULL){
printf("Erro na abertura do arquivo!\n");
exit(0);
}
//Passagem dos dados do arquivo para a matriz
while (fgets(vetor2, sizeof(vetor2), arq)){
valor2=strtok(vetor2, ",");
if(linha!=0){
m[linha][0]=atof(valor2);
}
coluna=1;
while (valor2 != NULL){
valor2 = strtok(NULL, ",");
if(linha!=0){
m[linha][coluna]=atof(valor2); //Revisar essa função
}
coluna++;
}
linha++;
}
// Calculo do vento medio, raiz(u^2+v^2)
for(linha=1;linha<l;linha++){
if(m[linha][8]!=aux && m[linha][9]!=aux){
vento=sqrt(pow(m[linha][8],2)+pow(m[linha][9],2)); // raiz de u^2+v^2
soma=soma+vento;
}
}
//Vento medio na altura de 3 metros
ventomedio=soma/(l-1);
//Cria o arquivo onde sera salvo o resultado
arquivo=fopen("Resultado.txt","wt");
//Simulações
for(cont=10;cont<=100;cont=cont+10){
v=ventomedio*(log(3/z)/log(cont/z));
fprintf(arquivo,"Vento medio a Altura de %dm: %f\n ",cont,v);
}
//Fecha os arquivos
fclose(arq);
fclose(arquivo);
system("pause");
return 0;
}
A combinação de WMs com compositores feitos por fora
Audacious, VLC e QMMP - que saudades do XMMS
SUNO OpenSource: Crie um servidor de gerador de música com IA
Instalação Completa e Configuração Básica do Void Linux
A Fundação da Confiança Digital: A Importância Estratégica de uma PKI CA na Segurança de Dados
Tenha opção de emblemas embutido no pcmanfm
Instalar o Microsoft Teams no Ubuntu e Derivados
Erro ao instalar o linux-headers (2)
O WiFi não reconhece minha rede depois que o processo de suspensão é r... (4)
Instalador não reconhece SSD Sata. (12)









