Viernes 8 de Noviembre de 2024, 15:54
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problema con punteros el O.S. cierra el programa
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Problema con punteros el O.S. cierra el programa (Leído 2097 veces)
tomas_sauron
Miembro activo
Mensajes: 56
Problema con punteros el O.S. cierra el programa
«
en:
Viernes 9 de Septiembre de 2011, 19:42 »
0
Buenas gtn tngo problemas con punteros es mi primera experiencia con ellos y c++ el programa es un producto de matrices con memoria dinamica pero cuando entra al tercer for de productoMatriz() el OS cierra el programa por lo poco que se debe estar tocando memoria q no db pero no veo bien el error si m pueden dar una mano mil gracias !! ak va el codigo :
Código: C++
*
*
Created on
:
04
/
09
/
2011
*
Author
:
tomas
*/
#include "reservaMemoria.h"
#include "ingresoDatos.h"
#include <string.h>
#include <iostream>
using
namespace
std
;
void
ingresoMatriz
(
int
**
A,
int
**
B,
int
&
filA,
int
&
colA,
int
&
filB,
int
&
colB
)
{
int
n
;
int
m
;
cout
<<
"Ingrese filas de A"
<<
endl
;
cin
>>
filA
;
cout
<<
"Ingrese columnas de A"
<<
endl
;
cin
>>
colA
;
int
datos
;
reservaMemoria
(
A,filA,colA
)
;
for
(
n
=
0
;
n
<
filA
;
n
++
)
{
for
(
m
=
0
;
m
<
colA
;
m
++
)
{
cout
<<
"ingrese datos matriz A["
<<
n
+
1
<<
","
<<
m
+
1
<<
"]"
<<
endl
;
cin
>>
datos
;
A
[
n
]
[
m
]
=
datos
;
}
}
for
(
int
n
=
0
;
n
<
filA
;
n
++
)
{
cout
<<
" "
<<
endl
;
for
(
int
m
=
0
;
m
<
colA
;
m
++
)
{
cout
<<
A
[
n
]
[
m
]
<<
" "
;
}
cout
<<
" "
<<
endl
;
}
cout
<<
" "
<<
endl
;
cout
<<
"Ingrese filas de B"
<<
endl
;
cin
>>
filB
;
cout
<<
"Ingrese columnas de B"
<<
endl
;
cin
>>
colB
;
reservaMemoria
(
B,filB,colB
)
;
for
(
n
=
0
;
n
<
filB
;
n
++
)
{
for
(
m
=
0
;
m
<
colB
;
m
++
)
{
cout
<<
"ingrese datos matriz B["
<<
n
+
1
<<
","
<<
m
+
1
<<
"]"
<<
endl
;
cin
>>
B
[
n
]
[
m
]
;
}
}
for
(
int
n
=
0
;
n
<
filB
;
n
++
)
{
cout
<<
" "
<<
endl
;
for
(
int
m
=
0
;
m
<
colB
;
m
++
)
{
cout
<<
B
[
n
]
[
m
]
<<
" "
;
}
cout
<<
" "
<<
endl
;
}
cout
<<
" "
<<
endl
;
}
Código: C++
/*
* productoMatricial.cpp
*
* Created on: 21/08/2011
* Author: tomas
*/
#include "reservaMemoria.h"
#include "constantes.h"
#include <iostream>
#include "productoMatricial.h"
using
namespace
std
;
void
productoMatriz
(
int
**
A,
int
**
B,
int
**
C,
int
filA,
int
colA,
int
filB,
int
colB
)
{
int
acumulador
;
reservaMemoria
(
C,filA,colB
)
;
if
(
filB
==
colA
)
{
for
(
int
n
=
0
;
n
<
filA
;
n
++
)
{
cout
<<
"Generando producto matricial..."
<<
endl
;
for
(
int
k
=
0
;
k
<
colB
;
k
++
)
{
C
[
n
]
[
k
]
=
0
;
acumulador
=
0
;
for
(
int
m
=
0
;
m
<
filB
;
m
++
)
{
//aca seria el problema !!
acumulador
=
(
(
A
[
n
]
[
m
]
)
*
(
B
[
m
]
[
k
]
)
)
;
C
[
n
]
[
k
]
=
acumulador
+
C
[
n
]
[
k
]
;
}
}
}
cout
<<
"Fin de Producto Matricial"
<<
endl
;
}
else
{
cout
<<
"El producto de matrices no es valido,dado que el numero de filas de B es distinto al numero de columnas de A"
<<
endl
;
return
;
}
}
Código: C++
/*
* reservaMemoria.cpp
*
* Created on: 04/09/2011
* Author: tomas
*/
#include "reservaMemoria.h"
#include <iostream>
using
namespace
std
;
int
**
reservaMemoria
(
int
fil,
int
col
)
{
int
**
p
;
p
=
new
int
*
[
fil
]
;
for
(
int
n
=
0
;
n
<
fil
;
n
++
)
{
p
[
n
]
=
new
int
[
col
]
;
}
return
p
**
;
}
Código: C++
/*
* menu.cpp
*
* Created on: 21/08/2011
* Author: tomas
*/
#include <iostream>
#include "menu.h"
#include "ingresoDatosAleatorios.h"
#include "ingresoDatos.h"
#include "mostrarResultado.h"
#include "productoMatricial.h"
using
namespace
std
;
void
menu
(
)
{
int
i
=
-
1
;
int
filA,colA,filB,colB
;
int
**
A
;
int
**
B
;
int
**
C
;
while
(
i
!
=
0
)
{
cout
<<
"***********MENU***********"
<<
endl
;
cout
<<
"*1:Ingreso de datos manualmente******"
<<
endl
;
cout
<<
"*2:Ingreso de datos aleatorios*******"
<<
endl
;
cout
<<
"*3:Producto Matricial****************"
<<
endl
;
cout
<<
"*4:Mostrar Resultado*****************"
<<
endl
;
cout
<<
"*0:Salir*****************************"
<<
endl
;
cin
>>
i
;
switch
(
i
)
{
case
1
:
ingresoMatriz
(
A,B,filA,colA,filB,colB
)
;
break
;
//case 2:ingresoAleatorio(A,B,maxColA,maxColB,maxFilA,maxFilB);break;
case
3
:
productoMatriz
(
A,B,C,filA,colA,filB,colB
)
;
break
;
//case 4:mostrarResultado(C,colA,filB);break;
}
}
cout
<<
"Bye!!"
<<
endl
;
}
espero m puedan dar una mano !!
saludos !!
Tweet
alexg88
Miembro activo
Mensajes: 37
Re:Problema con punteros el O.S. cierra el programa
«
Respuesta #1 en:
Domingo 18 de Septiembre de 2011, 21:36 »
0
Aunque seguramente sea muy tarde, dejo la solución a los problemas:
Código: C++
//#include <stdio.h>
//#include <string.h>
#include <iostream>
using
namespace
std
;
#define INTENTOS 3
int
**
reservaMemoria
(
int
fil,
int
col
)
{
int
**
p
;
p
=
new
int
*
[
fil
]
;
for
(
int
n
=
0
;
n
<
fil
;
n
++
)
{
p
[
n
]
=
new
int
[
col
]
;
}
return
p
;
}
void
ingresoMatriz
(
int
**
&
A,
int
**
&
B,
int
&
filA,
int
&
colA,
int
&
filB,
int
&
colB
)
{
int
n
;
int
m
;
cout
<<
"Ingrese filas de A"
<<
endl
;
cin
>>
filA
;
cout
<<
"Ingrese columnas de A"
<<
endl
;
cin
>>
colA
;
int
datos
;
A
=
reservaMemoria
(
filA,colA
)
;
for
(
n
=
0
;
n
<
filA
;
n
++
)
{
for
(
m
=
0
;
m
<
colA
;
m
++
)
{
cout
<<
"ingrese datos matriz A["
<<
n
+
1
<<
","
<<
m
+
1
<<
"]"
<<
endl
;
cin
>>
datos
;
A
[
n
]
[
m
]
=
datos
;
}
}
for
(
int
n
=
0
;
n
<
filA
;
n
++
)
{
cout
<<
" "
<<
endl
;
for
(
int
m
=
0
;
m
<
colA
;
m
++
)
{
cout
<<
A
[
n
]
[
m
]
<<
" "
;
}
cout
<<
" "
<<
endl
;
}
cout
<<
" "
<<
endl
;
cout
<<
"Ingrese filas de B"
<<
endl
;
cin
>>
filB
;
cout
<<
"Ingrese columnas de B"
<<
endl
;
cin
>>
colB
;
B
=
reservaMemoria
(
filB,colB
)
;
for
(
n
=
0
;
n
<
filB
;
n
++
)
{
for
(
m
=
0
;
m
<
colB
;
m
++
)
{
cout
<<
"ingrese datos matriz B["
<<
n
+
1
<<
","
<<
m
+
1
<<
"]"
<<
endl
;
cin
>>
B
[
n
]
[
m
]
;
}
}
for
(
int
n
=
0
;
n
<
filB
;
n
++
)
{
cout
<<
" "
<<
endl
;
for
(
int
m
=
0
;
m
<
colB
;
m
++
)
{
cout
<<
B
[
n
]
[
m
]
<<
" "
;
}
cout
<<
" "
<<
endl
;
}
cout
<<
" "
<<
endl
;
}
void
productoMatriz
(
int
**
A,
int
**
B,
int
**
C,
int
filA,
int
colA,
int
filB,
int
colB
)
{
int
acumulador
;
C
=
reservaMemoria
(
filA,colB
)
;
if
(
filB
==
colA
)
{
for
(
int
n
=
0
;
n
<
filA
;
n
++
)
{
cout
<<
"Generando producto matricial..."
<<
endl
;
for
(
int
k
=
0
;
k
<
colB
;
k
++
)
{
C
[
n
]
[
k
]
=
0
;
acumulador
=
0
;
for
(
int
m
=
0
;
m
<
filB
;
m
++
)
{
//aca seria el problema !!
acumulador
=
(
(
A
[
n
]
[
m
]
)
*
(
B
[
m
]
[
k
]
)
)
;
C
[
n
]
[
k
]
=
acumulador
+
C
[
n
]
[
k
]
;
}
}
}
cout
<<
"Fin de Producto Matricial"
<<
endl
;
}
else
{
cout
<<
"El producto de matrices no es valido,dado que el numero de filas de B es distinto al numero de columnas de A"
<<
endl
;
return
;
}
}
void
menu
(
)
{
int
i
=
-
1
;
int
filA,colA,filB,colB
;
int
**
A
=
NULL
;
int
**
B
=
NULL
;
int
**
C
=
NULL
;
while
(
i
!
=
0
)
{
cout
<<
"***********MENU***********"
<<
endl
;
cout
<<
"*1:Ingreso de datos manualmente******"
<<
endl
;
cout
<<
"*2:Ingreso de datos aleatorios*******"
<<
endl
;
cout
<<
"*3:Producto Matricial****************"
<<
endl
;
cout
<<
"*4:Mostrar Resultado*****************"
<<
endl
;
cout
<<
"*0:Salir*****************************"
<<
endl
;
cin
>>
i
;
switch
(
i
)
{
case
1
:
ingresoMatriz
(
A,B,filA,colA,filB,colB
)
;
break
;
//case 2:ingresoAleatorio(A,B,maxColA,maxColB,maxFilA,maxFilB);break;
case
3
:
productoMatriz
(
A,B,C,filA,colA,filB,colB
)
;
break
;
//case 4:mostrarResultado(C,colA,filB);break;
}
}
cout
<<
"Bye!!"
<<
endl
;
}
int
main
(
)
{
menu
(
)
;
}
ProfesorX
Moderador
Mensajes: 796
Nacionalidad:
Re:Problema con punteros el O.S. cierra el programa
«
Respuesta #2 en:
Lunes 19 de Septiembre de 2011, 00:12 »
0
Cita de: alexg88 en Domingo 18 de Septiembre de 2011, 21:36
Aunque seguramente sea muy tarde, dejo la solución a los problemas:
Nunca es tarde, a alguien mas le puede servir al informacion
Por cierto, saludos brother
y disculpa, no lei tu mensaje antes, si no te hubiera apoyado
NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================
tomas_sauron
Miembro activo
Mensajes: 56
Re:Problema con punteros el O.S. cierra el programa
«
Respuesta #3 en:
Lunes 19 de Septiembre de 2011, 04:08 »
0
Si bien ya encontré la solución,nunk s tard ya q si s vrdad ,sirve para otra persona muchas gracias = por responder !!
PD : como sigo con C++ seguramente pronto estaré molestando con inquietudes nuevas !! jaja saludos !!
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problema con punteros el O.S. cierra el programa