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

error en tiempo de ejecucion

Estas en el tema de error en tiempo de ejecucion en el foro de C/C++ en Foros del Web. Buenas, Les cuento que estoy preparando un examen y ando empezando en esto de C. Ya he programado en varios otros lenguajes pero en C ...
  #1 (permalink)  
Antiguo 20/07/2007, 04:47
 
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo
Mensajes: 46
Antigüedad: 18 años, 2 meses
Puntos: 1
error en tiempo de ejecucion

Buenas,

Les cuento que estoy preparando un examen y ando empezando en esto de C. Ya he programado en varios otros lenguajes pero en C aun no.

El error q me surge es a la hora de manejar arrays multidimensionales y se da en tiempo de ejecucion.

Empecé a debuggear y a comentar lineas hasta encontrar donde se daba el error, lo q no termino de entender es el porque. Pego el codigo aqui en su minima expresion sacando toda la parte lógica que tiene mi archivo que no viene al caso ponerla aqui ya que solo confundiria mas.

#include <stdio.h>
#include <stdlib.h>

//DEFINICION DE CONSTANTES
#define COLS 2
#define ROWS 2

//DEFINICION DE FUNCIONES
int ptoSilla(float*,int,int);

void main(){

//DECLARACION DE VARIABLES
int i = 0, j, x, y, esSilla;
float mat[COLS][ROWS], *p;

//PETICION AL USER DE LOS ELEMENTOS DE LA MATRIZ
while(i < ROWS){
printf("Ingrese los elementos de la fila %d :\n",i);
j = 0;
while (j < COLS){
printf("Ingrese un numero real :\n");
scanf("%f",&mat[i][j]);
j++;
}
i++;
}

//PETICION DE LA COORDENADA X DE UN ELEMENTO
printf("Ingrese un numero de fila :\n");
scanf("%d",&x);

//PETICION DE LA COORDENADA Y DE UN ELEMENTO
printf("Ingrese un numero de columna :\n");
scanf("%f",&y);

//APUNTO CON p A mat[0[0] PARA PODER PASARLA POR REFERENCIA A LA FUNCION esSilla
p = &mat[0][0];
esSilla = ptoSilla(p,x,y);

if (esSilla){
printf("La posicion indicada es punto silla de la matriz.\n");
printf("El valor del punto silla es igual a %.2f.\n",mat[x][y]); //ACA ES DONDE SE DA EL ERROR SI SE COMENTA ESTA LINEA NO HAY PROBLEMA
}else{
printf("La posicion indicada no es punto silla de la matriz.\n");
}

}

int ptoSilla(float *m, int posx, int posy){

return 1;

}

Desde ya gracias,
PD:el error aparentemente es por usar mat[x][y], a pesar de que es perfectamente valido usar variables para los indices.

Concretamente el error es uno de esos feos de windows una vez terminado el ingreso de datos y dice asi:

'La instruccion en "0x00401204" hace referencia a la memoria "0xfe12ff7c". La memoria no se puede "read".'
  #2 (permalink)  
Antiguo 20/07/2007, 06:57
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 18 años, 5 meses
Puntos: 28
Re: error en tiempo de ejecucion

Te recomendaría que pongas más código, o al menos el suficiente para que se genere el error, porque compilé y ejecuté eso y no encontré error alguno.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #3 (permalink)  
Antiguo 20/07/2007, 09:57
 
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo
Mensajes: 46
Antigüedad: 18 años, 2 meses
Puntos: 1
Re: error en tiempo de ejecucion

Me dejas sorprendido, el codigo sería ese, ya que el resto del archivo esta todo comentado, no lo puse porque no seria necesario. Realmente me sorprende.

Te cuento a ver si en una de esas puedes decirme algo mas. Estoy usando el compilador de Borland C++ 5.5.

Estuve pensando un poco y estuve razonando q probablemente sea un problema del manejo de memoria q hace el compilador o en una de esas Windows, no he podido encontrar donde configuro el comportamiento o manejo q hace el compilador de la memoria.

Para mi era casi obvio q no habia error en el codigo, sino me hubiera dado un error de compilacion, el hecho q el error se dé en tiempo de ejecucion da para entender q es un problema de manejo de memoria

Alguna otra idea? =(
Gracias de antemano por responder.
  #4 (permalink)  
Antiguo 20/07/2007, 12:42
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 18 años, 5 meses
Puntos: 28
Re: error en tiempo de ejecucion

Quien sabe...el BC 5.5 a mi me pareció bastante inestable, me daba muchísimos errores, se guindaba, se cerraba y demás...te recomiendo que solo por curiosidad pruebes en otro compilador. El code::blocks y el DevC++ usan el mismo compilador, lo que cambia es el IDE, o prueba con el VC++.

No digo que sea eso, pero como te comenté lo que publicaste me corrió sin ningún error.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #5 (permalink)  
Antiguo 20/07/2007, 14:19
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 9 meses
Puntos: 22
Re: error en tiempo de ejecucion

OJO:
Código:
void main(){ // main debe retornar int
.
.
.
scanf("%f",&y); // y es un int
Saludos.

Última edición por fightmx; 20/07/2007 a las 14:33
  #6 (permalink)  
Antiguo 20/07/2007, 15:28
 
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo
Mensajes: 46
Antigüedad: 18 años, 2 meses
Puntos: 1
Re: error en tiempo de ejecucion

Resolvi el problema _Lucifer_ y el error estaba en el scanf()
:S

la linea scanf("%f",&y);

esta mal porq y esta definida como int =) ...tiene q ser %d

El compilador no me tiró warnings me convenci q bcc55 muy mal, probe antes de darme cuenta del error con el devc++ q me recomendaste, me dijeron q era bueno tmb pero tampoco tiro warnings.

gracias por el tiempo ;)
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 14:00.