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

por qué int ma[m][n]??? , m y n NO ctes

Estas en el tema de por qué int ma[m][n]??? , m y n NO ctes en el foro de C/C++ en Foros del Web. hola gente... que tal?? de nuevo por aqui.... andaba por ahi en la web; y de repente vi un ejemplo de un codigo en c/c++.. ...
  #1 (permalink)  
Antiguo 31/03/2007, 01:17
 
Fecha de Ingreso: noviembre-2006
Mensajes: 4
Antigüedad: 17 años, 5 meses
Puntos: 0
por qué int ma[m][n]??? , m y n NO ctes

hola gente...

que tal??

de nuevo por aqui.... andaba por ahi en la web; y de repente vi un ejemplo de un codigo en c/c++.. tenian algo asi:

Código:
#include <iostream>
using namespace std;
int main() {
	int m=10,n=20;
	int ma[m][n];
	ma[5][2]=345;
	cout<<ma[5][2];
 	return 0;
}
mi pregunta: por qué SI funciona??
que no se supone que al declarar una matriz o algo asi... los tamaños deben ser constantes?? ¬¬

y luego de esa pregunta.. vino otra.. si esto funciona asi de simple.. pa que inventaron el malloc() o el new??, total... hacen lo mismo no??

salu2 y grax por la ayuda
  #2 (permalink)  
Antiguo 31/03/2007, 03:45
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
Re: por qué int ma[m][n]??? , m y n NO ctes

que tal maxsubzero,

Cita:
Iniciado por maxsubzero Ver Mensaje
que no se supone que al declarar una matriz o algo asi... los tamaños deben ser constantes?? ¬¬
en el codigo, SI son constantes los tamaños.

Si te das cuenta, en ese ejemplo, cuando compilas el programa, el compilador ya sabe el tamaño de la matriz, ademas de que no cambia durante el programa. Por eso se considera constante.

malloc (c) y new (c++) existen para cuando el programa no sabe desde un principio que valores van a tener, o cuando es posible que cambien (por ejemplo, cuando ingresas desde el teclado el tamaño, o cuando dependiendo del evento que suceda, se asigne o cambie su tamaño).

trata de hacer pruebas leyendo M y N desde el teclado, o cambiando M y N durante la ejecuacion del programa, y verasz que ese codigo ya no funcionara (y por lo tanto necesitaras malloc o new)

saludos,
  #3 (permalink)  
Antiguo 31/03/2007, 09:09
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Re: por qué int ma[m][n]??? , m y n NO ctes

Cita:
Iniciado por maxsubzero Ver Mensaje
hola gente...

que tal??

de nuevo por aqui.... andaba por ahi en la web; y de repente vi un ejemplo de un codigo en c/c++.. tenian algo asi:

Código:
#include <iostream>
using namespace std;
int main() {
	int m=10,n=20;
	int ma[m][n];
	ma[5][2]=345;
	cout<<ma[5][2];
 	return 0;
}
mi pregunta: por qué SI funciona??
que no se supone que al declarar una matriz o algo asi... los tamaños deben ser constantes?? ¬¬

y luego de esa pregunta.. vino otra.. si esto funciona asi de simple.. pa que inventaron el malloc() o el new??, total... hacen lo mismo no??

salu2 y grax por la ayuda
Como dice blackwind. Intenta esto:

Código:
#include <iostream>
using namespace std;
int main() {
	int m=0,n=0;
        scanf("%d%d", &m, &n);
	int ma[m][n];
	ma[5][2]=345;
	cout<<ma[5][2];
 	return 0;
}
Veras que esto ya no funciona.

Saludos
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 21:46.