arreglos (1)

12
UNIVERSIDAD MILITAR “NUEVA GRANADA” CENTRO DE SISTEMAS 1 5. ALMACENAMIENTO DE DATOS EN ARREGLOS (ARRAYS) OBJETIVOS DE LA UNIDAD Utilizar datos compuestos o (estructurados) para el almacenamiento de información, como son los arreglos. INTRODUCCION Para resolver algunos problemas es necesario manejar datos del mismo tipo; los arreglos nos permiten mantener en memoria datos sin necesidad de disponer de una variable por cada elemento, además almacenar y manipular grandes cantidades de datos. Los arreglos son un conjunto de variables que en la memoria ocupan posiciones continuas de almacenamiento y que tienen un mismo nombre. El grupo de variables que conforman un arreglo tienen las mismas características, es decir, son de la misma clase (numérica o alfanumérica); y además tienen el mismo tamaño, luego es un conjunto finito y ordenado de elementos homogéneos. El tipo de dato almacenado en un arreglo puede ser cualquiera: numérico, carácter o lógico. Por ejemplo se puede almacenar en un arreglo los nombres de los estudiantes de un curso, la temperatura mínima registrada en una ciudad durante una semana o las coordenadas de una figura en el plano cartesiano. Los arreglos pueden ser: unidimensionales y bidimensionales. A los arreglos de una dimensión se denominan listas o vectores, a los de dos dimensiones se les llama tablas o matrices, a los de más dimensiones se les denomina arreglos de n dimensiones. 5.1. ARREGLOS UNIDIMENSIONALES Los arreglos de una dimensión, llamados también listas o vectores, permiten almacenar datos que tienen las mismas características. Se caracterizan por tener un solo subíndice. Por ejemplo: nombres, sueldos, edades, temperatura, talla, etc. En general se puede visualizar un arreglo de una dimensión de la siguiente forma: NOMBRE: talla POSICION: 1 2 3 4 5 6 7 8 9 10 ELEMENTO talla[0] talla[1] . . . Talla[9] Esto es el arreglo talla tiene 10 elementos: talla[0] contiene 1.65, talla[1] contiene 1.35, talla[2] contiene 1.45, talla[3] contiene 1.65 y así sucesivamente, el último elemento, talla[9] contiene 1.60. 1.65 1.35 1.45 1.65 1.23 1.66 1.42 1.50 1.75 1.60 CONTENIDO:

Upload: andres-gil

Post on 18-Dec-2015

217 views

Category:

Documents


0 download

DESCRIPTION

arreglos c++

TRANSCRIPT

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    1

    5. ALMACENAMIENTO DE DATOS EN ARREGLOS (ARRAYS)

    OBJETIVOS DE LA UNIDAD Utilizar datos compuestos o (estructurados) para el almacenamiento de informacin, como son los arreglos. INTRODUCCION Para resolver algunos problemas es necesario manejar datos del mismo tipo; los arreglos nos permiten mantener en memoria datos sin necesidad de disponer de una variable por cada elemento, adems almacenar y manipular grandes cantidades de datos. Los arreglos son un conjunto de variables que en la memoria ocupan posiciones continuas de almacenamiento y que tienen un mismo nombre. El grupo de variables que conforman un arreglo tienen las mismas caractersticas, es decir, son de la misma clase (numrica o alfanumrica); y adems tienen el mismo tamao, luego es un conjunto finito y ordenado de elementos homogneos. El tipo de dato almacenado en un arreglo puede ser cualquiera: numrico, carcter o lgico. Por ejemplo se puede almacenar en un arreglo los nombres de los estudiantes de un curso, la temperatura mnima registrada en una ciudad durante una semana o las coordenadas de una figura en el plano cartesiano. Los arreglos pueden ser: unidimensionales y bidimensionales. A los arreglos de una dimensin se denominan listas o vectores, a los de dos dimensiones se les llama tablas o matrices, a los de ms dimensiones se les denomina arreglos de n dimensiones.

    5.1. ARREGLOS UNIDIMENSIONALES Los arreglos de una dimensin, llamados tambin listas o vectores, permiten almacenar datos que tienen las mismas caractersticas. Se caracterizan por tener un solo subndice. Por ejemplo: nombres, sueldos, edades, temperatura, talla, etc. En general se puede visualizar un arreglo de una dimensin de la siguiente forma: NOMBRE: talla POSICION: 1 2 3 4 5 6 7 8 9 10 ELEMENTO talla[0] talla[1] . . . Talla[9] Esto es el arreglo talla tiene 10 elementos: talla[0] contiene 1.65, talla[1] contiene 1.35, talla[2] contiene 1.45, talla[3] contiene 1.65 y as sucesivamente, el ltimo elemento, talla[9] contiene 1.60.

    1.65 1.35 1.45 1.65 1.23 1.66 1.42 1.50 1.75 1.60 CONTENIDO:

  • MANUAL DE LGICA Y ALGORITMOS

    2

    Si el nombre del arreglo es a, entonces a[0] es el nombre del elemento que est en la posicin 1, a[1] es el nombre del elemento que est en la posicin 2. En general, el elemento i-simo, a[i], est en la posicin i+1. Estos nmeros se denominan ndices o subndices del arreglo.

    DECLARACIN DE UN VECTOR EN C++ Al igual que las variables, un arreglo se debe declarar antes de utilizarlo y se hace de modo similar a las variables, con la precaucin de mencionar el nmero de elementos que contendr el arreglo entre los corchetes cuadrados: Sintaxis de la instruccin:

    Tipo_de_dato nombre_del_arreglo[numero de elementos] Por ejemplo, para crear una lista de diez datos enteros con el nombre edades se escribe: Esto hace que el compilador reserve espacio suficiente para contener diez valores enteros, bajo el nombre edades. Los enteros ocupan 2 bytes, de modo que un arreglo de diez enteros ocupara 20 bytes de memoria. Se puede declarar uno o ms arreglos del mismo tipo en una misma instruccin as:

    INICIALIZACIN DE UN VECTOR EN C++ Una vez declarado el arreglo y antes de utilizarlo, se le debe asignar valores a cada elemento, esto es, proporcionarle los datos que almacenar al arreglo. Para asignar estos valores podemos proceder de las siguientes tres maneras: En la declaracin del arreglo, as: En este caso cada uno de los 10 elementos del arreglo edades asume su valor. En el caso de que le faltaran valores, los asumira con ceros; por el contrario si sobran elementos, se produce un error. Inicializar en ceros todo el arreglo:

    int edades[10];

    float b[10], c[7], d[4];

    int edades[10]={12,16,20,18,17,11,10,16,19,20};

    int n[8]={0};

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    3

    En este caso cada uno de los 8 elementos del arreglo n asume valor 0. Utilizando una estructura de repeticin como while, do-while o for: En este caso cada uno de los 10 elementos del arreglo unos, asume el valor de 1. Ejemplo. Definir un vector que contenga las edades de 10 alumnos. Calcular y escribir la cantidad de alumnos mayores de edad y la cantidad de menores de edad. Variables: EDAD: Vector X: Sub-ndice C1: Cantidad de mayores de edad C2: Cantidad de menores de edad

    for(i=0;i

  • MANUAL DE LGICA Y ALGORITMOS

    4

    PSEUDOCODIGO

    DIAGRAMA DE FLUJO

    Inicio C1 0 C2 0 para X 0,9,1 hacer leer EDAD[X] si (EDAD[X] >= 18) entonces C1 C1+1 sino C2 C2 + 1 fin_si

    fin_para escribir C1,C2

    Fin

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    5

    CODIGO EN C++ /*Programa que ingresa en un vector las edades de 10 alumnos, calcula y escribe la cantidad de alumnos mayores de edad y menores de edad.*/ #include using namespace std; int main() { int EDAD[10],C1=0,C2=0; cout

  • MANUAL DE LGICA Y ALGORITMOS

    6

    Cada uno de los elementos de a, est identificado por un nombre de elemento de la forma: a[i],[j], donde i corresponde a la fila y j a la columna. En el siguiente ejemplo:

    Columna 0 Columna 1 Columna 2 Columna 3 Fila 0 900 600 755 280 Fila 1 400 450 615 715 Fila 2 300 680 420 690 Fila 3 250 550 150 800

    Cada elemento representa el cdigo de un trabajador cualquiera. Si a este conjunto de cdigos organizados por filas y columnas, se le asigna el nombre IDENTI, se puede hacer referencia a cualquier elemento del arreglo bidimensional agregando al nombre IDENTI, dos nmeros separados por una coma y encerrados entre parntesis (subndices). El primer nmero indica siempre la fila a la cual se hace referencia, y el segundo indica la columna.

    IDENTI[2],[3] = 690 IDENTI[2],[0] = 300 IDENTI[3],[3] = 800 IDENTI[0],[3] = 280

    DECLARACIN DE UNA TABLA EN C++ Los arreglos de dos dimensiones se deben declarar antes de ser utilizados, con la precaucin de mencionar el nmero de elementos: renglones y columnas, entre corchetes cuadrados. Sintaxis de la instruccin:

    Tipo_de_dato nombre_del_arreglo[numero_de_renglones][numero_de_columnas] Por ejemplo, para crear una tabla de tres renglones por diez columnas, de tipo numrico real y de nombre datos se escribe:

    INICIALIZACIN DE UNA TABLA EN C++ Las tablas se inicializan usando alguna de las siguientes tres formas: En la declaracin del arreglo:

    float datos[3][10];

    int tabla[2][3]={51,21,26,18,20,30}; otra forma: int tabla[2][3]={{51,21,26},{18,20,30}};

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    7

    Mencionando los elementos por cada rengln y separndolos por comas o especificando cada rengln en unas llaves. Si faltaran mencionar elementos, C++ llena los que faltaran con ceros. De cualquier forma el arreglo anterior se almacenara as:

    tabla 51 21 26 18 20 30

    Inicializar en ceros todo el arreglo: En este ejemplo se define un arreglo de 12 renglones por 5 columnas. Se coloca entre llaves el valor cero punto cero, por ser de tipo float (cero enteros, cero decimales). Utilizando una estructura de repeticin como while, do-while o for: En esta sentencia se requiere utilizar dos instrucciones repetitivas anidadas, se recomienda que sean for, de tal forma que la primera controla los renglones y la segunda o ms interna, controla las columnas. As cuando termine de llenar los elementos del primer rengln, al hacer el recorrido por cada una de las columnas, se pasa al segundo rengln, se inicia de nuevo el proceso de llenar todo el rengln y se pasa al tercero y as sucesivamente hasta terminar toda la tabla. Ejemplo. Elaborar un algoritmo para guardar en la memoria las notas de 20 estudiantes de un curso en las siete asignaturas que toman. VARIABLES: NOTA: Arreglo bidimensional que almacena las notas de los 20 estudiantes del curso en

    las siete asignaturas. J: Variable individual que se utiliza para modificar los sub-ndices que maneja las filas. K: Variable individual que se utiliza para modificar los sub-ndices que maneja las

    columnas.

    float ventas[12][5]={0.0};

    for(i_filas=0; i_filas

  • MANUAL DE LGICA Y ALGORITMOS

    8

    PSEUDOCODIGO

    DIAGRAMA DE FLUJO

    Inicio para J 0,19,1 hacer

    para K 0,6,1 hacer Leer NOTA[J],[K] fin_para fin_para

    fin

    /*Programa que guarda las notas de 20 estudiantes de un curso en las siete asignaturas que toman */ #include using namespace std; int main() { int J,K; float NOTA[20][7]; //Captura de las notas for(J=0;J

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    9

    5.3. ARREGLOS MULTIDIMENSIONALES C++ proporciona la posibilidad de definir arreglos de varias dimensiones o multidimensionales, as por ejemplo: Podemos pensar en un arreglo tres dimensiones como un cubo que se caracteriza por tener tres ndices, que se construye con la dimensin vertical o filas, la dimensin horizontal o columnas y la dimensin de profundidad o planos. Si lo comparamos con Excel, podramos decir que un dato tiene direccin de columna, fila y hoja. Por ejemplo podemos tener las ventas de una cadena de almacenes, donde las organizamos por sucursal, ciudad y ao. Para inicializar un arreglo tridimensional o de ms dimensiones, obramos de la misma manera que con las tablas, utilizando una estructura de repeticin for, para inicializar un arreglo de tres dimensiones, as:

    for(i_pagina=0; i_pagina

  • MANUAL DE LGICA Y ALGORITMOS

    10

    Por ejemplo podemos utilizar una estructura de repeticin for, para inicializar un arreglo de tres dimensiones de tamao 2 x 3 x 5 y que llenamos con unos(1): /*programa que llena de unos un arreglo de tres dimensiones*/ #include using namespace std; int main() { int v[2][3][5],k,i,j; //INICIALIZACION DEL ARREGLO for(k=0;k

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    11

    EJEMPLOS: EJEMPLO 1 Una esfera es lanzada horizontalmente desde diferentes alturas: 15,25,35,49,68,80,99; calcular el tiempo que dura la esfera en el aire.

    gyt 2= g=gavedad=9.8 m/s

    /*Una esfera es lanzada horizontalmente desde diferentes alturas: 15,25,35,49,68,80,99; calcular el tiempo que dura la esfera en el aire.*/ #include #include using namespace std; int main() {

    double vector1[7]= {15,25,35,49,68,80,99}; double vector2[7]; int i; for(i=0;i

  • MANUAL DE LGICA Y ALGORITMOS

    12

    EJEMPLO 2 Hacer un programa en C++ que muestre el nmero de pasajeros que lleva un avin. Cada avin tiene 50 filas de asientos por 6 columnas. Para efectos de sistematizacin, un asiento ocupado se representa mediante un uno y un asiento libre con un cero.

    /*PROGRAMA QUE MUESTRA EL NUEMRO DE PASAJEROS QUE LLEVA UN AVION EL AVION TIENE 50 FILAS DE ASIENTOS POR SEIS COLUMNAS UN ASIENTO OCUPADO SE REPRESENTA MEDIANTE UN UNO Y UN ASIENTO LIBRE CON UN CERO*/ #include #include using namespace std; int main() { int avion [50] [6],o=0,d=0,i,j; for (i=0; i