Criando uma função matricial em linguagem C

Iniciado por LucasUFG, 17 de Outubro de 2013, 15:47

tópico anterior - próximo tópico

LucasUFG

 Usuários do Fórum Ubuntu

Tenho uma grande dúvida em respeito a tal função matricial, o que quero e fazer em linguagem C uma função capaz de criar uma matriz de ordem mxn com m e n inteiros >0, não tenho a minina ideia de como fazer isso, gostaria de algumas dicas e sugestões dos usuários do fórum ubuntu.

Att

Lucas Xavier

Aguardo respostas

irtigor

Seria melhor visto, se desse uma olhada no vasto material disponível por ai, e depois aparecesse com duvidas mais especificas. De qualquer forma, que tipo de ajuda - exatamente - você espera?

lucaspittas

Eu já dei uma olhada, um dos problemas seria como definir uma função para se criar uma matriz de ordem mxn, pois para declarar como uma variavel sua dimensão deve ser finita, e logo tenho essa dúvida como criar uma função em c que retorna uma matriz mxn?

irtigor

#3
Não ficou muito claro, você pode alocar/realocar¹ dinamicamente o espaço, mas a estrutura vai sempre ter dimensão finita.

----------
*Funções: calloc, malloc, realloc...

simon

Eu acho que o que você precisa é um programa do tipo

#include <stdio.h>
#include <stdlib.h>

typedef float ** matriz; //Define um tipo para matrizes

matriz cria_matriz(int m, int n) {
matriz a;
int i;
a = malloc(m*sizeof(float *));
for (i = 0; i < m; i++) a[i] = malloc(n*sizeof(float));
return(a);
}

int main(int argc, char **argv)
{
matriz x = cria_matriz(2, 2);
x[0][0] = 1;
x[0][1] = 0.5;
x[1][0] = -2.5;
x[1][1] = 0.36;
printf("Soma = %f\n", x[0][0] + x[0][1] + x[1][0] + x[1][1]);
return(0);
}


Observe que o que esse código faz é definir um tipo de variável chamado matriz, que nada mais é do que um ponteiro duplo para float, cria uma função para retornar uma matriz já alocada e o programa principal testa essa função.
Espero ter ajudado.

zekkerj

Simon, você chegou a testar esse código? Pq eu tenho a impressão que não vai funcionar como o esperado... vc não está criando uma matriz m x n, e sim um array de m ponteiros para arrays de tamanho n...
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D