Ir ao conteúdo
  • Cadastre-se

Importar dados não inteiros .txt para c++


Testa38

Posts recomendados

Não tem muito mistério. Primeiro abrir o arquivo


std::fstream arquivo("[COLOR="Blue"]matriz.txt[/COLOR]", std::fstream::in);

Os dados no arquivo devem estar organizados no esquema de linhas. Ou seja, numa matriz do tipo


1 2
3 4

no arquivo, os elementos devem estar no formato


1 2 3 4

Daí, sabendo previamente as dimensões da matriz, basta ler o arquivo num duplo for():


double matriz[[COLOR="blue"]total_de_linhas[/COLOR]][[COLOR="blue"]total_de_colunas[/COLOR]];
for(unsigned int i = 0; i < [COLOR="blue"]total_de_linhas[/COLOR]; ++i)
{
for(unsigned int j = 0; j < [COLOR="blue"]total_de_colunas[/COLOR]; ++j)
{
arquivo >> matriz[i][j];
}
}

Se você quiser, a matriz pode ser também declarada como uma grande linha (um vetor). Fica mais fácil de trabalhar até.

Ao invés de


double matriz[[COLOR="blue"]total_de_linhas[/COLOR]][[COLOR="blue"]total_de_colunas[/COLOR]];

você poderia declara-la assim


double matriz[[COLOR="blue"]total_de_linhas[/COLOR]*[COLOR="blue"]total_de_colunas[/COLOR]];

E os elementos podem ser acessados por


matriz[i*[COLOR="blue"]total_de_linhas[/COLOR] + j]

Link para o comentário
Compartilhar em outros sites

Não consegui V!OLADOR ... estou utilizando a função fscanf para importar o arquivo de números decimais e a parte do meu código que preciso solucionar é:

FILE* data2;

data2=fopen("T3.txt","r");

for(i=1; i<=a-1; i++)

{

for(j=1; j<=2; j++)

{

fscanf(data2,"%d",&L4[j]);

}

}

fclose(data2);

Obrigado!!!

Link para o comentário
Compartilhar em outros sites

Não consegui V!OLADOR ... estou utilizando a função fscanf para importar o arquivo de números decimais e a parte do meu código que preciso solucionar é:

FILE* data2;

data2=fopen("T3.txt","r");

for(i=1; i<=a-1; i++)

{

for(j=1; j<=2; j++)

{

fscanf(data2,"%d",&L4[j]);

}

}

fclose(data2);

Obrigado!!!


for([COLOR="Red"]i=1[/COLOR]; i<=a-1; i++)
{
for([COLOR="red"]j=1[/COLOR]; j<=2; j++)
{
fscanf(data2,"%d",&L4[i][j]);


}
}

Certeza que os índices i e j vão iniciar no valor 1? caso não esteja fazendo conscientemente, eles deveriam começar no zero e terminar em < a ou <= (a - 1).

Bom, de qualquer maneira, poste o erro do compilador.

Link para o comentário
Compartilhar em outros sites

Meu arquivo que preciso importar é composto por números decimais, ou seja, por exemplo, 0.933, 0.56, etc ...

Utilizando o código acima, o que ele imprime é apenas 0 ao invés de 0.933 ...

Preciso imprimir os números do arquivo, sendo eles do tipo double.

Precisa estudar, não saber que a máscara do scanf está setada pra integral é osso. O cara colocou apenas para te orientar.

E isso que você está escrevendo é C e não C++. C++ é o 1° post dele.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...