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".'