elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como funciona este arreglo?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Como funciona este arreglo?  (Leído 4,553 veces)
FKT

Desconectado Desconectado

Mensajes: 221



Ver Perfil
Como funciona este arreglo?
« en: 7 Septiembre 2015, 19:38 pm »

Código
  1. #include <stdio.h>
  2.  
  3. int arreglo [5]
  4.  
  5. int main(){
  6.  
  7.    for(int i = 0; i > 5; i++)
  8.    {
  9.    printf("\nIngrese el valor del arreglo en la posicion %i: ",i);
  10.    scafn("%i",&arreglo[i]);
  11.  
  12. return 0;
  13.  
  14.  

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  ?¿


« Última modificación: 8 Septiembre 2015, 11:25 am por FKT » En línea

Solo hay 10 tipos de personas, las que saben binario y las que no.
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como funciona este arreglo?
« Respuesta #1 en: 7 Septiembre 2015, 19:54 pm »

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

Código
  1. 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)


En línea

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

Desconectado Desconectado

Mensajes: 221



Ver Perfil
Re: Como funciona este arreglo?
« Respuesta #2 en: 7 Septiembre 2015, 19:57 pm »

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

Código
  1. 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 ?
En línea

Solo hay 10 tipos de personas, las que saben binario y las que no.
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como funciona este arreglo?
« Respuesta #3 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
Código:
arreglo[0]

es similar a
Código:
*(arreglo+0)
« Última modificación: 7 Septiembre 2015, 20:11 pm por engel lex » En línea

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

Desconectado Desconectado

Mensajes: 221



Ver Perfil
Re: Como funciona este arreglo?
« Respuesta #4 en: 7 Septiembre 2015, 20:14 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
Código:
arreglo[0]

es similar a
Código:
*(arreglo+0)

Sigo sin entender el motivo de la variable "i" dentro de el arreglo.
En línea

Solo hay 10 tipos de personas, las que saben binario y las que no.
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como funciona este arreglo?
« Respuesta #5 en: 7 Septiembre 2015, 20:16 pm »

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


Código:
*(arreglo+i)

el primer valor será (con el ciclo corregido)

Código:
imprime *(arreglo+0)
imprime *(arreglo+1)
imprime *(arreglo+2)
...etc...
En línea

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

Desconectado Desconectado

Mensajes: 221



Ver Perfil
Re: Como funciona este arreglo?
« Respuesta #6 en: 7 Septiembre 2015, 20:46 pm »

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


Código:
*(arreglo+i)

el primer valor será (con el ciclo corregido)

Código:
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:

Código
  1. #include <stdio.h>
  2.  
  3. int arreglo [5]
  4.  
  5. int main(){
  6.  
  7.    for(int i = 0; i > 5; i++)
  8.    {
  9.    printf("\nIngrese el valor del arreglo en la posicion %i: ",i);
  10.    scafn("%i",&arreglo[i]);
  11.    }
  12. return 0;

Aquí en:
Código
  1. 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.
« Última modificación: 7 Septiembre 2015, 20:53 pm por FKT » En línea

Solo hay 10 tipos de personas, las que saben binario y las que no.
RockPosts

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Como funciona este arreglo?
« Respuesta #7 en: 7 Septiembre 2015, 21:21 pm »

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
  1. #include <iostream>
  2.  
  3. int main() {
  4.        int valor[4] = {2, 3, 1, 4};
  5.  
  6.        std::cout << valor[0] << std::endl;
  7.  
  8.        std::cin.get();
  9.        return 0;
  10. }

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
En línea

FKT

Desconectado Desconectado

Mensajes: 221



Ver Perfil
Re: Como funciona este arreglo?
« Respuesta #8 en: 7 Septiembre 2015, 22:54 pm »

Por fin lo he entendido  ;D Gracias gente y Saludos.
En línea

Solo hay 10 tipos de personas, las que saben binario y las que no.
RockPosts

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Como funciona este arreglo?
« Respuesta #9 en: 7 Septiembre 2015, 23:34 pm »

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
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cómo arreglo este problema?
Redes
Narciso12345 4 2,498 Último mensaje 27 Mayo 2015, 23:21 pm
por Narciso12345
Como funciona un arreglo o vector?
Programación C/C++
FKT 7 3,935 Último mensaje 25 Agosto 2015, 20:58 pm
por avesudra
¿Como funciona un arreglo?
Programación C/C++
fafafa01 1 1,972 Último mensaje 29 Junio 2016, 08:04 am
por engel lex
como arreglo este error
Programación C/C++
KanoxSmoKinG 7 2,503 Último mensaje 15 Marzo 2017, 18:21 pm
por KanoxSmoKinG
como es posible que este programa funciona y como funciona?
Ingeniería Inversa
insider dealing 7 8,819 Último mensaje 1 Octubre 2017, 01:23 am
por BloodSharp
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines