Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-05-2012
kirios kirios is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 27
Poder: 0
kirios Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 26-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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;
Saludos.
__________________
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.
Responder Con Cita
  #3  
Antiguo 27-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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;
}
Tomá en cuenta que en el ejemplo las cotas inferiores son cero y las superiores maxrow-1/maxcol-1.

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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 01:32:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi