Programación General > C/C++

 Tamaño De Una Matriz

(1/3) > >>

cpp:
Hola a todos,


a continuacion os planteo mi problema:

el archivo adjunto es parte de una libreria de una matriz. esta matriz tiene q estar entre un valor maximo y otro minimo, ademas el tamaño de la matriz se debe declarar en el momento de la ejecucion del programa. el tamaño de la matriz se pedira al usuario por pantalla e introducira un valor por el teclado, cuando este valor entre el maximo y el minimo sera el tamaño de la matriz.

en la libreria de la matriz la definido como:

typedef Casilla Tablero[Max][Max]; //Max es una constante definida en otra
// libreria y es el valor maximo de la matriz

posteriormente pruebo el tipo en un main() de prueba. ahi intento asignarle un nuevo tamaño de la matriz, para ello utilizo un puntero que apunta a la matriz;

void main(){

     const int n = /* aqui va la funcion que pide el tamaño */;
     
     Tablero = new Casilla [n][n];

     ...
     ...
     ...

}

BorlandC 3.11 da el siguiente error:
Improper use of typedef 'Tablero' (en la linea de Tablero)
Constant expression required (en la linea de Tablero)
 warning: 'n' is assigned a value that is never used

Espero vuestros comentarios, un saludo y gracias de antemano.

cpp:
olvidaba el Tablero.h ... ahi va

dreadlock:
Pues, aver si este te sirve es lo que entendi

--- Código: Text --- #include<dos.h>#include<stdio.h>#include<conio.h>#define tam 10//definimos maximo de 10int matriz[tam];//se define una matriz de tam elementosint pedir(){int n;do{printf("\nDe que tamaño deseasm la matriz [5-10]: "); scanf("%d",&n);//se guardaif((n>10)||(n<5))printf("\nRango Incorrecto");}while((n>10)||(n<5))//mientras no este en el rango//si el rango es aceptadoreturn (n);//re regresa n}void main(){int a,i;a=pedir();for(i=1,i<=a;i++){//se procede a llenarprintf("\nDame el elemento %d : ",i);scanf("%d",&matriz[i]);} for(i=1,i<=a;i++){//muestra el contenidoprintf("\nElemento %d : ",matriz[i]);} getche();}   
ESpero que funcione no lo he probado pero en teoria debe funcionar, Espero que te des una idea

carmamezo:
Creo que el problema está en la declaración typedef, en la librería has creado una matriz de dos dimensiones y de tipo Casilla, pero al hacer typedef Casilla Tablero[Max][Max] estás llamando a ese nuevo elemento de una forma concreta: Tablero.  Por tanto en tu programa deberás hacer lo siguiente:
Tablero un_tablero;
de tal manera que un_tablero es un array de Max posiciones y de tipo Casilla.  Creo que ese es el problema, no puedes usar un tipo de variable como nombre de una vble, al hacer typedef Tablero has creado Tablero como si fuera un tipo de vble (como int, char, float...) por eso no te deja usarla como nombre de una vble.  Un saludo.

cpp:
Hola,

quiero dar las gracias a todos por ayudarme. Después de una semana he terminado una práctica del re\/ersi. Cuando haya entregado el código a los profesores lo pondre en este mismo foro por si a alguien le interesa.

Un saludo a todos.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa