Sunteți pe pagina 1din 13

UNIVERSIDAD NACIONAL EXPERIMENTAL POLITCNICA ANTONIO JOS DE SUCRE VICERECTORADO PUERTO ORDAZ DEPARTAMENTO DE INGENIERA ELECTRNICA SECCIN DE COMPUTACIN

COMPUTACION I

ARREGLOS Y MATRICES
Parte I

Ing. Lesbia Galindez Puerto Ordaz, 2013

ARREGLOS Y MATRICES 1. Arreglos de una Dimensin Un arreglo es una estructura de datos, o ms tcnicamente, un espacio de memoria que permite almacenar una coleccin de elementos, todos del mismo tipo. Un arreglo se define como una coleccin finita, homognea y ordenada de elementos. Finita: todo arreglo tiene un lmite, es decir, se sabe cul es nmero mximo de elementos que podrn formar parte del arreglo. Homognea: todos los elementos de un arreglo son del mismo tipo. Ordenada: se podr determinar cul ser el primer elemento, hasta llegar al n-simo. Un arreglo se puede representar grficamente como se muestra en la figura siguiente:

Esta figura representa un arreglo de siete casillas cada una de las cuales se puede utilizar para guardar un dato. La dimensin o tamao de un arreglo es el nmero de casillas que lo conforman. Debe ser claro, entonces, que la figura anterior corresponde a un arreglo de dimensin 7. Cada una de las casillas de un arreglo tiene asociado un nmero que la identifica de manera nica. A este nmero se le llama ndice o direccin. En la figura anterior, debajo de cada casilla, aparece su ndice. En lenguajes como C++, la primera casilla del arreglo tiene ndice 0, la segunda tiene ndice 1, la tercera ndice 2, y as sucesivamente. Es muy importante tener presente que si el arreglo es de dimensin N, la ltima casilla tiene ndice N-1.

Arreglos Unidimensionales Estn formados por un conjunto de elementos de un mismo tipo de datos, que se almacenan bajo un mismo nombre y se diferencian por la posicin (ndice) que tiene cada elemento dentro del arreglo de datos.

La forma general de la declaracin de un Arreglo Unidimensional es la siguiente: Tipo nombre_array[dimensin o tamao]; Tipo se refiere si el arreglo es real, entero, caracter, etc. Nombre-array: el nombre que se le dar al arreglo. Dimensin: El tamao que tendr el arreglo.

En forma grfica: 1 2 3 . . . n

Ejemplo para declarar un arreglo: Entero: cuenta[15]; Es un arreglo de tipo real, llamado cuenta y que contiene 15 elementos.

Ejemplos: Si se necesita guardar las ventas diarias de una tienda durante la ltima semana, se puede declarar el siguiente arreglo: Real: ventas[7];

Si se quiere guardar las notas que ha sacado un estudiante en los cinco talleres y en los ocho laboratorios del curso de Programacin de Computadores se pueden declarar los siguientes arreglos: real: talleres[5]; real: laboratorio[8];

NDICES Los ndices se crearon para permitir que el programador se pueda referir, de forma especfica, a una cualquiera de las casillas del arreglo, tanto para guardar un dato en esa casilla, como para obtener el dato guardado. Para referirse a una casilla particular de un arreglo se debe seguir el siguiente formato: <NOMBRE>[<INDICE>] Es decir, se debe escribir el nombre del arreglo seguido por el ndice de la casilla entre parntesis cuadrados. Para los siguientes ejemplos, suponga que se declara el arreglo cifras, de la siguiente manera: entero: cifras[10]; La siguiente instruccin asigna o guarda el nmero 100 en la primera casilla de este arreglo: cifras[0]:= 100

La siguiente instruccin iterativa guarda 550 en cada una de las ltimas 5 casillas de este arreglo:

i:=5 MIENTRAS (i<10) HACER cifras[i]:= 550 i:=i+1 FIN-MIENTRAS La siguiente figura muestra el arreglo cifras despus de ejecutadas las instrucciones de los dos ejemplos anteriores. Las casillas vacas no tienen valores definidos.

CMO REALIZAR LA LECTURA DE UN ARREGLO UNIDIMENSIONAL Este proceso consiste en leer y asignar un valor a cada uno de sus elementos. Para ello se utiliza un ciclo para leer todos los elementos de un arreglo:

i=1 repetir desde i=1 hasta n leer(<nombre_arreglo>[i]) i=i+1 fin_repetir_desde

CMO REALIZAR LA ESCRITURA DE UN ARREGLO UNIDIMENSIONAL Este proceso consiste en escribir un valor a cada uno de sus elementos. Para ello se utiliza un ciclo para escribir todos los elementos de un arreglo:

i=1 repetir desde i=1 hasta n mostrar("...", <nombre_arreglo>[i]) i=i+1 fin_repetir_desde

EJERCICIOS DE ARREGLOS UNIDIMENSIONALES 1.- Desarrollar un algoritmo y diagrama de flujo que reciba como entrada un arreglo unidimensional de "5" valores de tipo entero y muestre el arreglo unidimensional. Solucin: Anlisis: Entrada: i, v[i] Salida: v[i] Proceso:

repetir desde i=0 hasta i<5 mostrar(ingrese valor) leer(v[i]) mostrar(v[i])

Pseudocdigo Algoritmo "Arreglo Uni 5" Inicio Entero: i, v[i]; Repetir <i=0> hasta <i<5> Mostrar("Ingrese el valor", i) Leer(v[i]) Mostrar("El valor",i, "es:", v[i]) i=i+1 fin_repetir_hasta

C++ #include<iostream.h> #include<conio.h> #include <string.h> void main (void) { int i, v[5]; for ( i=0; i<5; i++) { v[i]=0; cout<<"Ingrese valor "<<i<<endl; cin>> v[i]; cout<<"El valor "<<i<<" es: v[i]<<endl; } getch(); }

"<<

Diagrama de Flujo

2.- Desarrollar un algoritmo y diagrama de flujo (propuesto para el estudiante) que conociendo los sueldos de 70 empleados de una empresa, se determine cuntos de estos empleados tienen un sueldo superior al promedio del grupo. Se requiere mostrar el total de empleados que tienen un sueldo superior al promedio y que se muestre el promedio de los sueldos. Pseudocdigo Algoritmo "Promedio de Sueldos" Inicio Entero: i=0, conta=0 Real: prom, asue=0, sue[70] Repetir <i=0> hasta <i<70> Mostrar("Ingrese el sueldo", i) Leer(sue[i]) asue=asue+ sue[i] i=i+1 fin_repetir_hasta C++ #include<iostream.h> #include<conio.h> #include <string.h> void main (void) { int i=0, conta=0; float prom, asue=0, sue[70]; for ( i=0; i<70; i++) { cout<<"Ingrese el sueldo "<<i<<endl; cin>> sue[i]; asue=asue+ sue[i]; } prom=asue/70; for ( i=0; i<70; i++)

prom=asue/70 Repetir <i=0> hasta <i<70> Si (sue[i]>prom) conta=conta+1 fin_si i=i+1 fin_repetir_hasta Mostrar("El Sueldo Promedio es", prom) Mostrar("El total de empleados con

{ if (sue[i]>prom) { conta=conta+1; } } cout<<"El Promedio es: "<<prom<<endl; cout<<"El Total de empl. con sueldos por encima del Promedio es: "<<conta<<endl; getch(); }

sueldos por encima del promedio es:", conta) Fin

3.- Hacer un programa que lea los nombres, edades y tallas de N atletas. N es declarado como constante. Trabaje con 10 (atletas). El programa debe calcular : a) El promedio de las edades y de las tallas. b) Determinar cuntos atletas son menores de edad ( menores de 18 aos) y cuantos atletas son mayores de edad. c) Determinar los nombres de los atletas que son ms altos que el promedio. Nota: setw(int n): Cambia la anchura del campo a n La cabecera iomanip.h se emplea para controlar el flujo de las entradas y salidas en canal de datos. La cabecera stdio.h, que significa "standard input-output header" (cabecera estandar E/S), es la biblioteca estndar del lenguaje de programacin C, el archivo de cabecera que contiene las definiciones de macros, las constantes, las declaraciones de funciones y la definicin de tipos usados por varias operaciones estndar de entrada y salida.

Variables a Utilizar: Nombre[N][25] Arreglo unidimensional (vector) que almacena los nombres(mximo 25 caracteres) de N atletas. Arreglo unidimensional (vector) que almacena las edades de N Edad [N] atletas Arreglo unidimensional (vector) que almacena las tallas de N Talla.[N] atletas PromTall Promedio de las tallas de los N atletas. PromEdad CMenEdad CMayEdad Promedio de las edades de los N atletas. Cantidad de atletas menores de edad. Cantidad de atletas mayores de edad.

Anlisis ALGORITMO Atletas Declaracin de las variables y constantes Ingreso los arreglos de Nombre, Edades y Tallas // Rpta a) Calcular el promedio de las edades (PromEdad) Calcular el promedio de las tallas (PromTalla) // Rpta b) Calcular el nmero de atletas menores de edad y el nmero de atletas mayores de edad // Rpta c) Reporte Mostrar los nombres, edades y tallas de los N atletas Mostrar el promedio de las edades y de las tallas Mostrar la cantidad de atletas menores de edad Mostrar la cantidad de atletas mayores de edad. Mostrar los nombres de los atletas ms altos que el promedio. ALGORITMO "Atletas" Inicio Caracter: Nom[10][25]; Entero Edad[10], i, CanMenEdad=0, CanMayEdad=0, SumEdad=0; Real: Talla[10], PromTalla, SumTalla=0, PromEdad; Repetir <i=0> hasta <i<10> Mostrar("Ingrese el Nombre", i) Leer(Nom[i]) Mostrar(Ingrese la Edad ",i) leer(Edad[i]) Mostrar("Ingrese la Talla ",i) leer(Talla[i])

i=i+1 fin_repetir_hasta Repetir <i=0> hasta <i<10>


SumEdad=SumEdad+Edad[i] SumTalla = SumTalla + Talla[i]

i=i+1 fin_repetir_hasta
PromEdad = SumEdad/N PromTalla = SumTalla/N

Repetir <i=0> hasta <i<10>


Si ( Edad[i] < 18 ) CanMenEdad = CanMenEdad + 1 si-no CanMayEdad = CanMayEdad + 1 fin-si

i=i+1 fin_repetir_hasta Repetir <i=0> hasta <i<10> mostrar (setw(25)<<Nom[i]<<setw(10)<<Edad[i]<<setw(10)<<Talla[i]) i=i+1 fin_repetir_hasta mostrar(setw(35)<<PromEdad<<setw(10)<<PromTalla) mostrar("Numero de atletas menores de edad : ", CanMenEdad) mostrar("Numero de atletas mayores de edad : ", CanMayEdad) mostrar("Los atletas ms altos al promedio son: ") Repetir <i=0> hasta <i<10> si(Talla[i] > PromTalla)
mostar(Nom[i) i=i+1

fin_repetir_hasta fin C++ #include<iostream.h> #include<conio.h> #include<stdio.h> #include<iomanip.h> const int N = 3; void main() {

char Nom[N][25]; int Edad[N], i, CanMenEdad, CanMayEdad, SumEdad; double Talla[N], PromTalla, SumTalla, PromEdad; // Leer los arreglos for(i=0;i<N;i=i+1) { cout<<"Ingrese el Nombre "<<i<<endl; cin>>Nom[i]; cout<<"Ingrese la Edad "<<i<<endl; cin>>Edad[i]; cout<<"Ingrese la Talla "<<i<<endl; cin>>Talla[i]; } // Rpta a) Promedio de las edades y las tallas SumEdad = 0; SumTalla = 0; for(i=0;i<N;i=i+1) { SumEdad=SumEdad+Edad[i]; SumTalla = SumTalla + Talla[i]; } PromEdad = SumEdad/N; PromTalla = SumTalla/N; // Rpta b) Cuantos atletas son menores de edad y cuantos mayores de edad CanMenEdad = 0; CanMayEdad = 0; for(i=0;i<N;i=i+1) { if ( Edad[i] < 18 ) { CanMenEdad = CanMenEdad + 1; } else { CanMayEdad = CanMayEdad + 1; } } // Rpta c) Reporte y nombres de los atletas mas altos al promedio for(i=0;i<N;i=i+1) { cout<<setw(25)<<Nom[i]<<setw(10)<<Edad[i]<<setw(10)<<Talla[i]<<endl; }

cout<<setw(35)<<PromEdad<<setw(10)<<PromTalla<<endl; cout<<"Numero de atletas menores de edad : "<<CanMenEdad<<endl; cout<<"Numero de atletas mayores de edad : "<<CanMayEdad<<endl; cout<<"Los atletas mas altos al promedio son: "<<Nom[i]<<endl; for(i=0;i<N;i=i+1) { if(Talla[i] > PromTalla) cout<<Nom[i]<<endl; } getch(); }

4.- Hacer un programa que inicialice nombre, direccin y telfono de 5 amigos y muestre los datos de uno de ellos, si se ingresa por teclado el ndice del arreglo. Debe mostrar repetidamente los datos de un amigo. Hacerlo hasta que se ingrese por teclado un ndice fuera del rango (0-4). #include<iostream.h> // cin y cout #include<conio.h> // getch() #include<iomanip.h> // setw() void main() { char nomb[5][30]; char direc[5][30]; char telef[5][10]; int i; for(i=0;i<N;i=i+1) { cout<<"Ingrese el Nombre "<<i<<endl; cin>>nomb[i]; cout<<"Ingrese la Dir "<<i<<endl; cin>>direc[i]; cout<<"Ingrese Telefono "<<i<<endl; cin>>telef[i]; } // Muestra cabeceras

cout<<setw(30)<<"NOMBRE:"<<setw(30)<< <<"TELEFONO:" <<endl;

"DIRECCION:"

<<

setw(10)

for (i=0; i<= 4; i=i+1) { cout<<setw(30)<<nomb[i]<<setw(30)<<direc[i]<<setw(10) <<telef[i] << endl; } cout<<"Ingrese el indice ";cin>>i; if ((i>=0) && (i<5)) { cout<<setw(30)<<nomb[i]<<setw(30)<<direc[i]<< setw(10) << telef[i] <<endl; cout<<"ingrese el indice : ";cin>>i; }else cout<<"Hasta luego! "<<endl; getch(); }

S-ar putea să vă placă și