Dev-C++, clase14 – arreglos

Hola a todos/as,

A medida que avanzamos con la materia pues vamos viendo conceptos nuevos y que se pueden aplicar tanto para

– Disminuir lineas de codigo

– Mas claridad y criterio a la hora de programar

– Obtener una “idea” de como un problema se puede resolver de diversas maneras

Entre otras.. Y entonces aqui vamos a ver un nuevo concepto que nos ayuda en lo que he detallado anteriormente.

Bien, pero muchos dirán,

¿ Qué es un arreglo ?

Un arreglo ó vector es un conjunto de variables que poseen el mismo nombre y el mismo tipo de dato con la unica diferencia que está ubicada en una posicion diferente.

¿ Cómo es su sintaxis ?

Pues un arreglo debe ser declarado asi:

tipo de dato nombre del arreglo [ número de variables que se quiere tener ] ;

Llevado a un ejemplo tangible seria: int edad [ 19 ];

Eso quiere decir que tendremos 20 variables llamadas edad que son de tipo entero ( int ).

¿ Pero qué es eso de que int edad [ 19 ] tiene 20 variables si yo veo 19 ?

Bien ese es una tipica pregunta, porque es muy cierto ¿ Por qué ponemos 19 si queremos 20 ? , la respuesta es porque la maquina comienza a contar desde el cero ( 0 ).

Yo en lo personal siempre pongo éste ejemplo:

¿ Cuántos dedos tengo en la mano ? -> 10 ( me responderia una persona )

¿ Cuántos dedos tengo en la mano ? -> 9 ( me responderia una maquina )

Porque la persona comienza a contar desde uno ( 1 ), y la maquina desde cero ( 0 ).

Otro ejemplo, voy a un baño y veo a 2 personas entonces:

– Para mi ( como persona ) que cuento desde el 1 hay dos personas, osea:

persona 1 y persona 2 —> (persona 1 + persona 2) = 2 personas

– Pero para el lenguaje de programacion ( como maquina ) que cuenta desde el 0 hay 2 también, pero contadas desde el cero, osea:

persona 0 y persona 1 —> (persona 0 + persona 1) = 2 personas

Eso es explicandolo de manera didactica a ustedes amigos/as, pero bueno si bien es cierto quiza a unos ya les habran dado la regla general

aquella regla dice que: ” Los arreglos van de la posicion cero a la posicion n-1( donde n es la cantidad total de variables que queremos tener )

Y eso es lo mismo que les expliqué de manera mas didactica, vamos con un ultimo ejemplo:

Si quiero 5 caramelos entonces n=5 y el concepto dice que los arreglos van de 0 hasta n-1. Por lo tanto lo unico que hacen es reemplazar valores:

n-1 -> 5-1 —> 4. Entonces mi arreglo caramelos va a ser asi: int caramelos [4].

¿ Cuál es su uso ?

Como está en el concepto es un conjunto de variables es decir que en un arreglo puedo tener N variables y ahorrarme estar declarando esas N variables manualmente, por ejemplo:

Declarar: int n1,n2,n3,n4,n5,n6,n7,n8;

Es lo mismo que declarar: int n[7];

como ven se ahorra mucho al hacerlo, y se ve un mejor criterio a la hora de programar😉

Ahora vamos a hacer un ejercicio para plasmar los conceptos en un programa, vamos a ello:

19.) Hacer un programa que pida 12 numeros en orden y que muestre de los 12 numeros solo el tercero,sexto,decimo.

Por favor antes de ver ésta entrada recomiendo ver la entrada:

Uso de la aplicacion

ATENCION: en las clases anteriores he explicado las lineas y que hace cada una, entonces les sugiero que vean las entradas anteriores para entender las lineas de las que no voy a hacer mucha enfasis.

Las lineas que ya hayamos visto, les colocaré ” *** “  al final para que sepan que ya lo hemos visto con anterioridad ( entiendase como “anterioridad” a la/las clases anteriores ademas de sus correspondientes entradas en la seccion “General” del mapa de sitio ).

#include <iostream.h>
#include <conio.h>

main()
{
int x,numero[11];
cout<<“\n Ingrese los 12 numeros:\n”;
for (x=0; x<=11; x++)
{
cout<<“numero “<<x<<“: “;
cin>>numero[x];
}
cout<<“\n Tercer numero: “<<numero[2];
cout<<“\n Sexto numero: “<<numero[5];
cout<<“\n Decimo numero: “<<numero[9];
getch();
}

– linea 1 – 2: la cabecera y libreria ***

– linea 3: funcion principal ***

