C/Visual C - Urgente - Violacion de segmento

 
Vista:

Urgente - Violacion de segmento

Publicado por Fiber (1 intervención) el 05/04/2005 17:31:29
Hola a todos, soy nuevo aki, y os cuento mi problema.
Programo en C++ en Linux, y me aparece una violacion de segmento en un bucle que esta bien implementado. Si alguien me puede ayudar gracias, aki adjunto los archivos que componen mi programa:

Matriz_basico.h
_______________

#ifndef matriz_basico
#define matriz_basico

struct Matriz {
int **m;
int filas;
int columnas;
};

void CrearMatriz (Matriz & m, int f, int c);
int FilasMatriz (const Matriz & m);
int ColumnasMatriz (const Matriz & m);
void SetMatriz (Matriz & m, int i, int j, int v);
int GetMatriz (const Matriz & m, int i, int j);
void DestruirMatriz (Matriz & m);

#endif

Matriz_basico.cpp
_________________

#include <iostream>
#include "matriz_basico.h"

void CrearMatriz (Matriz & m, int f, int c){
m.filas = f;
m.columnas = c;
m.m = new int *[f];
for (int i=0; i<f; i++)
m.m[i] = new int [c];
for (int i=0; i<f; i++)
for (int j=0; j<c; j++)
m.m[i][j] = 0;
}

int FilasMatriz (const Matriz & m){
return m.filas;
}

int ColumnasMatriz (const Matriz & m){
return m.columnas;
}

void SetMatriz (Matriz & m, int i, int j, int v){
m.m[i][j] = v;
}

int GetMatriz (const Matriz & m, int i, int j){
int valor=0;
valor = m.m [i][j];
return valor;
}

void DestruirMatriz (Matriz & m){
int f=0;
f = m.filas;
for (int i=0; i<f; i++)
delete m.m[i];
delete m.m;
}

Matriz_adicional.h
__________________

#ifndef matriz_adicional
#define matriz_adicional

void LeerMatriz (Matriz & m);
void EscribirMatriz (const Matriz & m);
int Maximo (const Matriz & m);
int Minimo (const Matriz & m);

#endif


Matriz_adicional.cpp
____________________

#include <iostream>
#include "matriz_basico.h"
#include "matriz_adicional.h"

using namespace std;

void LeerMatriz (Matriz & m){
int valor=0;
cout << "Introduzca los elementos de la matriz: " << endl;
for (int j=0; j<FilasMatriz (m); j++){
for (int h=0; h<ColumnasMatriz (m); h++){
cout << "Elemento " << j+1 << "," << h+1 << ":";
cin >> valor;
SetMatriz (m, j, h, valor);

}
}
cout<<"si sale";
}

void EscribirMatriz (const Matriz & m){
int temporal=0, filas=0, columnas=0;
filas = FilasMatriz (m);
columnas = ColumnasMatriz (m);
for (int i=0; i<filas; i++){
for (int j=0; j<columnas; j++){
temporal = GetMatriz (m, i, j);
cout << temporal << "\t";
}
cout << "\n";
}
}

int Maximo (const Matriz & m){
int maximo=0, temporal=0, filas=0, columnas=0;
filas = FilasMatriz (m);
columnas = ColumnasMatriz (m);
for (int i=0; i<filas; i++){
for (int j=0; j<columnas; j++){
temporal = GetMatriz (m, i, j);
if (temporal > maximo)
maximo = temporal;
}
}
return maximo;
}

int Minimo (const Matriz & m){
int minimo=0, temporal=0, filas=0, columnas=0;
filas = FilasMatriz (m);
columnas = ColumnasMatriz (m);
for (int i=0; i<filas; i++){
for (int j=0; j<columnas; j++){
temporal = GetMatriz (m, i, j);
if (temporal < minimo)
minimo = temporal;
}
}
return minimo;
}

magica.cpp
___________

//este es el programa principal, voy a poner solo hasta donde falla

#include <iostream>
#include "matriz_basico.h"
#include "matriz_adicional.h"

using namespace std;

int main (){

Matriz magica;
int suma=0, mem=0, filas=0, columnas=0;
int *vector;
bool magica_bool=true;
cout << "Introduzca las dimensiones de la matriz: " << endl;
cin >> filas;
cin >> columnas;
CrearMatriz (magica, filas, columnas);
LeerMatriz (magica);
.
.
.
.
.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder