![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
Definir una matriz sin saber el rango
Hola! pregunta sencilla pero no le veo la vuelta.
Tengo un programa en C, y tengo dos variables x e y que se generan cuando el programa esta corriendo. Quiero definir una matriz con esas variables, por ejemplo int mat[x][y]; no me deja el compilador, hay alguna manera? graciaas |
|
#2
|
||||
|
||||
|
Hola kirios.
Si, te pongo un ejemplo: Código:
... int **mat, col, row; col = StrToInt(Edit1->Text); row = StrToInt(Edit2->Text); mat = new int *[row]; for (int i= 0; i < row; i++) mat[i] = new int[col]; ... for(i=0; i < col; i++) delete [] mat[i]; delete [] mat;
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 27-05-2012 a las 05:52:56. |
|
#3
|
||||
|
||||
|
Hola.
Me olvidé de comentarte... Otra forma en que podes implementarlo, es utilizando el método de órden de mayor fila (row major order) que es como almacenan la matriz en memoria C y C++. Para obtener el offset de un elemento, hay que realizar: fila * numero_columnas + columna. Un ejemplo: Código:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
int main(int argc, char* argv[])
{
char *mat;
int maxrow, maxcol, row, col;
/* Ingresar dimensión */
printf("Filas: "); scanf("%2d", &maxrow);
printf("\nColumnas: "); scanf("%2d", &maxcol);
/* Crear */
mat = new char[maxrow * maxcol];
/* Cargar la matriz */
randomize();
for(int f=0; f < maxrow; f++)
for(int c=0; c < maxcol; c++)
mat[f * maxcol + c] = random(27)+65;
/* Mostrar la matriz */
for(int f=0; f < maxrow; f++) {
for(int c=0; c < maxcol; c++)
printf("%3c", mat[f * maxcol + c]);
printf("\n");
}
/* Posicionar y mostrar el elemento */
printf("Fila: "); scanf("%2d", &row);
printf("\nColumna: "); scanf("%2d", &col);
printf("%c",mat[row * maxcol + col]);
getch();
/* liberar */
delete [] mat;
return 0;
}
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 28-05-2012 a las 05:54:29. Razón: corrección ortográfica |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| ¿saber si una fecha o mas estan dentro de un rango de fechas? | JXJ | Firebird e Interbase | 17 | 25-08-2010 23:55:43 |
| Como saber cuando son sabados,domingos o festivos en un rango de fechas | ingabraham | Varios | 1 | 04-02-2010 19:04:27 |
| Definir impresora | Carliviris | Varios | 6 | 11-01-2008 03:12:17 |
| Problemas al definir UDF (Funciones en una DLL) | pcicom | Firebird e Interbase | 2 | 21-06-2006 05:49:15 |
| Como saber si la impresora es de Matriz de Punto | teletranx | Impresión | 4 | 11-05-2004 21:27:01 |
|