– linea 4 – 16: inicio y fin del programa ***

– linea 5: declaramos variables ***

Aqui podemos ver que se ha declarado dos variables:

x -> variable para el for

numero[11] -> arreglo de 12 variables llamadas numero

y ambas estan bajo el tipo de dato int, asi que van a llevar datos enteros.

– linea 6: recurso ” cout ” ***

– linea 7: instruccion repetitiva: ” for ” ***

Con la variable x declarada como entera al comienzo, vamos a hacer dos acciones 12 veces:

– Nuestra primera accion será mostrar un mensaje: ” Ingrese el numero x ” ( donde x va a ir cambiando cada ves que se repita el “for” )

Puesto a que x inicialmente tiene cero ( 0 ), lo podemos ver en la definicion del for cuando ponemos (x=0; x<=11; x++)

Ahi decimos que x tendra un valor inicial de cero y llegará hasta 11 ( porque de cero a once hay 12 numeros y eso queremos “12 numeros” ), y va a ir de 1 en 1.

Bien entonces cuando mostremos: “ingrese el numero x“,

en la primera vez dirá: “ingrese el numero 0“,

en la segunda: “ingrese el numero 1” y asi sucesivamente…

La otra acción que debemos realizar dentro del “for” será pedir el numero, lo veremos con mas detalles mas abajo.

– linea 8 – 11: inicio y fin del ” for ” ***

– linea 9: recurso ” cout ” ***

Aqui es lo que les decia antes, sobre como se va a mostrar el incremento😉

– linea 10: recurso ” cin ” ***

Bien, ya ahorita sabemos de sobra como ingresar variables pero con arreglos algunos se pueden confundir, por eso voy a explicarlo

mas detalladamente para que se entienda bien lo que se va a hacer en ésta linea.

Como sabemos para pedir un dato se usa el recurso ” cin ” y antes lo haciamos por ejemplo de ésta manera:

cin >> numero1;

Bien, ahora como ya no estamos trabajando con variables solitarias sino con un conjunto de variables es decir un arreglo, debemos saber

que en el caso de “numero” nosotros tenemos 12 ( con el mismo nombre y tipo ), y asi como les decia antes seria lo mismo que poner doce lineas asi:

cin>>numero1;

cin>>numero2;

cin>>numero3;

cin>>numero4;

y asi sucesivamente hasta pedir el numero12, pero eso NO vamos a hacer porque existen los arreglos que nos facilitan la vida evitandonos el estar declarando muchas variables para mas de usarlas una vez.. para ello tenemos nuestro numero [11]

Y asi mismo eso quiere decir que tengo un numero1,numero2,numero3,…….,numero12 pero no de manera individual sino en conjunto y se eso se denota por la posicion ya que poseen el mismo nombre y tipo, solo las podemos diferenciar por su posicion:

numero[0],numero[1],numero[2],numero[3],numero[4],numero[5],……….,numero[11]

Y si se fijan en el “for” la variable x va a ir incrementandose desde 0 hasta 11 de 1 en 1. Entonces podemos usar ese incremento para indicarle la posicion del arreglo en la que estamos pidiendole que ingrese el dato, de ésta manera:

– Cuando inicia el for, x vale cero entonces pedimos: numero [x] que equivale a pedir numero [0]

– Luego el for incrementa en 1, x vale 1 ( 0+1 ) entonces pedimos: numero [x] que equivale a pedir numero [1]

– Luego el for incrementa en 1, x vale 2 ( 1+1 ) entonces pedimos: numero [x] que equivale a pedir numero [2]

– Luego el for incrementa en 1, x vale 3 ( 2+1 ) entonces pedimos: numero [x] que equivale a pedir numero [3]

Y asi sucesivamente hasta llegar a que x=11 y se pide: numero [11] ese seria el ultimo. ( ya que queriamos 12 y de cero a once hay 12 ).

– linea 12,13,14: recurso ” cout ” ***

Como en el enunciado nos pedian que mostremos los que estan en la posicion 3 , 6 y 10 pues vamos a mostrarlos

y como ya venimos viendo seria:

* Para la posicion 3 —-> numero[2] ( porque va de cero a n-1 es decir de cero a 3-1 )

* Para la posicion 6 —-> numero[5] ( porque va de cero a n-1 es decir de cero a 6-1 )

* Para la posicion 10 —-> numero[9] ( porque va de cero a n-1 es decir de cero a 10-1 )

– linea 15: pausando el programa ***

