Anda di halaman 1dari 20

ARREGLOS

Por: Anglica M. Pierre

Definicin
Un arreglo es una coleccin finita, homognea y ordenada de elementos.
Finita: Porque todo arreglo tiene un lmite, es decir, se debe

determinar cul es el nmero mximo de elementos del arreglo. Homognea: Porque todos los elementos del arreglo deben ser del mismo tipo. Ordenada: porque se puede determinar cul es el primer elemento, cul es el segundo y as sucesivamente.
A es el nombre del arreglo
Homogneo: Todos los elementos de datos son Del mismo tipo.

Finito: se debe indicar cul es el ltimo elemento

15 23 8

20 13

0
Ordenado: Los elementos son almacenados en forma ordenada por el ndice.

A[0]

A[1]

A[2]

A[3]

A[4]

A[5]

A[6]

A[7]

A[8]

A[9]

Arreglos
Surgen por el problema de que muchas veces es necesario

procesar muchos datos del mismo tipo y realizando el mismo procedimiento. Los tipos simples de datos (enteros, flotantes, caracter, lgicos), ocupan una sola casilla de memoria. Los tipos estructurados de datos ocupan un grupo de casillas de memoria y se identifican con un nombre. Los arreglos son un tipo de datos estructurados. Los datos estructurados tienen varios componentes donde cada uno puede ser un tipo simple de dato o bien un tipo estructurado de dato.

Arreglos
Existen varios tipos de arreglos: Unidimensionales llamados tambin vectores. Bidimensionales llamados tambin tablas o matrices. Tridimensionales Entre otros.

Arreglos Unidimensionales
Es una coleccin finita, homognea y ordenada de datos, en la que se hace referencia a cada elemento del arreglo por medio de un ndice. Este ltimo indica la casilla donde se encuentra el elemento. Tambin son llamados vectores. Permite almacenar N elementos del mismo tipo (enteros, reales, caracteres, cadenas de caracteres, etc.) y acceder a ellos por medio de un ndice. Existen dos partes fundamentales: 1. Los componentes: Son los elementos que se almacenan en cada una de las celdas o casillas. 2. ndice: Especifica la forma de acceder a cada uno de estos elementos.

Arreglos Unidimensionales
Para hacer referencia a un componente de un arreglo debemos utilizar tanto el nombre del arreglo como el ndice del elemento. Representacin grfica
Quinto elemento Primer elemento ltimo elemento

15 23 8

20 13

A[0]

A[1]

A[2]

A[3]

A[4]

A[5]

A[6]

A[7]

A[8]

A[9]

El primer ndice del arreglo es 0, el segundo es 1 Si queremos acceder al primer elemento del arreglo se escribe A[0] y para el cuarto es A[3] El valor de A[7] es 6 y el valor de A[9] es 0 La suma de A[2] ms A[6] es 12

A: Es el nombre del arreglo 0,1,2,.9: Indice A[0]= El elemento del arreglo

Ejemplo No.1:
Desarrollar un programa el cual almacene en un arreglo unidimensional de 10 elementos, 10 nmeros

enteros ledos del teclado, calcule la suma de dichos nmeros, imprimir los nmeros ledos e imprimir el resultado de suma.
INICIO INT SUMA=0, I, NUM[10] PARA I = 1 HASTA 10, 1 REPETIR LEER (NUM[I]) SUMA = SUMA + NUM[I] FINPARA PARA I = 1 HASTA 10, 1 REPETIR IMPRIMIR (NUM[I]) FINPARA IMPRIMIR SUMA FIN
PRUEBA DE ESCRITORIO NUM: 0,3,2,1,5,3,3,2,6,2 SUMA 0 3 5 6 7 12 15 18 20 26 I 1 2 3 4 5 6 7 8 9 10 NUM[10]=2 NUM[] NUM[1]=0 NUM[2]=3 NUM[3]=2 NUM[4]=1 NUM[5]=5 NUM[6]=3 NUM[7]=3 NUM[8]=2 NUM[9]=6

INICIO
INT SUMA =0, I, NUM[10]

I=1 I=I+1 I >10

SI
I=1
I=I+1 I >10

NO

SI
IMPRIMIR SUMA

