Está en la página 1de 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 ci fras 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
sueldos por encima del promedio es:",
conta)
Fin
{
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();
}

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.

Edad [N]
Arreglo unidimensional (vector) que almacena las edades de N
atletas
Talla.[N]
Arreglo unidimensional (vector) que almacena las tallas de N
atletas
PromTall Promedio de las tallas de los N atletas.

PromEdad Promedio de las edades de los N atletas.

CMenEdad Cantidad de atletas menores de edad.

CMayEdad 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)<< "DIRECCION:" << setw(10)
<<"TELEFONO:" <<endl;

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();

}

También podría gustarte