Como funciona este arreglo?

Iniciado por FKT, 7 Septiembre 2015, 19:38 PM

0 Miembros y 2 Visitantes están viendo este tema.

FKT

#include <stdio.h>

int arreglo [5]

int main(){

   for(int i = 0; i > 5; i++)
   {
   printf("\nIngrese el valor del arreglo en la posicion %i: ",i);
   scafn("%i",&arreglo[i]);

return 0;



Si declaramos un arreglo con 5 posiciones, (0, 1, 2, 3, 4)  por qué pone en el printf "arreglo ?? Si no hay ninguna posicion "i" Solo hay 5  ?¿
Solo hay 10 tipos de personas, las que saben binario y las que no.

engel lex

"i" es una variable... la declaras en el for

Código (cpp) [Seleccionar]
for(int i = 0; i > 5; i++)

puedes traducirlo como

"para i empezando en 0; mientras que i sea mayor que 5; incrementa en 1 a i por ciclo"


viendo eso tienes un error (en realidad 2 porque te falta cerrar el for)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

FKT

Cita de: engel lex en  7 Septiembre 2015, 19:54 PM
"i" es una variable... la declaras en el for

Código (cpp) [Seleccionar]
for(int i = 0; i > 5; i++)

puedes traducirlo como

"para i empezando en 0; mientras que i sea mayor que 5; incrementa en 1 a i por ciclo"


viendo eso tienes un error (en realidad 2 porque te falta cerrar el for)


Ya, sé como funciona el "for", y si , me he dejado el "}"  para cerrar el for, también sé que "i" es una variable xD Lo que pregunto es que que hace la "i" dentro del arreglo?? Y como funciona ?
Solo hay 10 tipos de personas, las que saben binario y las que no.

engel lex

#3
un arreglo es un señalador a una posición de memoria, el tipo es el largo del tipo de dato, el valor entre brackets es un multiplicador... ejemplo


arreglo aparta de la posición "326" de memoria, y aparta 5 espacios de 4 bits (tipo int)

cuando haces arreglo[0], sería "qué contiene la posición de memoria (326+4*0)?"

es decir
arreglo[0]

es similar a
*(arreglo+0)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

FKT

Cita de: engel lex en  7 Septiembre 2015, 20:03 PM
un arreglo es un señalador a una posición de memoria, el tipo es el largo del tipo de dato, el valor entre brackets es un multiplicador... ejemplo


arreglo aparta de la posición "326" de memoria, y aparta 5 espacios de 4 bits (tipo int)

cuando haces arreglo[0], sería "qué contiene la posición de memoria (326+4*0)?"

es decir
arreglo[0]

es similar a
*(arreglo+0)

Sigo sin entender el motivo de la variable "i" dentro de el arreglo.
Solo hay 10 tipos de personas, las que saben binario y las que no.

engel lex

i es un señalador a la posición de memoria... es decir


*(arreglo+i)

el primer valor será (con el ciclo corregido)

imprime *(arreglo+0)
imprime *(arreglo+1)
imprime *(arreglo+2)
...etc...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

FKT

#6
Cita de: engel lex en  7 Septiembre 2015, 20:16 PM
i es un señalador a la posición de memoria... es decir


*(arreglo+i)

el primer valor será (con el ciclo corregido)

imprime *(arreglo+0)
imprime *(arreglo+1)
imprime *(arreglo+2)
...etc...


Me estas diciendo que *(arreglo+0) es lo mismo que arreglo[0], *(arreglo+1) es igual que arreglo[1] y así... Si me estas diciendo eso, ya lo sé aunque creo que no has entendido mi pregunta o es que no me he explicado bien. Vuelvo ha hacer la pregunta:

#include <stdio.h>

int arreglo [5]

int main(){

   for(int i = 0; i > 5; i++)
   {
   printf("\nIngrese el valor del arreglo en la posicion %i: ",i);
   scafn("%i",&arreglo[i]);
   }
return 0;


Aquí en:
scanf("%i",arreglo[i]);

La variable "i" a que parte del programa hace referencia y como la opera?


Perdona.. Modifico este mensaje porque creo que lo he entendido, puede ser que en "arreglo" significa "arreglo[Aquí si por ejemplo "i" es igual a 20 pues hará referencia a el índice 20??]"


Espero tu respuesta.
Solo hay 10 tipos de personas, las que saben binario y las que no.

RockPosts

Como se ha dicho en este hilo, un arreglo, es decir, un puntero, apunta hacia una dirección de memoria. Ahora bien, en en caso de los arreglos, pasa lo siguiente:

Pongamos este ejemplo:
Código (cpp) [Seleccionar]
#include <iostream>

int main() {
        int valor[4] = {2, 3, 1, 4};

        std::cout << valor[0] << std::endl;
       
        std::cin.get();
        return 0;
}


En este caso, hemos declarado e inicializado un arregle de 4 elementos. Aunque tu veas el arreglo así, en realidad lo que almacena 'valor' es una dirección que apunta al primer byte de ese arreglo:



Como puedes ver,lo que almacena en realidad nuestro arreglo, es donde se encuentran los datos del arreglo

Entonces, volviendo al tema, lo que le debes pasar a scanf es DONDE quieres que guarde lo que ha leido de la consola, entonces debes pasarle LA DIRECCION DEL ELEMENTO DEL ARRAY QUE LE QUIERES PASAR. Para hacer esto, primero debes indicar que elemento quieres cambiar (lo cual se hace con los corchetes []), y después debes pasarle donde está ese elemento, con el operador &.

Entonces, en resumidas cuentas, lo que hace este programa es acceder a los elementos del arreglo por orden, porque la variable 'i' va tomando valores desde 0 hasta 4

FKT

Por fin lo he entendido  ;D Gracias gente y Saludos.
Solo hay 10 tipos de personas, las que saben binario y las que no.

RockPosts

Me alegro que te sirviese!! Cada vez que se se te resuelva una duda, marca el hilo como que ya ha sido respondida tu duda