LEER NUM[I]
SUMA = SUMA + NUM[I]

NO

IMPRIMIR NUM[I] FIN

Este es el mismo programa realizado en C. Tiene algunas modificaciones para darle formato a la impresin.

#include <stdio.h> #define titulo1 "Programa elaborado por: Angelica\n" #define titulo2 "Fecha: 23-mayo-2010\n" #define guiones "-----------------------------------\n" #define n 10 //n es el Total de nmeros a procesar main () { int suma=0,i,num[10]; //Suma es el acumulador de los numeros //leidos, i es el contador //num es el arreglo de 10 elementos printf(titulo1 titulo2); printf("Introducir los numeros \n\n"); printf (guiones); for (i=0;i<=n-1; i++) { printf("num[%d] = ",i+1); scanf ("%d", &num[i]); suma+=num[i]; } printf(guiones); for (i =0;i<=n-1; i++) printf("Num[%d] = %d \n",i+1, num[i]); printf(guiones); printf("Suma = %d",suma); return 0; }

Ejemplo No.2
Desarrollar un programa el cual almacene en un vector A los primeros 5 nmeros naturales y permita calcular el cuadrado de cada uno de los nmeros. Almacenar el resultado en un vector B e imprimirlo. Los nmeros naturales son N = {0,1,2,3,.}

INICIO

INICIO INT I, A[5], B[5] PARA I= 0 HASTA 4, 1 REPETIR A[I]=I B[I]= A[I]^2 IMPRIMIR (B[I]) FINPARA FIN

INT I,A[5], B[5]

I=0 PARA I = 0, 4,1 I=I+1 I >4

A[I] = I B[I] = A[I]^2

IMPRIMIR B[I]

FIN

Este es el mismo programa realizado en C. Tiene algunas modificaciones para darle formato a la impresin.
#include <stdio.h> #include <math.h> #define titulo1 "Programa elaborado por: Angelica\n" #define titulo2 "Fecha: 23-mayo-2010\n" #define guiones "-----------------------------------\n" #define n 5 //n es el Total de nmeros a procesar main () { int i,a[10], b[10]; //a: vector de los numeros naturales //b: vector que almacena el cuadrado // de los numeros naturales printf(titulo1 titulo2); printf("Calculo del cuadrado de los primeros 5 numeros naturales\n"); printf (guiones); printf ("Numero Cuadrado"); for (i=0;i<=n-1; i++) { a[i]= i; //Asignacion de los numeros naturales al vector A b[i]= pow(a[i],2); //Calculo del cuadrado y asignado al vector B //Impresion de los vectores printf("\n a[%d] = % d b[%d]= %d",i+1,a[i],i+1,b[i]); } return 0; }

Ejemplo No.3
Desarrollar un programa el cual almacene en un vector de 10 elementos llamado VEC, los caracteres de una palabra y los imprima en forma inversa.
INICIO INT CONT=0, IND = 0, I CHAR CAR, VEC[10] MIENTRAS (IND = 0) REPETIR IMPRIMIR (LEER CAR, PARA FINALIZAR INTRODUCIR UN PUNTO .) LEER CAR SI CAR = . ENTONCES IND = 1 DE OTRO MODO CONT = CONT + 1 VEC[CONT]= CAR FINSI FINMIENTRAS PARA I = CONT HASTA 1, -1 REPETIR IMPRIMIR (VEC[I]) FINPARA FIN

PRUEBA DE ESCRITORIO PALABRA A LEER: CASA CONT 0 1 A 2 S 3 VEC[3]=S VEC[2]=A IND 0 CAR C VEC[1]= C VEC[] I

A
4 . 1 VEC[4]=A 3 VEC[3]=S 4 VEC[4]=A

2
VEC[2]=A 1 VEC[1]=C

INICIO

INT CONT=0,IND=0,I CHAR CAR, VEC[10]

NO
IND =0

I=0

I=I+1

SI

IMPRIMIR I >4 LEER CAR, PARA FINALIZAR INTRODUCIR UN PUNTO .

I=CONT I=I-1 I <1


NO SI

LEER CAR
SI NO

IMPRIMIR VEC[I]

FIN

CAR= .

CONT= CONT + 1 VEC[CONT]=CAR

