Matriz como parâmetro C++ [RESOLVIDO]

1. Matriz como parâmetro C++ [RESOLVIDO]

Márcia Aparecida Nasaré Silva
marciasilva

(usa Ubuntu)

Enviado em 09/04/2011 - 10:38h

OI...

Preciso de passar uma matriz como parâmetro onde quem define o tamanho é o usuário.
Criei uma função como abaixo:

funcao(int **solucao, int **valores);

só que não funciona.

Fiz a chamada do metodo assim:
funcao(solucao[2][x],val[2][x]).

onde estou errando??



  


2. Re: Matriz como parâmetro C++ [RESOLVIDO]

Elder Marco
eldermarco

(usa Fedora)

Enviado em 09/04/2011 - 10:58h

Você está passando um valor e não um ponteiro. Além do mais, se vai passar somente uma linha da matriz bidimensional, você pode simplesmente declarar a função assim:

tipo funcao(int *solucao, int *valores);

E chamar ela assim:

funcao(solucao[linha], valores[linha]);

Isso será um ponteiro para a o primeiro elemento da linha especificada.


3. Re: Matriz como parâmetro C++ [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 09/04/2011 - 11:00h

Você quer redefinir o tamanho de um vetor? Se sim, você vai precisar de alocação dinâmica. Em C++ é basicamente isso:

int* _myVar = 0;
_myVar = new int[20];
delete[] _myVar;

_myVar = new int[50];

agora se você está confundindo C com C++ aí já é outra história. Em C usa-se a função malloc(), presente no cabeçalho stdlib.h.


4. Explicando melhor

Márcia Aparecida Nasaré Silva
marciasilva

(usa Ubuntu)

Enviado em 09/04/2011 - 11:31h

Estou fazendo o código em c++.
Tenho que comparar os valores de duas matrizes. As matrizes têm exatamente 2 linhas, mas o numero de colunas é fornecido pelo usuário.
Como terei que comparar várias vezes as duas matrizes, estou tentando criar uma funcao que faça isso.
Então tenho que passar duas matrizes como parâmetro.

Espero ter explicado melhor agora
^^


5. Re: Matriz como parâmetro C++ [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 09/04/2011 - 11:36h

Bem, então você pode se basear em meu exemplo para definir o tamanho dela, e usar uma estrutura como for ou while para fazer a repetição.


6. Re: Matriz como parâmetro C++ [RESOLVIDO]

Elder Marco
eldermarco

(usa Fedora)

Enviado em 09/04/2011 - 11:37h

Então passe o número de colunas como argumento para a função ou tente usar algum sentinela para garantir que chegou até o final dela! Se passar o número de colunas, lembre-se também de garantir que a matriz terá esse número de colunas


7. Re: Matriz como parâmetro C++ [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 09/04/2011 - 11:38h

"Então passe o número de colunas como argumento para a função ou tente usar algum sentinela para garantir que chegou até o final dela! Se passar o número de colunas, lembre-se também de garantir que a matriz terá esse número de colunas"

Como ele vai passar o número de colunas como argumento se este será fornecido pelo usuário?


8. Re: Matriz como parâmetro C++ [RESOLVIDO]

Elder Marco
eldermarco

(usa Fedora)

Enviado em 09/04/2011 - 11:42h

Oras, se o usuário fornece o número de colunas antes da chamada da função, é apenas passar o argumento. Dentro da função não teria como mesmo, mas pode-se pegar o número de colunas dentro dela e usar da mesma maneira.


9. Matriz

cleidson
cleidsondevelope

(usa Outra)

Enviado em 09/04/2011 - 11:46h

O erro pode estar ocorrendo por que você não definiu os indíces que ira contar certamente as colunas respectivas da matriz,
mas nesse casso uma matriz quadrada teria o mesma quantidades de linhas com as mesmas quantidades de colunas, pode estar dando erro também nessa parte, onde o numero de colunas e diferente ao respectivo numeros de linhas,
mas em caso a logica estiver certa,
utilize indice nas suas estruturas, tanto nas que for receber que o usuario estar passando, quanto nas que ira comparar, sendo a mesma passada por parametros como vetores (int solucao[][], int valores[][])





10. matrizes por parâmeto

Victor Henrique dos Santos
victor@2105

(usa Outra)

Enviado em 07/09/2011 - 22:33h

Olha não tenho certesa se é isso q voc quer mas, primeiro voc deveria pedir o tamanho, depois passar a variavel com o tamanho como parâmetro.
Por exemplo:

/* passando por parâmetro uma matriz quadrada*/

Um Ex. em c e outro em c++;

/* c */

#include <stdio.h>
void ler(int n, int v[n][n]);

int main()
{
int a;
scanf("%d", &a);
int b[a][a];
ler(a, b);
}

void ler(int n, int v[n][n]){
int i, j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d", &v[i][j]);
}

/* c++ */

#include <iostream>
using namespac std;

void ler(int n, int v[n][n]);

int main()
{
int a;
cin >> a;
int b[a][a];
ler(a, b);
}

void ler(int n, int v[n][n]){
int i, j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin >> v[i][j];
}






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts