
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;
}
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Ativando e usando "zoom" no ambiente Cinnamon
Vídeo Nostálgico de Instalação do Conectiva Linux 9
Como realizar um ataque de força bruta para desobrir senhas?
780 mil usuários do Janelas baIxaram Linux em um mês (3)
Servidor para arquivos e banco de dados (2)
Atualizei meu ubuntu e desliguei e ele não inicia corretamente (12)