IND =1

Este es el mismo programa realizado en C. Tiene algunas modificaciones para darle formato a la impresin.
/*Desarrollar un programa el cual almacene en un vector de 10 elementos llamado VEC, los caracteres de una palabra y los imprima en forma inversa. */ #include <iostream.h> #define titulo1 "Programa elaborado por: Angelica\n" #define titulo2 "Fecha: 23-mayo-2010\n" #define guiones "-----------------------------------\n" #define n 10 //n es el Total de nmeros a procesar main() { int cont=0, ind=0, i; char car, vec[10]; cout << titulo1 << titulo2; cout <<"Impresion de una palabra en forma inversa\n"; cout <<guiones; cout <<"Introducir la palabra, para finalizar introducir un punto(.) = " ; while (ind == 0) // Ciclo para la lectura de la palabra car. por car. //ind es la variable que se utiliza como bandera { //para indicar el fin de la introduccion de la palabra cin >> car; if (car == '.') ind = 1; else { cont++; vec[cont]=car; } } cout <<"\n Palabra en inversa es: "; for (i=cont; i>=1; i--) cout << vec[i]; //impresion de la palabra inversa return (0); }

ARREGLOS BIDIMENSIONALES
Es una coleccin finita, homognea y ordenada de datos, en la que se hace referencia a cada elemento del arreglo por medio de dos ndices. El primero de los ndices se utiliza para indicar la fila y el segundo la columna. Tambin son llamados MATRICES
Permite almacenar N(filas) x M(columnas) elementos del mismo tipo

(enteros, reales, caracteres, entre otros) y acceder a cada uno de ellos. Los dos elementos importantes son: componentes e ndices
Los componentes son los elementos que se almacenan en cada casilla
ndice es la forma de acceder a cada uno de los componentes.

Para hacer referencia del arreglo debemos hacer referencia a los dos

ndices del elemento (fila y columna)

Representacin grfica
8
3 2

6
5 8

4
2 3

1
4 2

-2
1 0

A[0][0] FILAS A[1][0] A[2][0]

A[0][1] A[1][1] A[2][1]

A[0][2] A[1][2] A[2][2]

A[0][3] A[1][3] A[2][3]

A[0][4] A[1][4] A[2][4]

COLUMNAS
El valor de A[1][2]=2 Los elementos de la primera fila son: A[0][0], A[0][1], A[0][2], A[0][3], A[0][4] Los valores de la 3ra columna son: A[0][2]=4, A[1][2]=2, A[2][2]=3 El resultado de la sumatoria de los valores de los extremos es A[0][0] + A[0][4]+ A[2][0]+A[2][4]=8

Ejemplo No.4:
Desarrollar un programa el cual almacene en un arreglo bidimensional de tamao 2 x 3, nmeros reales y posteriormente los imprima.
INICIO REAL A[2][3] INT I, J PARA I = 1 HASTA 2 REPETIR PARA J= 1 HASTA 3 REPETIR LEER (A[I][J]) FINPARA PARA I = 1 HASTA 2 REPETIR PARA J= 1 HASTA 3 REPETIR IMPRIMIR A[I][J] FINPARA FIN PRUEBA DE ESCRITORIO NUMEROS= {0,1,4,2,3,1}
I 1 1 1 2 2 2 1 1 1 2 2 2 J 1 2 3 1 2 3 1 2 3 1 2 3 A[][] A[1][1]= 0 A[1][2]= 1 A[1][3]= 4 A[2][1]= 2 A[2][2]= 3 A[2][3]= 1 A[1][1]= 0 A[1][2]= 1 A[1][3]= 4 A[2][1]= 2 A[2][2]= 3 A[2][3]= 1

INICIO
REAL A[2][3] INT I, J

I=1

I=I+1 I >2

SI
I=1

NO
J=1 J=J+1 J >3

B
SI

I=I+1 I >2

SI

NO
J=1 J=J+1 J >3

FIN

NO

SI

LEER A[I][J]

NO

IMPRIMIR A[I][J]

