[ Foro de C ]

error matriz

22-Dec-2019 08:20
Invitado (aberroncho)
1 Respuestas

Hola, a lo mejor es una tonteria pero porque no funciona esto:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main (){

int numfilas,numcolumnas;
int matriz[numfilas][numcolumnas];
int i,j;


printf("dime el numero de filas ");
scanf("%d",&numfilas);
printf("dime el numero de columnas ");
scanf("%d",&numcolumnas);

for(i=0;i<numfilas;i++){
for(j=0;j<numcolumnas;j++){
printf("elemento (%d,%d): ", i,j);
scanf("%d", &matriz[i][j]);
}
printf("\n");

}


for(i=0;i<numfilas;i++){
for(j=0;j<numcolumnas;j++){
printf("%d ", matriz[i][j]);

}
printf("\n");

}
return 0;
}


29-Dec-2019 20:00
Jorge d r (+1)

Bueno el problema es que la matriz la tienes que crear con constantes y no con variables, supongo que por el compilador (creo, tampoco soy un experto).
Entonces tienes que crear la matriz dinámicamente o sea, que vas a tener que crear tu la memoria y borrarla cuando hayas acabado de utilizarla.
Prueba lo siguiente:
Para crear la memoria hazlo así:
int** matriz = new int*[numfilas];
for (int i = 0; i < numcolumnas; i++) {
matriz[i] = new int[numcolumnas];
}
Lo que significa que creas un array de punteros que apuntan a un array de punteros a int.
Y para borrarla se hace igual, primero borras los punteros a int y luego los punteros que apuntaban a los punteros a int.
for (int i = 0; i < numcolumnas; i++) {
delete[] matriz[i];
}
delete[] matriz;
Espero haberte ayudado.
Saludos






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)