Jump to content

Recommended Posts

Posted

como alocar matriz dinamicamente?

e como faço para ler dados de um ficheiro para cada posiçao da matriz sabendo que a linha é assim:

linha: 1452314(valor varia), M, 0.46546, 0.45785, ...?

sei que o fscanf faz da para ler ate "," mas nao sei como se faz.

Posted

hehe ...

Faltaste a aula onde isso foi explicado?

Os teus colegas nao te emprestam os apontamentos?

Para alocacao dinamica usa malloc() ou calloc() ou realloc(); nao te esquecas de libertar os recursos quando ja nao precisares deles, com free().

Para leres numeros de virgula flutuante (tipo double) com o scanf() usa a conversao "%lf".

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted

nao é isso por acaso nao me lembro de fazer nada com matrizes dinamicas e a cena da virgula é dos para separar para onde dados vao os dados 123565-> M[0][0]

M->[0][1] 0.545232->M[0][2]

Posted (edited)

O scanf() descreve mais ou menos o que se quer ler (e ignorar).

Para o teu exemplo concreto queres:

a) ler um valor de tipo double, possivelmente com espacos antes

b) ignorar uma virgula, um espaco, um 'M', uma virgula

c) ler um valor de tipo double, possivelmente com espacos antes

d) ignorar uma virgula

e) ler um valor de tipo double, possivelmente com espacos antes

f) verificar que as leituras e "ignoracoes" estao de acordo com a especificacao

Isso faz-se com

int check;
check = scanf("%lf, M,%lf,%lf", &M[0][0], &M[0][1], &M[0][2]);
if (check != 3) /* erro na leitura */;

Outra maneira mais potente, no que respeita a tratamento e recuperacao de erros u usar fgets() para ler uma linha completa com ENTER e tudo, depois tratar essa linha com sscanf(), strtod() ou directamente caracter a caracter.

Edited by pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted

ok se eu ler a linha toda para uma string como faço para meter os valores na matriz string fica : "123546,M,0.464,0.214,0.154..." quero ler o 123546 para M[0][0] M para M[0][1] 0.464 para M[0][2] etc.

Posted

ok se eu ler a linha toda para uma string como faço para meter os valores na matriz ...

O sscanf() usa-se de maneira muito parecida com o scanf(). O meu exemplo acima com o scanf aplica-se quase sem alteracao para o sscanf(). A diferenca é que com o sscanf() tens acesso a string original e podes usa-la para explicar o erro ao utilizador.

... quero ler o 123546 para M[0][0] M para M[0][1] 0.464 para M[0][2] etc.

Eh la ... nao podes ter tipos de dados diferentes em elementos distintos da matriz: ou sao todos valores de tipo double, ou sao todos caracteres, ou sao todos strings.

Nao estas a confundir a matriz (ou array de arrays) com um mais simples array de estruturas?

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted

O sscanf() usa-se de maneira muito parecida com o scanf(). O meu exemplo acima com o scanf aplica-se quase sem alteracao para o sscanf(). A diferenca é que com o sscanf() tens acesso a string original e podes usa-la para explicar o erro ao utilizador.

Eh la ... nao podes ter tipos de dados diferentes em elementos distintos da matriz: ou sao todos valores de tipo double, ou sao todos caracteres, ou sao todos strings.

Nao estas a confundir a matriz (ou array de arrays) com um mais simples array de estruturas?

se encontrar o M tem de meter na matriz um 1 se encontra B mete 0

Posted

Em vez de usares M explicito no scanf() (ou sscanf()) usa %c e mete numa variavel temporaria.

Depois, com um if, detecta se nessa variavel esta um 'M' ou um 'B' e actualiza o elemento do array de acordo com a situacao.

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted (edited)
while (!feof(fp)) {

                fgets(aux,250,fp);
                pch = strtok (aux, ",");

                while (pch != NULL)
                {
                    M[i][j] = atof(pch);
                    pch = strtok (NULL, ",");
                    break;
                    j++;
                }
                i++;
                break;
        }
/* M matriz de floats */

alguem me consegue ajudar a passar os dados lidos das linhas para a matriz ?

Edited by pmg
falta de LP

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.