Matrizes passagem por valor ou referencia

1. Matrizes passagem por valor ou referencia

cezar vaz
cezarvaz

(usa Outra)

Enviado em 14/07/2016 - 22:09h

Boa noite pessoal!
Estou tentando passar uma matriz do main para o calc.cpp e criei o calc.hpp mas não compila
Alguém manja este procedimento?
desde já agradeço!
seguem os códigos:
main.cpp
#include <iostream>
#include "calc.hpp"
using namespace std;

int main(){
double **vetor;
int lin = 3;
int col = 8;
for ( int i = 0; i < lin; i++ ){
for ( int j = 0; j < col; j++ ){
vetor[i][j] = 3;
}
}
calc(vetor, lin,col);

for ( int i = 0; i < lin; i++ ){
for ( int j = 0; j < col; j++ ){
cout<<vetor[i][j]<<"\t";
}
cout<<endl;
}
}

calc.cpp
#include <iostream>
#include <fstream>
#include <sstream>
#include <stdlib.h>
using namespace std;
void calc (double **lista, int & linha, int & coluna) { // recebe os agumentos
for ( int i = 0; i < linha; i++ ){
for ( int j = 0; j < coluna; j++ ){
lista[i][j] *= 10;
}
}

}
calc.hpp
#ifndef CALC_H
#define CALC_H

void calc(double **lista, int & linha, int & coluna); // protótipo da função

#endif //CALC_H





  


2. Re: Matrizes passagem por valor ou referencia

Paulo
paulo1205

(usa Ubuntu)

Enviado em 15/07/2016 - 13:47h

cezarvaz escreveu:

Boa noite pessoal!
Estou tentando passar uma matriz do main para o calc.cpp e criei o calc.hpp mas não compila


Se não compila, o compilador deve ter dado uma (ou mais) mensagem de erro, dizendo exatemante em qual ponto do código ele percebeu o erro. Seria bom você mostrar essa mensagem aqui, para facilitar nossa visa e não ter se varrer o código todo à cata de erros.

Alguém manja este procedimento?
desde já agradeço!
seguem os códigos:
main.cpp
#include <iostream>
#include "calc.hpp"
using namespace std;

int main(){
double **vetor;


Nome infeliz. Geralmente, o nome “vetor” sugere um array de apenas uma dimensão. Abaixo, você usa uma estrutura bidimensional (linhas e colunas), muito mais parecida com uma matriz do que com um vetor.

    int lin = 3;
int col = 8;
for ( int i = 0; i < lin; i++ ){
for ( int j = 0; j < col; j++ ){
vetor[i ][j] = 3;


Cadê a alocação de memória para os ponteiros antes de começar a popular com dados?

		}    	
}
calc(vetor, lin,col);

for ( int i = 0; i < lin; i++ ){
for ( int j = 0; j < col; j++ ){
cout<<vetor[i ][j]<<"\t";
}
cout<<endl;
}
}


calc.cpp
#include <iostream>
#include <fstream>
#include <sstream>
#include <stdlib.h>
using namespace std;
void calc (double **lista, int & linha, int & coluna) { // recebe os agumentos
for ( int i = 0; i < linha; i++ ){
for ( int j = 0; j < coluna; j++ ){
lista[i ][j] *= 10;
}
}

}


calc.hpp
#ifndef CALC_H
#define CALC_H

void calc(double **lista, int & linha, int & coluna); // protótipo da função

#endif //CALC_H


Não vi nenhum erro acima que impeça a compilação. Já a execução certamente dará problema, porque você joga dados em regiões de memória desconhecidas, e muito provavelmente inválidas, o que, na melhor das hipóteses, fará o programa capotar.

Quando você trabalha com alocação dinâmica, você tem de alocar dinamicamente regiões de memória para os seus ponteiros, e, de igual modo, lembrar de desalocá-las quando não forem mais necessárias.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts