 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
jc Lt JG

Registrado: 02 Mar 2004Mensajes: 68
|
Publicado: Jue 28 Abr, 2005 4:44 pm Asunto: No me funciona este bucle |
|
|
Hola a todos:
A ver si alguien me puede decir cuál es la causa de que este bucle no funcione correctamente.
float Parametros[2][2][5][100][100][100][1000][100][1000][25];
void Inic_Variables()
{
int a, b, c, d, e, f, g, h, i, j;
a = 0;
while (a<2)
{
b = 0;
while (b<2)
{
c = 0;
while (c<5)
{
d = 0;
while (d<100)
{
e = 0;
while (e<100)
{
f = 0;
while (f<100)
{
g = 0;
while (g<1000)
{
h = 0;
while (h<100)
{
i = 0;
while (i<1000)
{
j = 0;
while (j<25)
{
Parametros[a][b][c][d][e][f][g][h][i][j] = 0;
j++;
}
i++;
}
h++;
}
g++;
}
f++;
}
e++;
}
d++;
}
c++;
}
b++;
}
a++;
}
}
No se si es que me estoy pasando en la dimensión de este array (eso parece). Si alguien tiene una sugerencia de cómo hacer esto de forma más lógica que no dude en decírmelo.
Gracias y un saludo.
JC |
|
| Volver arriba |
|
 |
masBecas Lt

Registrado: 23 Oct 2003Mensajes: 98Ubicación: La Laguna, Tenerife
|
Publicado: Jue 28 Abr, 2005 6:07 pm Asunto: |
|
|
Chacho!! Se te fue la pelota!! No entiendo para qué puedes querer un array de ese tamaño y dimensiones, pero si no te está cascando por el número de dimensiones existe una forma mucho más sencilla de hacer todo eso:
memset(&Parametros, 0, sizeof(float)*2*2*5*100*100*100*...)
Con arrays más pequeños tira... con esta COSA no sé. |
|
| Volver arriba |
|
 |
Fernando Diaz Master


Registrado: 18 Jul 2004Mensajes: 273Ubicación: Talavera de la Reina (Toledo)
|
Publicado: Jue 28 Abr, 2005 7:40 pm Asunto: |
|
|
no conozco nungun caso ni creo que haya en que se necesite un array de tales dimensiones ...sabes lo que estas definiendo hay??? un array[2][2] seria esto
[][]
[][]
pero si es [1][1][1]
seria igual pero dentro de cada caja una caja de las que has visto osea
________________
/_______________/ |
| /_/_/|. | . /_/ /|. | |
| |_|_|/|. | .|_|_||. | |
| |_|_|/ . | .|_|_|/. | /|
|_______|_______|/ |
| /_/_/|. |. /_/ /|. |. |
| |_|_|/|. |. |_|_||. |. |
| |_|_|/ . |. |_|_|/. | /
|_______|_______|/
te puedes hacer a la idea de lo que estas definiendo tu? por cierto el de [1][1][1] seria tridemensional _________________ Los problemas mas dificiles tienen las soluciones mas sencillas
 |
|
| Volver arriba |
|
 |
offset Cdt

Registrado: 26 Abr 2005Mensajes: 17
|
Publicado: Jue 28 Abr, 2005 8:09 pm Asunto: |
|
|
| eeeeeeeeeeeeeeepppppppppppaaaaaaaaaaaaaaa, un array de 10 dimensiones!!!!!!!!!!!!!!!!!!!!!!! estas re loco man |
|
| Volver arriba |
|
 |
Cerúleo Master


Registrado: 04 Ago 2003Mensajes: 332Ubicación: Santander, España
|
Publicado: Vie 29 Abr, 2005 7:41 am Asunto: |
|
|
Hola.
Me da en la nariz que no tienes un problema con el bucle (a simple vista está perfecto), sino con el tamaño de la matriz.
El número de número a almacenar es:
(float Parametros[2][2][5][100][100][100][1000][100][1000][25]; )
n=2x2x5x100x100x100x1000x100x1000x25=5e16 números
Si cada número float ocupa (creo) 16 bits, se tiene:
t= 5e16x16 = 8e17 bits
tt= 8e17 bits / 8 bits/byte = 1e17 bytes
ttt= 1e17 bytes /1024 bytes/Kb = 9765.625e10 Kb
tttt= 9765.625e10 kb / 1024 Mb/Kb = 9536.743e7 Mb
ttttt= 9536.743e7 Mg / 1024 Gb/Mb = 9313.226e4 Gb
O sea, que está tratando de crear una matriz de 93 132 257 Gb
(noventa y tres millones de Gigabytes).
Creo que te has pasado un pelín ¿no?
Saludos. _________________ Nunca digas "Es imposible" sin intentarlo antes. |
|
| Volver arriba |
|
 |