Muy bien ahi termina lo que debemos saber sobre arreglos para realizar eficientemente muchos ejercicios donde nos piden variedad de variables. Asi mismo, cualquier duda/sugerencia/comentario lo atenderé en cuanto se me haga posible. Saludos!😉

28 comentarios

  1. Muy interesante amigo, encontre tu blog por casualidad y estoy siguiendo tus clases que me vienen muy bién ya que estoy estudiando programacion en lenguaje C. Ahora tengo una duda cuando dećis ¿Cuantos dedos tengo en una mano? yo creo que la maquína te diría 10 y no 9, Si bien tienes los dedos 0,1,2,3,4,5,6,7,8,9 la cantidad son 10. Corrigeme si me equivoco. Gracias por el aporte, seguí así. Saludos.

    • Hola Frank, bienvenido!
      Primero gracias por las felicitaciones, ahora con respecto a tu duda tienes razon en tu punto de vista pero yo no hablaba del conjunto total que vendria a ser 10 dedos, yo me referia a cuantos dedos tengo de ésta manera:
      * Para la persona:
      dedo: 1,2,3,4,5,6,7,8,9,10
      * Para la maquina:
      dedo: 0,1,2,3,4,5,6,7,8,9
      Si ves el “tope” para la maquina es 9, el “tope” para la persona es 10 por lo mismo que ya sabes, que la maquina comienza a contar de cero, ahora el conjunto total de dedos siempre va a ser el mismo en ambos casos: 10 dedos solo que visto de dos maneras con el primer dedo en la posicion cero ó el primer dedo en la posicion uno.
      Saludos!

  2. Hola Eddy! Muchas gracias por seguir posteando tus clases en tu blog. Me ayuda mucho, recien estoy en el primer ciclo, y tus clases me vienen muy bien para reforzar lo aprendido.

    Te cuento que estoy promocionando tu blog en mi salón, y a todos les encantaron tus clases!

    Sigue así!!

    • Hola Fanfita, muuuuchas gracias por el apoyo!!
      me satisface mucho ayudarte constantemente en tu paso por el primer ciclo
      espero te vaya todo bien, y cualquier cosa por aqui estoy para ayudar en
      lo que se me haga posible, un abrazo enorme gracias por todo y sigue asi tu tambien!😀

  3. que mas Eddy, bien?…bueno otra vez yo solo que ahora es en c++,pues aun no entiendo muy bien las herramientas de este programa, que dice: calcular los cuadrados de una serie de #s introducidos por teclado y decir cuantos #s se han leido. Y orto inconvenientees que en unos codigos fuente que he hecho me aparece: “expected primary-expression before “else” “expected `;’ before “else” . Agradeceria mucho la ayuda que me pudieras dar. Gracias y chao.

    • Hola Western, si estoy bien gracias a Dios.
      Con respecto al tema, mira que tienes dos preguntas claras que te dicen que debes hacer:
      – calcular los cuadrados de varios #s
      – decir cuantos #s fueron ingresados

      Bien para hallar los cuadrados debes multiplicar el mismo numero dos veces. Por ejemplo w*w ( 2*2 ) en caso de que haya tenido “2” la variable “w”
      Ahora para saber cuantos fueron los #s ingresados debes hacer uso de un contador.
      Los contadores se los inicializa con “cero”, y toda ésta operacion la debes hacer en un “for”
      Es decir, en el for debes ir pidiendo los #s e ir contando cuantos fueron ingresados con el contador “c” por ejemplo..
      y en el mismo for ir calculando respuesta=numero*numero
      y vas a ir mostrando cada respuesta, ya que los numeros que ingrese el usuario seran diferentes.
      Ahora con respecto al error que te sale en el codigo fuente, ese que me señalas quiere decir que tu quizas tenias algo asi:

      if ( n>0 )
      cout<<"hola"
      else
      cout<<"Adios";

      O ya sea una operacion de calculo como a=b+c
      Lo que pasa es que posiblemente te has olvidado de colocarle “;” al final de la expresion antes del else.

      Saludos!, igual cualquier cosa por aqui estamos.

  4. Hola Eddy ,espero que te encuentres bien . tus clases son buenas y didacticas .Queria darte las gracias por la facilidad que das a las personas que recien empiezan en programacion ,curso el primer ciclo y me sirve .
    Quisiera pedirte que sigas dando mas problems resueltos si me podrias enviar por favor !cuidate man ! sigue asi !.

    • Hola egok, bienvenid@!
      Muchas gracias por el apoyo, siempre que tenga tiempo y haya algún ejercicio
      propuesto de parte de ustedes, con gusto haría lo posible por resolverlo y luego subirlo. Saludos!

  5. Hola eddy me podrias explicar un ejemplo basico del tema de funciones .por favor amio , cuidate muchas gracias .

  6. eddy soy seguidora y tengo que hacer un programa que me encargaron en la escuela que dice asi.
    crea un programa en el cual captures en un arreglo 20 edades y luego utilices esos datos en una estructura de datos en el cual se capture el conjunto de datos siguientes:nombre,edad,sexo,casado.En el dato de casado solo se captura S o N, que se refiere a si si es casado o no es casado,determinar unicamente cuantos estan casados.

    • Hola Alejandra, bienvenida!
      pues mira, no tenemos informacion en el blog por ahora sobre estructuras, pero vamos
      te voy a dar el formato, debes declara una estructura asi:
      struct datos
      {
      char nombre[10],casado,sexo;
      int edad;
      } persona;
      bueno, entonces al usar “persona” podrás linkearte a las variables de la estructura “datos” usando el punto “.” y puedes pedir los datos asi:
      cin>>persona.nombre;
      cin>>persona.casado;
      cin>>persona.sexo;
      cin>>persona.edad;
      …..
      Y pues el resto es normal, validaciones y etc.
      Saludos!

  7. necesito hacer un progrma que me lea 5 vectores de 10 elementos pero que el programa me de el resultado en el orden inverso al que entraron me pueden ayudar pliss!!

    • Hola Jeamileth, bienvenida!
      Pues solo debes hacer un ciclo for normal solo que en vez de recorrerlo de “0” en adelante, lo recorres desde la ultima posicion hasta “0” ahi los muestras de forma inversa a como fueron ingresados. Saludos!

  8. gracias amigo lo felicito por sus enseñansas bien demostradas

  9. Hola felicidades por el blog y la labor que realizas en enseniar. Ahora tengo una duda con los arreglos se podria hacer este ejemplo, si es asi como seria el pseudo, lo intente en el DFD pero no me sale. Imprimir las tablas del 10 al 7 o las tablas del 20 al 15, etc. Es decir, indicar la tabla de inicio y la tabla de término así como los números de donde inician y donde terminan las tablas.
    Estamos atentos.

  10. hola eddy, estoy haciendo un cuetionario de tarea
    la pregunta me pide que escriba como se declara un arreglo de 100 letras y como sub pregunta me indica que escriba el conjunto de intrucciones para que me muestre la cantidad de letras “A guardadas en le arreglo. me explicas por favor.

    La otra pregunta que no he podido contestar es sobre los arreglos bidimensionales. la pregunta me pide que indique como se declara un arreglo de ese tipo lo cual ya se no que no puedo entender es como es la sintaxis para leerlos se que se utiliza el cin>> pero no lo tengo claro como se escribe, gracias ESTAS CUASTIONES SON GUIA PARA MI EXAMEN.

  11. gracias por la informacion.
    estudio el NMS y programacion es algo pesado pero divertido.
    me ayudo mucho
    gracias

  12. hola gracias

  13. hola me parece muy interesante tu informacion xq eso es lo que estoy viendo que me recomiendas para aprender a programar x q me cuesta trabajo visualizar los codigos tu explicacion fue muy precisa de ese ejercicio.gracias

  14. Hola!!!! te cuento que haces un aporte muy importante para nosotros, y cada vez mas voy entendiendo gracias a ti, igual quisera hacerte una pregunta…en ese mismo ejemplo tuyo se podria excluir algun numero, es decir q yo digite el numero que deseo eliminar y cuando imprima no aparezca? saludos!!

  15. Hola!!! Muy Buena Informacion Señor Eddy Me podrias Ayudar en un Programa

    // Hacer un arreglo que me pida diez numeros que sean primos y me halle el promedio de los numeros!!!
    Grax!!!

  16. hola alguien me puede ayudar quiero un programa que acomode 9 numeros en tres diferentes formas como matriz o algo asi y una como caracol ejemplos 1 2 3 ; 9 8 7 ; 3 2 1 ayuda es urgente jaja
    4 5 6 6 5 4 4 9 8
    7 8 9 3 2 1 5 6 7

  17. Gran explicación!!!!

  18. nesesito un programa de arreglo dond ordene 5 numeros del menor al mayor

  19. ola…necesito saber como puedo hacer un arreglo de 3 dimensiones :C y como usarla con el ciclo while en vez del for😀 espero que leas luego esto🙂

  20. Compadre muchas Gracias entendi mas esta guia que mis clases de programacion😀

  21. *Ésta guia me lo deja mas claro que mis clases de programacion😀 , eso intente escribir

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: