Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

No me funciona este bucle
Ir a página 1, 2  Siguiente
 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: No me funciona este bucle Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

eeeeeeeeeeeeeeepppppppppppaaaaaaaaaaaaaaa, un array de 10 dimensiones!!!!!!!!!!!!!!!!!!!!!!! estas re loco man
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Por lo que me parece entender te sobraria con int array[9][25]
_________________
Los problemas mas dificiles tienen las soluciones mas sencillas
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

y si usas punteros?
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

offset escribió:
y si usas punteros?


Si no te importa, oriéntame un poco, porque no sé cómo plantearlo.

Un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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) Very Happy
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

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
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.