Este es el mismo programa realizado en C. Tiene algunas modificaciones para darle formato a la impresin.
/*Desarrollar un programa el cual almacene en un arreglo bidimensional de tamao 2 x 3, nmeros reales y posteriormente los imprima */ #include <iostream.h> #define titulo1 "Programa elaborado por: Angelica\n" #define titulo2 "Fecha: 23-mayo-2010\n" #define guiones "-----------------------------------\n" main() { int i, j; float a[2][3]; cout << titulo1 << titulo2; cout <<"Lectura e Impresion de un arreglo bidimensional\n"; cout <<guiones; cout <<"Introducir los elementos del arreglo\n"; for (i=0; i< 2; i++) for (j=0; j < 3; j++) { cout <<" a["<<i+1<<"]["<<j+1<<"] = "; cin >> a[i][j]; } } cout <<"Imprimir los elementos del arreglo\n"; for (i=0; i< 2; i++) for (j=0; j < 3; j++) cout <<"\n a["<<i+1<<"]["<<j+1<<"] = "<< a[i][j]; return (0); }

Ejemplo No.5:
Desarrollar un programa el cual lea de un arreglo de tamao 3 x 4 con los datos previamente cargados o almacenados que se detallan a continuacin:{1,0,2,3,4,6,4,1,4,2,4,2} a. Sumar todos los datos del arreglo e imprimir el total b. Imprimir los elementos de la primera fila c. Sumar los elementos de la 2da.columna e imprimir el total
INICIO REAL A[3][4], SUMA = 0, SUM2C=0 INT I, J, PARA I = 1 HASTA 3 REPETIR PARA J= 1 HASTA 4 REPETIR SUMA = SUMA + A[I][J] FINPARA IMPRIMIR (SUMA) PARA J = 1 HASTA 4 REPETIR IMPRIMIR (A[1][J]) FINPARA PARA I = 1 HASTA 3 REPETIR SUM2C=SUM2C+A[I][2] FINPARA IMPRIMIR (SUM2C) FIN

INICIO
REAL A[3][4], SUMA = 0, SUM2C=0 INT I, J

I=1

I=I+1 I >3

SI

NO
J=1 J=J+1 J >4

IMPRIMIR SUMA
J=1

SI

J=J+1

SI
J >4 I=1 I=I+1 I >3

NO SUMA = SUMA + A[I][J]

NO

SI IMPRIMIR SUM2C

IMPRIMIR A[1][J]

NO
SUM2C=SUM2C + A[1][J]

FIN

/*Desarrollar un programa el cual lea de un arreglo de tamao 3 x 4 con los datos previamente cargados o almacenados que se detallan a continuacin:{1,0,2,3,4,6,4,1,4,2,4,2} a. Sumar todos los datos del arreglo e imprimir el total b. Imprimir los elementos de la primera fila c. Sumar los elementos de la 2da.columna e imprimir el total */

#include <iostream.h> #define titulo1 "Programa elaborado por: Angelica\n" #define titulo2 "Fecha: 23-mayo-2010\n" #define guiones "-----------------------------------\n" #define N 3 #define M 4 main() { float a[N][M], suma=0,suma2c=0; int i, j; cout << titulo1 << titulo2; cout <<"Lectura e Impresion de un arreglo bidimensional\n"; cout <<"suma de todos sus elementos y suma de la 2da columna\n"; cout <<guiones; cout <<"Introducir los elementos del arreglo\n"; for (i=0; i< N; i++) for (j=0; j < M; j++) { cout <<" a["<<i+1<<"]["<<j+1<<"] = "; cin >> a[i][j]; suma= suma + a[i][j]; } cout << "\nLa suma de todos los elementos es: "<<suma; cout <<"\nImprimir los elementos de la primera fila arreglo\n"; i=0; //Indice que corresponde a la primera fila; for (j=0; j < M; j++) cout <<"\n a["<<i+1<<"]["<<j+1<<"] = "<< a[i][j]; j=1; //Indice para la segunda columna cout <<"\nImprimir los elementos de la segunda columna\n"; for (i=0; i < N; i++) {cout <<"\n a["<<i+1<<"]["<<j+1<<"] = "<< a[i][j]; suma2c= suma2c + a[i][j];} cout << "\nLa suma de todos los elementos de la 2da. columna es: "<<suma2c; }

Anda mungkin juga menyukai