[Duda] Array tridimensional - Indice.
#1

Muy buenas, ya entendiendo un poco mбs sobre los array tridimensional que los dos tipos de array anteriores me parece fбcil, pero he aqui una duda, La cual no sй si estб bien lo que pienso.

pawn Код:
new Array_3D_A [3] [5] [12] =
{
    {"Pen",     "Book",     "Paper",  "Notes",  "Pencil"},
    {"Laptop",  "Computer", "Cell",   "Pad",    "Pod"},
    {"Car",     "Bike",     "Bus",    "Train",  "Muscle"}
};

for ( new index = 0; index < sizeof Array_3D_A; index++ )
    {
        printf
        (
            "Objects: %s | %s | %s | %s | %s",
            Array_3D_A[index][0],
            Array_3D_A[index][1],
            Array_3D_A[index][2],
            Array_3D_A[index][3],
            Array_3D_A[index][4]
        );
    }
Vale yo sй, que es lo que hace el cуdigo.

imprime en la consola con ayuda de bucle for tres veces la linea
Код:
"Objects: %s | %s | %s | %s | %s "
con cada uno de los nombres o indices que contiene el array, osea quedarнa asн.

Код:
Objects: Pen | Book | Paper | Notes | Pencil
Objects: Laptop | Computer | Cell | Pad | Pod
Objects: Car | Bike | Bus | Train |
.

Lo que no estoy seguro es la parte de
pawn Код:
Array_3D_A[Index]
їDe dуnde coge el valor [Index]?.

Segъn yo: Observando, parece que el index toma el valor de unos de los slots del array, Osea ...

pawn Код:
new Array_3D_A [3] [5] [12] =
{
   [0] {"Pen",     "Book",     "Paper",  "Notes",  "Pencil"},
   [1] {"Laptop",  "Computer", "Cell",   "Pad",    "Pod"},
   [2] {"Car",     "Bike",     "Bus",    "Train",  "Muscle"}
};
... Que los slots seсalados lo coge o lo guarda la variable [Index] para darle instrucciуn de cuantas veces se repetirб la linea, pero aъn tengo una confusiуn, es que la Variable index fue creada junto al bucle for

їComo es posible que se junta los valores de dos Arrays diferentes?.
їEs asн que se le ordena al bucle for cuantas veces va a repetir esa linea?.

Los demбs no se preocupen que ya lo tengo claro.

Gracias
Reply
#2

Ya que sabes lo necesario, te darй un par de pistas para que puedas entender su funcionamiento total.

La funciуn (o como le digan) sizeof obtiene el tamaсo de un arreglo. En el bucle se crea una variable que parte con el valor de 0 y va aumentando dicho nъmero por cada repeticiуn (variable++).

Ahora, si yo hago algo como:


pawn Код:
new var = 6;
new cadena[] = "cadena de caracteres desde un array";
printf("%s", cadena[var]);
Deberнa imprimir la variable "cadena" desde la celda nъmero 6.
Reply
#3

Quote:
Originally Posted by DesingMyCry
Посмотреть сообщение
Ya que sabes lo necesario, te darй un par de pistas para que puedas entender su funcionamiento total.

La funciуn (o como le digan) sizeof obtiene el tamaсo de un arreglo. En el bucle se crea una variable que parte con el valor de 0 y va aumentando dicho nъmero por cada repeticiуn (variable++).

Ahora, si yo hago algo como:


pawn Код:
new var = 6;
new cadena[] = "cadena de caracteres desde un array";
printf("%s", cadena[var]);
Deberнa imprimir la variable "cadena" desde la celda nъmero 6.
Ahh, muchas gracias Design. No sй como explicar lo que entendн. pero vaaale mil gracias.
Reply
#4

El valor de index es tomado del bucle "for".

for(creamos la variable; establecemos una condiciуn; como queremos que progrese)

En el caso del ejemplo se crea la variable con valor 0, la condiciуn es que esa variable sea menos al tamaсo del array y en cada repeticiуn queremos que sume 1.

Por ejemplo:

pawn Код:
new array[6] = "penes";
printf("tamaсo: %d", sizeof(array));
// tamaсo: 6

new array[6][10];
printf("tamaсo1: %d. tamaсo2: %d", sizeof(array), sizeof(array[]));
// tamaсo1: 6. tamaсo2: 10
En tu caso lo que hace es "sizeof(Array_3D_A)" que devuelve 3 por que ese array tiene un tamaсo de 3, de ahн sale el valor de cuantas veces se repetirб.

for(creamos la variable index; mientras index < 3, repetimos; en cada repeticiуn le sumamos uno a index)
Reply
#5

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
El valor de index es tomado del bucle "for".

for(creamos la variable; establecemos una condiciуn; como queremos que progrese)

En el caso del ejemplo se crea la variable con valor 0, la condiciуn es que esa variable sea menos al tamaсo del array y en cada repeticiуn queremos que sume 1.

Por ejemplo:

pawn Код:
new array[6] = "penes";
printf("tamaсo: %d", sizeof(array));
// tamaсo: 6

new array[6][10];
printf("tamaсo1: %d. tamaсo2: %d", sizeof(array), sizeof(array[]));
// tamaсo1: 6. tamaсo2: 10
En tu caso lo que hace es "sizeof(Array_3D_A)" que devuelve 3 por que ese array tiene un tamaсo de 3, de ahн sale el valor de cuantas veces se repetirб.

for(creamos la variable index; mientras index < 3, repetimos; en cada repeticiуn le sumamos uno a index)
Muchas gracias, y es lo que habнa entendido ayer, Hoy iba a empezar a profundizar sobre esto pero me dejaste mбs clara las cosas.
Reply
#6

Perdonen, no sй si se sanciona el Doble comentario, Pero resulta que observando detalladamente no entiendo una parte.

pawn Код:
new Array_3D_B [] [] [] =
{
    {float:102.14571,   "******",       4100},
    {float:452.45245,   "*******",      4012},
    {float:124.78951,   "Memebase",     4501}
};

main()
{
for ( new index = 0; index < sizeof Array_3D_B; index++ )
    {
        printf
        (
            "Data: %f | %s | %i",
            Array_3D_B[index][0],
            Array_3D_B[index][1],
            Array_3D_B[index][2]
        );
    }

}
Bien, yo entiendo casi todo, sй como funciona en gran parte el cуdigo. Pero en la parte del bucle me sigue surgiendo una duda, Que me han despejado la mitad pero aъn sigue.

Si el sizeof obtiene el tamaсo del array en el bucle for segъn eso le sumara a la variable index, Osea 3.
Que viene saliendo tres repeticiones, Vale pero si nos ponemos a ver el array tridimensional posee tres slots

[x][x][x], їComo sabe el sizeof cuбl es el slots que va a extraer el valor?. їO siempre extraerб los valores del primer slots? (Slot seсalado con negrita)

[x][x][x]

їNo?.

PD: Escribiendo estй mensaje entendн algo mбs.

EDIT: No, olvidenlo, entendн si observamos bien la id de los slots en la grбfica, Osea la linea vertifical
puta madre ya entendн

Reply
#7

Julian con su cуdigo ya te mostrу como se hacia. Te cito:

pawn Код:
new array[6] = "penes";
printf("tamaсo: %d", sizeof(array));
// tamaсo: 6

new array[6][10];
printf("tamaсo1: %d. tamaсo2: %d", sizeof(array), sizeof(array[]));
// tamaсo1: 6. tamaсo2: 10
Si quieres obtener la dimensiуn del primer "mundo", usas simplemente el nombre de la variable; para el segundo "mundo" usas "variable[]", y asн sucesivamente.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)