Foros del Web » Programación para mayores de 30 ;) » C/C++ »

autodestruccion de variable entera

Estas en el tema de autodestruccion de variable entera en el foro de C/C++ en Foros del Web. Hola gente hace mucho que no entraba en el foro pero no encontre otra solcuion. Les comento que estoy haciendo un TP para la facultad ...
  #1 (permalink)  
Antiguo 10/06/2008, 15:29
 
Fecha de Ingreso: abril-2008
Mensajes: 19
Antigüedad: 16 años
Puntos: 0
autodestruccion de variable entera

Hola gente hace mucho que no entraba en el foro pero no encontre otra solcuion.
Les comento que estoy haciendo un TP para la facultad y tengo que entregarlo el viernes y me surgió un problema que la verdad nunca antes me habia pasado.

El problema es el siguiente:

Tengo esta clase definida

Código HTML:
//archivo matriz.h
#ifndef MATRIZ_H
#define MATRIZ_H

class matriz
{        
    public:
        matriz();
        void set_matriz(int, int, int);
        void ver_matriz();
    
    private:
        int **matrizPtr;
        int x;
        int y;
        int p_x;                        //esta var me da problema
        int p_y;                        //esta var me da problema
};

#endif
ahora les presento el archivo con las funciones miembros, los problemas estan marcados con "*" (asterizcos)

Código HTML:
#include "matriz.h"
#include "principal.h"
#include <iostream>

using std::cout;
using std::cin;
using std::endl;

matriz::matriz()
{
    p_x = 0;                                  ////////////  *1    //////////
    p_y = 0;
    
    cout << "p_x = " << p_x << "    p_y = " << p_y << endl;
    system("pause");
    
    principal P1;
    matrizPtr = NULL;
    
    int  i = 0, j = 0;
    
    x = P1.get_x();
    y = P1.get_y();
    
    matrizPtr = new int*[x];
    
    for(i = 0; i <= x - 1; i++)
    {
        matrizPtr[i] = new int[y];
    }
    
    i = 0;
    
    if(matrizPtr != NULL)
    {
        for(i = 0; i <= x - 1; i++)
        {
            for(j = 0; j <= y - 1; j++)
            {
                matrizPtr[i][j] = 0;
            }
        }
    }
    else
    {
        cout << "MEMORIA INSUFICIENTE" << endl;
    }
}

void matriz::set_matriz(int i, int j, int lapiz)
{     
    if(i == 1)
    {
        p_x++;
    }
    else if(i == -1)
    {
        p_x--;
    }
    
    if(j == 1)
    {
        p_y++;        
    }
    else if(j == -1)
    {
        p_y--;
    }
    
    cout << "p_x = " << p_x << "    p_y = " << p_y << endl;     ////////  *2   ///////
    system("pause");
    
    if(lapiz == 1)
    {
        matrizPtr[p_x][p_y] = 1;
    }
 
}      

void matriz::ver_matriz()
{

    for(int i = 0; i <= x - 1; i++)
        {
            for(int j = 0; j <= y - 1; j++)
            {
                cout << matrizPtr[i][j] << "  ";
            }
            cout << endl;
        }
      
    system("pause");
}  
Y esto es lo que muestra al ejecutar:




Y luego el programa muere!!!.

*1 =
Código HTML:
    //ESTO ES DENTRO DEL CONSTRUCTOR

    p_x = 0;                                 
    p_y = 0;
    
    cout << "p_x = " << p_x << "    p_y = " << p_y << endl;
    system("pause");


*2 =
Código HTML:
    //ESTO ES DENTRO DE LA FUNCION set_matriz

    cout << "p_x = " << p_x << "    p_y = " << p_y << endl;            *2 
    system("pause");


Les explico por si no entendieron en el punto *1 inicilizo las variables a 0 y las imprimo para que se vea que valen 0.
En el punto *2 vuelvo a imprimir en pantalla los valores de las varibles sin haberlas usado antes (porque nunca entre en los if) y se destruyen por completo!

¿Cual puede ser el problema?.
  #2 (permalink)  
Antiguo 11/06/2008, 07:22
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Respuesta: autodestruccion de variable entera

¿Qué quieres decir con que se destruyen por completo?
¿Qué muestra cuando ejecutas el programa?
¿Qué debería mostrar?

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #3 (permalink)  
Antiguo 11/06/2008, 07:37
 
Fecha de Ingreso: abril-2008
Mensajes: 19
Antigüedad: 16 años
Puntos: 0
Respuesta: autodestruccion de variable entera

Deberia valer 0 y se llena de basura.....me explico?

Lo que muestra cuando ejecuto es lo siguiente


Última edición por fran_tatengue; 11/06/2008 a las 08:15
  #4 (permalink)  
Antiguo 11/06/2008, 09:38
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Respuesta: autodestruccion de variable entera

Cita:
Iniciado por fran_tatengue Ver Mensaje
Deberia valer 0 y se llena de basura.....me explico?
...
El código que posteas está bien, no se que hace la clase principal y tampoco si los valores que le asigna a X y a Y sean adecuados.

Todo dependerá de cuantas veces llames a el método set_matriz. Si lo llamas una vez y los parámetros son tales que no se cumple ninguna condición entonces debería mostrar 0.

Adicionalmente te aconsejo que elimines la memoria que reservaste dinámicamente en el destructor de la clase.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:09.