jc Lt JG

Registrado: 02 Mar 2004Mensajes: 68
|
Publicado: Vie 29 Abr, 2005 8:53 am Asunto: |
|
|
Teneis toda la razón, es un poco (por ser suave) bestia esa matriz, de hecho los float son de 32 bits, o sea que tu cálculo Cerúleo, hay que multiplicarlo por dos.
Mi problema es que tengo una serie de "casos", que están definidos por 9 parámatros (las 9 dimensiones primeras de mi array), y cada uno de esos casos tiene 25 valores ( que es la última dimensión del array). Dependiendo del valor de cada uno de esos 9 parámetros estoy en un caso o en otro, y a partir de ese punto es cuando tengo que coger los 25 valores que pertenecen a cada uno de esos casos (que supongo que sí podrían estar en un array).
Alguien me puede decir cómo puedo plantear este problema?
Gracias por vuestra ayuda y un saludo.
JC |
|
| Volver arriba |
|
 |
Fernando Diaz Master


Registrado: 18 Jul 2004Mensajes: 273Ubicación: Talavera de la Reina (Toledo)
|
Publicado: Vie 29 Abr, 2005 9:04 am Asunto: |
|
|
Por lo que me parece entender te sobraria con int array[9][25] _________________ Los problemas mas dificiles tienen las soluciones mas sencillas
 |
|
| Volver arriba |
|
 |
jc Lt JG

Registrado: 02 Mar 2004Mensajes: 68
|
Publicado: Vie 29 Abr, 2005 11:00 am Asunto: |
|
|
| Fernando Diaz escribió: | | Por lo que me parece entender te sobraria con int array[9][25] |
Ojo, estamos hablando de que existen "n" casos que vienen definidos por 9 parámetros (y cada uno de estos parámetros tiene una serie de valores posibles). Una vez chequeamos cada uno de esos parámetros y su valor, estamos en un caso determinado; este caso es el que tiene los 25 valores a los que quiero acceder.
Espero haberme explicado mejor, si no es así, lo intento de nuevo.
Un saludo. |
|
| Volver arriba |
|
 |
offset Cdt

Registrado: 26 Abr 2005Mensajes: 17
|
Publicado: Vie 29 Abr, 2005 12:56 pm Asunto: |
|
|
| y si usas punteros? |
|
| Volver arriba |
|
 |
jc Lt JG

Registrado: 02 Mar 2004Mensajes: 68
|
Publicado: Vie 29 Abr, 2005 1:00 pm Asunto: |
|
|
| offset escribió: | | y si usas punteros? |
Si no te importa, oriéntame un poco, porque no sé cómo plantearlo.
Un saludo. |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 29 Abr, 2005 4:23 pm Asunto: |
|
|
A mi punto de vista. talvez, no te otorge la solucion, por que se me hace un poco raro, pero se me asemeja, mas a las permutaciones.. de las matematicas discretas, en todo caso, sobre los que se denomina, como solucion, puedes usar un arbol de permutaciones, digo, no tengo en este momento, algo concreto, pero esa puede ser otra solucion..
se me asemeja al menu de un restaurante, con todas las posibles, variantes de combinaciones, que pueden existir dentro de un menu.
si esta algo descabellado, ya que sale un cifra estratosferica, mi cerebro, indica que le falta ram, para procesarlo. aun que tambien, puede que le falte ram a tu compu... para procesarlo, si vas a localizar el ultimo, has calculado cuantos años, te puede llevar, digo años, por la cantidad de combinaciones, que pueden existir..
saludos. es mejor, que expliques, el problema que deseas hacer, y puede que encontremos otra solucion...
saludos, (tareas escolares, no hacemos jej ejejejejejje)  _________________
 |
|
| Volver arriba |
|
 |
Fernando Diaz Master


