Ir ao conteúdo

Posts recomendados

Postado

Amigos, estou tentando implementar um código que recebe dados de uma planilha e armazena em uma matriz para manipular os dados mais tarde, no entanto, nunca realizei nenhum código que recebe um .csv, então gostaria apenas de colar os dados direto no terminal:

  

#include <iostream>
using namespace std;

int main()
{
   int i,j,n; //parâmetros para for
   float matriz[10][3];
   float data[29]; //possível vetor para armazenar a entrada
   bool msg = false; //exibe a matriz no fluxo de saída

 ///MATRIZ SETTING
   for(i=0 ; i<9 ; i++){
      for (j=0 ; j<3 ; j++){
         matriz[i][j] = 0;
         if(msg == true) cout << " " << matriz[i][j];
      }
         if(msg == true) cout << endl;py
    }
   
///END

    ///READ DATA
   cin >> data[n];


    return 0;
}

 

 

A entrada de dados:
image.png.27c87e011646213e65c51742a9cd6df8.png

 

Citação

62 66.0 2.1 
59 113.2 1.3
47 94.2 1.7
21 85.2 2.0
56 54.2 2.1
70 95.5 1.3
69 113.9 2.0
58 66.5 1.0
24 53.5 0.9
62 57.5 0.8

 

  • São 3 colunas e 10 linhas separados por um backspace. 
  • Minha ideia inicial, seria criar um vetor para armazenar todos os valores, e depois separar cada um para matriz.
  • Alguém conhece alguma forma mais eficiente para esse problema?


Gratidão!

Postado
46 minutos atrás, Guilherme Serako disse:

São 3 colunas e 10 linhas separados por um backspace

 

? Fala sério sobre esse separador? Vai dar trabalho para ler isso. Esses caracteres (backspace) são de edição e não são lidos pelo programa sem reconfigurar umas coisas.

 

Se é um csv sugiro manter como tal. Eu postei vários programas desse tipo aqui nesse forum em '19 ou '20 eu acho. Em geral eu posto o programa completo, com saída e dados de entrada. Pode pesquisar no meu conteúdo aqui e encontrar algo que ajude. Eu não achei agora.  Vou ver depois.

 

A maneira mais simples de ler de um arquivo csv é ler linha a linha, e usar sscanf() na linha, assim pode tratar uma eventual perda de sincronismo na entrada.

 

 

 

 

Tem um programa pequeno que eu postei em '20, no inicio de julho. Pode achar o tópico a partir da data. Não me lembro de nada quase.

 

Mas está em https://github.com/ARFNeto-CH/chc20-0704-acsv onde pode ver e baixar até com arquivos de teste. Era um programa em C para ajudar alguém. Em C++ seria mais simples.

 

 

Postado
Em 26/08/2021 às 20:16, Guilherme Serako disse:

então gostaria apenas de colar os dados direto no terminal:

você já viu a função sscanf?
Acho que ela poderia te ajudar.
Se você usar um scanf normal pra colar tudo o que quer, na sequencia você usa um sscanf pra pegar as variaveis que você querseparadinhas e bonitinhas.

Postado

Olha isso:
 


#include <stdio.h>
int main()
{
	float matriz[4][3];
	//char *s = (float *) malloc(10*3*sizeof(float)); // se não usar malloc:
	char s[255];

	printf("Cole os valores:\n");
	gets(s);
	printf("\n");

	//cole os dados:
	//62.0 66.0 2.1, 59.0 113.2 1.3, 47.0 94.2 1.7, 21.0 85.2 2.0

	sscanf(s, "%f %f %f, %f %f %f, %f %f %f, %f %f %f", 
	&matriz[0][0],&matriz[0][1],&matriz[0][2],
	&matriz[1][0],&matriz[1][1],&matriz[1][2],
	&matriz[2][0],&matriz[2][1],&matriz[2][2],
	&matriz[3][0],&matriz[3][1],&matriz[3][2] );

	for(int i=0; i<4; i++)
	{
		for(int j=0; j<3; j++)
		{
			if(j==0)
			printf("%0.0f ", matriz[i][j]);
			else
			printf("%0.1f ", matriz[i][j]);
		}
		printf("\n");
	}
	//free(s); // se usar malloc
	return 0;
}


Não tá completo, não é exatamente como definiu, mas é só adaptar o exemplo para o que quer.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!