Registrado: 18 Jul 2004Mensajes: 273Ubicación: Talavera de la Reina (Toledo)
|
Publicado: Vie 29 Abr, 2005 10:51 pm Asunto: |
|
|
dudo que haya algun problema en la vida que tenga 5e16 combinaciones posibles, si la genetica, ni el azar, ni la loteria, ni los menos de los menus de los sub menus de los menus del mundo entero, sigo pensando que no sabes lo que estas definiendo y con [9][25] te valdria _________________ Los problemas mas dificiles tienen las soluciones mas sencillas
 |
|
| Volver arriba |
|
 |
Perico Invitado
|
Publicado: Sab 30 Abr, 2005 1:10 am Asunto: |
|
|
tiene cojones la cosa hermano!
cuando he visto semejante barbariadad me he ido a cagar al vater, de verdad!!!
bueno y cagando he estado pensando en el problemita y estoy de acuerdo con ceruleo, si dices que tienes unos determinados casos definidos por una serie de parametro y cada parametro 25 valores.
float[casos][parametro][valores]
te sale un tridi que no veas!
de esta forma cada caso tiene unos parametros que pueden ser hasta de 25 valores cada parametro.
Suerte |
|
| Volver arriba |
|
 |
Cerúleo Master


Registrado: 04 Ago 2003Mensajes: 332Ubicación: Santander, España
|
Publicado: Dom 01 May, 2005 10:30 am Asunto: |
|
|
Hola.
jc escribió: | Cita: | Ojo, estamos hablando de que existen "n" casos que vienen definidos por 9 parámetros (y cada uno de estos parámetros tiene una serie de valores posibles). Una vez chequeamos cada uno de esos parámetros y su valor, estamos en un caso determinado; este caso es el que tiene los 25 valores a los que quiero acceder.
Espero haberme explicado mejor, si no es así, lo intento de nuevo. |
Lo cierto es que no te acabo de entender. Dices que cada uno de los parámetros puede tener una serie de posibles valores: ¿algo así como valores enteros, entre 1 y 10, por ejemplo?
No sé si puedes concretar más o poner algún ejemplo. No es posible que tengas tantas combinaciones... Los valores que toman los parámetros de los "n" casos... ¿pueden tomar los mismos valores? Si la respuesta es sí, simplificaría mucho. Pongo un ejemplo.
Si tengo 5 casos definidos por 3 parámetros, y cada parámetro puede tomar 4 valores, la combinación total sería: 5*3*4=60, y almacenaría una matriz tridimensional de 60 elementos en total.
Si los valores que pueden tomar los parámetros son iguales, podría almacenar una matriz bidimensional: 5*3=15, y una matriz unidimensional: 4 (los posibles valores). De esta forma sólo guardo 19 valores frente a los 60 de antes. Si esto lo aplicas a los números que tú usas (100, 25, 1000), puedes hacerte una idea del gran ahorro que te supone.
Creo, de verdad, que es un problema mal planteado. Explícate mejor, que seguro que te podemos dar alguna solución "aceptable".
Un saludo. _________________ Nunca digas "Es imposible" sin intentarlo antes. |
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Mar 03 May, 2005 10:27 am Asunto: |
|
|
Voy entendiendo un poco el camino que me planteais. Os explico mejor el asunto:
Lo que a mí me dan es un tiene el siguiente nombre de fichero y que luego tendré que cargar:
X_X_X_XX_XX_XX_XXX_XX_XXX
cada "X" corresponde a un caracter que identifica un valor que ahora explicaré (voy a substituirlos por otras letras para identificarlo mejor).
a_b_c_dd_ee_ff_ggg_hh_iii
a: puede valer 0 ó 1.
b: puede valer 0 ó 1.
c: puede valer 0,1,2,3,4.
dd: de 0 a 20
ee: de 0 a 20
ff: de 0 a 20
ggg: puede valer 10,20,30 (valores de 10 en 10 hasta un valor indeterminado, por ej. 200)
hh: valor entre 1 y 20
iii: representa un valor con decimal, 15.8 sería 158 por lo tanto puede valer entre 1 y 200.
Un ejemplo podría ser:
1_0_2_05_04_06_050_20_058
todos esos datos me definen ese caso en concreto que va a tener 25 valores a los que habrá que acceder, que estarían guardados en una matriz.
Tal como me comentais, la historia consiste en reducir los casos para disminuir las dimensiones del array total. Voy a pensar, pero si alguien tiene ya alguna sugerencia que me lo indique, por favor.
Muchas gracias a todos por vuestra ayuda.
Un saludo.
JC. |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|