Uso de arreglos unidimensionales (Vectores)

Anuncio
UNIVERSIDAD DON BOSCO
FACULTAD DE ESTUDIOS TECNOLÓGICOS
ESCUELA DE COMPUTACION
GUIA DE LABORATORIO #08
Nombre de la Practica:
CICLO: 01/ 2013
Uso de arreglos Unidimensionales (Vectores)
Lugar de Ejecución:
Centro de Computo
Tiempo Estimado:
2 horas y 30 minutos
MATERIA:
Introducción a la Programación
I. OBJETIVOS
Que el estudiante:
•
•
•
•
Definir que es un arreglo y cómo utilizarlo en el lenguaje C/C++.
Desarrolle métodos para crear, inicializar y asignar valores a los elementos de un arreglo.
Determine la forma de cómo debe tener acceso a los elementos de un arreglo, ya sea para asignarle valores a
sus elementos o para leer los datos almacenados en ellos.
Resolver una de las aplicaciones prácticas típicas con arreglos, como lo es la ordenación de elementos.
II. INTRODUCCION TEORICA
¿Qué es un Arreglo?
Muchas aplicaciones requieren el procesamiento de múltiples datos que tienen características comunes, por
ejemplo, un conjunto de datos numéricos, representados por x1, x2, x3 x4… hasta un xN. En tales situaciones, es
conveniente colocar los datos en un arreglo, el cual se caracteriza porque todos sus elementos comparten un
mismo nombre (en este ejemplo el nombre para la variable de arreglo seria x).
Los datos individuales pueden ser caracteres, números enteros, números de coma flotante de simple o de doble
precisión (reales).
Debe tenerse muy en cuenta que todos los N elementos de un arreglo se caracterizan en que: todos deben ser del
mismo tipo de dato y deben tener el mismo tipo de almacenamiento.
Definición de arreglo (Array en ingles)
Un arreglo es un conjunto de variables del mismo tipo de datos que pueden ser referenciadas a través de un
mismo nombre. La forma de identificar a un elemento determinado es a través de un índice.
Como se maneja a los elementos de un arreglo
Cada elemento (dato individual) del Arreglo es referenciado mediante la especificación del Nombre del arreglo
seguido por uno o más Índices. El número de índices utilizados determinan las Dimensiones del Arreglo.
1
Guía # 8: Uso de arreglos Unidimensionales (Vectores)
Dimensiones del arreglo
Al definir un arreglo, se le debe indicar el total de elementos N que lo formaran. A este total N se le conoce como
Dimensión del Arreglo, el cual permite indicar el total de posiciones que se almacenara dentro de la memoria de
la PC.
Si un arreglo tiene solo una dimensión, se le llama Arreglo Unidimensional, porque basta indicar un número,
llamado “índice” para referenciar a una posición específica dentro del mismo.
Si a un arreglo se le definen 2 o mas dimensiones, se le conoce como “Arreglo Multidimensional” o también
“Matriz”, y necesitara tantos índices como dimensiones se le declaren al arreglo.
Si define 2 dimensiones para un arreglo, a este se le conoce como un Arreglo bidimensional.
Al definir más de una dimensión al arreglo, le permite aplicar diversos métodos de clasificación para el
almacenamiento de listas de datos más complejos.
Índices del arreglo
Cada índice se encierra entre corchetes [ ] y debe ser expresado como un entero no negativo. Así en un Arreglo
unidimensional llamado x de “n” elementos, para referenciar a cada uno de sus elementos se hará así:
x[0], x[1], x[2], x[3], ........ Hasta x[n-1]
Tal como se ilustra en la siguiente figura:
Al observar el conteo de índices de la figura anterior, se debe tener muy claro que: al declarar un arreglo dentro
de Lenguaje C, con una dimensión de N elementos, el primer índice disponible del arreglo comienza con 0
(cero) y el último índice es N-1 (uno menos del total N indicado para la dimensión).
Esta aclaración es valida para el conteo de índices de cada una de las dimensiones de un arreglo
multidimensional. Observe los ejemplos siguientes:
Ejemplo 1:
- Para declarar un arreglo unidimensional llamado MiLista con un total (una dimensión única) de 5 elementos de
tipo entero, utilizara esta instrucción:
int MiLista [5];
- Si desea asignar el valor 956 a la cuarta posición de MiLista, lo hará referenciando a este elemento con la
siguiente instrucción:
MiLista[3]= 956; //índice 3 del arreglo
- Al final de esta asignación, el arreglo MiLista se vera en memoria así:
índice
0
1
2
Valor asignado
Introducción a la Programación
3
4
956
2
Guía # 8: Uso de arreglos Unidimensionales (Vectores)
Declaración de un Arreglo
Los Arreglos se declaran de igual forma que las variables ordinarias, excepto que cada nombre de Arreglo debe
acompañarse de una especificación de tamaño (es decir, el total de elementos por cada dimensión).
El tamaño de cada dimensión se especifica con una expresión entera positiva encerrada entre corchetes [ ].
En términos generales, la definición de un Arreglo se puede expresarse como:
TipoDato nombre-arreglo [expresión] [expresion2] [expresion3]… [expresionD]
En donde:
TipoDato es el tipo de datos común para todos los elementos del arreglo
nombre-arreglo es el nombre del Arreglo
[expresión][expresión2][expresión3].. hasta [expresionD] es una o más expresiones enteras positivas que
indican el total de elementos por cada dimensión del Arreglo. La multiplicación de las dimensiones da el total
de elementos a crear.
El primer valor expresión es obligatorio para definir un arreglo unidimensional. Si se utiliza además la
expresion2, se define un arreglo bidimensional (2 dimensiones). Si utiliza el resto de expresiones, crea un arreglo
multidimensional o matriz.
Ejemplos sobre definición de arreglos y su respectivo significado respectivo:
int A[100];
Arreglo unidimensional A de 100 enteros. Para utilizarlos se referencian como
A[0], A[1], y así sucesivamente hasta las posiciones A[98] y A[99]
float raices[5];
Arreglo llamado raíces que tiene 5 valores de comas flotantes (valores reales)
char texto[80];
arreglo de 80 caracteres llamado texto */
Asignando valores a las posiciones del Arreglo
Un arreglo puede almacenar un valor por cada una de sus posiciones.
Existen 3 métodos para almacenar los valores en las posiciones del arreglo:
a) Inicializar todas las posiciones de un arreglo al momento de declararlo, con los valores definidos por el
programador.
b) Asignar un valor fijo, o de una variable o el resultado de un calculo que genere un valor del mismo tipo
de dato asignado al arreglo
c) Solicite al usuario el valor para una posición del arreglo
Observe la aplicación de estos métodos en el segundo ejemplo del procedimiento de esta guía.
III. MATERIALES Y EQUIPO
Para la realización de la guía de práctica se requerirá lo siguiente:
No.
Requerimiento
Cantidad
1
Guía de Laboratorio #08 de IP
1
2
Compilador de C++.
1
3
Disquete ó Memoria USB
1
Introducción a la Programación
3
Guía # 8: Uso de arreglos Unidimensionales (Vectores)
IV. PROCEDIMIENTO
METODOS PARA ADMINISTRAR UN ARREGLO / VECTOR /ARRAY
•
•
•
Método 1: solicitando al usuario valor para una posición
Método 2: inicializando posiciones al momento de declarar la matriz
Método 3: asignando valor, ya sea: directamente, 2. de una variable, 3. de un proceso/calculo
1. Cree una carpeta denominada IPguia08proc_CARNET, en el cual se guardara los códigos fuente (cpp) de los
ejemplos del procedimiento a continuación.
Método 1: solicitando al Usuario los datos del Arreglo
Ejercicio 1: Proceso de Creacion, almacenamiento e impresión del contenido de un Arreglo/Array
GUIA8ejemplo1.cpp
#include <iostream>
#include <stdlib.h>
#include <conio.h>
using namespace std;
#define tam 20 //max. total de elementos
main(){//Llenado y Salida de Arreglo Unidimensional
int n; //total elementos a ingresar
int arreglo[tam];//Arreglo de 20 elementos
int j=0; //contador de ciclo e indice del arreglo
cout<<" INICIO: Datos del arreglo."<<endl;
cout<<endl<<"Valores actuales del arreglo:"<<endl;
for(j=0;j<tam; j++)
cout<<"Elemento["<<j+1<<"]=\t "<<arreglo[j]<<endl;
system("pause");
cout<<endl<<"LLENADO DEL ARREGLO"<<endl;
cout<<"Cuantos elementos tendra Arreglo(como Max 20):\t";
cin>>n;
if((n>0)&&(n<=tam)){
cout<<"\n\nIngreso de sus datos hacia el Arreglo"<<endl;
for(j=0;j<n; j++){
cout<<endl<<"Ingrese el elemento ["<<j+1<<"]:\t";
cin>>arreglo[j];
}//fin for j
system("pause");
system("cls");
cout<<"\tVista de datos almacenados en arreglo"<<endl;
for(j=0;j<tam; j++)
cout<<"Elemento ["<<j+1<<"] = "<<arreglo[j]<<endl;
}else
cout<<"*** ERROR: Entrada no Valida ***";
getch();
}//fin de main
Introducción a la Programación
4
Guía # 8: Uso de arreglos Unidimensionales (Vectores)
+ Método 2: inicializando posiciones al momento de declarar la matriz
+ Método 3: asignando valor, ya sea: directamente, 2. de una variable, 3. de un proceso/calculo
Ejercicio 2: GUIA08ejemplo2.cpp
Metodo 2 y 3 para llenar las posiciones de un arreglo.
#include <iostream>
#include <conio.h>
#include<stdlib.h>
using namespace std;
//Demostración de como ingresar valores a un arreglo
main(){
/* inicializando posiciones al momento
de declarar la matriz*/
float venta[6]={62,0,70,63.5,0,83.4};
int i; //contador para índice de arreglo
float prom=0; //valor ventas promedio del semestre
float mayo=76.9; //guarda venta de mes de mayo
//asignando valor, ya sea:
venta[1]=56.4; //1. directamente
//(venta de febrero)
venta[4]=mayo; //2. de una variable
//3. de un proceso/calculo
//calcula venta promedio de 1er trimestre
prom=(venta[0]+venta[1]+venta[2])/3;
//mostrando valores almacenados en el vector num
cout<<endl<<"Montos mensuales del semestre:"<<endl;
for(i=0; i<6; i++)
cout<<endl<<"mes "<<i+1<<" : $ "<<venta[i];
getch();
//resultado de operar valores de un arreglo
cout<<endl<<endl<<"Venta promedio de 1er trimestre es de $";
cout<<prom;
getch();
}//fin de main
+ Operaciones con los elementos de un Arreglo
Ejercicio 3: GUIA8ejemplo3.cpp
Ordenar en forma ascendente los datos de un vector.
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
main(){//Ordenamiento rapido de arreglos
int n,i; //variables locales de main
int k,l,mayor;
Introducción a la Programación
5
Guía # 8: Uso de arreglos Unidimensionales (Vectores)
int cont;
cout<<"PROGRAMA PARA ORDENAR ELEMENTOS DE ARREGLO\t";
cout<<"//ORDEN ASCENDENTE\\"<<endl;
cout<<"De cuantos elementos quiere su arreglo[1-20max]\t";
cin>>n;
system("cls");
int arreglo[n]; //arreglo de n elementos enteros
cout<<"Ingreso los "<<n<<" datos del Arreglo:"<<endl;
for(i=0; i<n; i++){
cout<<endl<<"Ingrese el elemento ("<<i+1<<"): ";
cin>>arreglo[i];
}//fin for i
//ordenamiento de arreglo en forma ascendente.
cont=n;
mayor=0;
for(k=1;k<cont; ++k){
for(l=cont-1;l>=k;--l){
//intercambio de posiciones
if(arreglo[l-1]>arreglo[l]){
mayor=arreglo[l-1];
arreglo[l-1]=arreglo[l];
arreglo[l]=mayor;
}//fin if
}//fin for l
}//fin for k
cout<<endl<<endl<<"Datos del arreglo ya ordenado de forma ASCENDENTE"<<endl;
for(int j=0;j<n;j++)
cout<<"elemento ("<<j+1<<")= "<<arreglo[j]<<endl;
getch();
}//fin main
Ejercicio 4: GUIA8ejemplo4.cpp
Determinar el numero mayor y menor de un vector de N elementos brindados por usuario.
#include <iostream>
using namespace std;
#include <conio.h>
#include <stdlib.h>
main(){ //Funcion principal
int n; //total de datos en arreglo
int i,mayor,menor; //contador de ciclos, valor mayor y menor del listado
cout<<"ENCONTRANDO NUMERO MAYOR Y MENOR ALMACENADOS EN UN ARREGLO";
cout<<endl<<endl<<"De cuantos elementos quiere su arreglo [1-20max]:\t";
cin>>n;
int vector[n]; //define arreglo para un total (n) de elementos enteros
system("cls");
cout<<"Ingrese c/u de los "<<n<<" datos del Arreglo:";
for(i=0; i<n; i++){
cout<< endl<<"Elemento ("<<i+1<<")?? : ";cin>> vector[i];
}//fin for i
//Se calcula menor y mayor valor dentro de arreglo
/*
(al iniciar) asigna los 1eros valores de arreglo
a las variables mayor y menor*/
mayor=vector[0]; menor=vector[0];
//comienza busqueda del verdadero dato mayor y menor en listado
Introducción a la Programación
6
Guía # 8: Uso de arreglos Unidimensionales (Vectores)
for(i=0;i<n;i++){
//evalua numero almacenado en arreglo con variable mayor
//si el numero del arreglo es mayor que la variable, actualiza valor
if(vector[i]>mayor)
mayor=vector[i];
//de manera similar, se compara ahora con variable menor, para actualizarla
if(vector[i]<menor)
menor=vector[i];
}//fin for i
//imprimir resultados
cout<<endl<<endl<<"RESULTADOS"<<endl;
cout<<endl<<"Numero mayor dentro del arreglo es "<<mayor;
cout<<endl<<endl<<"y menor valor en arreglo es "<<menor;
getch();
}//fin main
Ejercicio 5: GUIA8ejemplo5.cpp
Manejo de un arreglo de tipo carácter (char)
#include<iostream>
#include<conio.h>
using namespace std;
main(){
char nom[25];//cadena string de 25 caracteres
int edad;
cout<<"Digite nombre completo de alumno: ";
//captura cadenas con espacios
cin.getline(nom,25);
//captura cadenas sin espacios
//cin>>nom;
cout<<"Digite la edad del alumno: "; cin>>edad;
if (edad>=18) cout<<endl<<"\tAlumno "<<nom<<" es mayor de edad";
else cout<<endl<<"\tAlumno "<<nom<<" es menor de edad";
getch();
} //fin main
PROBLEMAS A RESOLVER:
Elabore el código fuente de C++ que solucionen a cada uno de los problemas a continuación:
Ejercicio 6: GUIA8final.cpp
Crear un programa que permita almacenar en un vector 10 números enteros de todo tipo (positivos, negativos,
ceros) e indique después el porcentaje (con una sola cifra decimal de exactitud) de números pares e impares, asi
como la cantidad de ceros que fueron almacenados en dicho vector.
Introducción a la Programación
7
Guía # 8: Uso de arreglos Unidimensionales (Vectores)
VI. INVESTIGACION COMPLEMENTARIA
1.
Investigue 8 funciones (pertenecientes como minimo a 2 librerías diferentes de C/C++) para el manejo de
cadenas de caracteres en C/C++.
No tomar en cuenta a librería s t d i o . h
Elabore un programa ejemplo que en el que se demuestre a todas las funciones que investigó anteriormente.
2. Desarrolle un programa en C que realice lo siguiente:
• Solicite al contador del almacén La Milagrosa el monto de las ventas mensuales de todo el año 2010.
•
El contador desea obtener los siguientes resultados:
•
Valor de la venta mensual promedio.
•
Obtenga el porcentaje de los meses del año que cumplieron los siguientes niveles de ventas:
Nivel ventas
Descripcion
Minimo
Menos del 45% del promedio anual de ventas
Regular
Entre el 45% a 75% del promedio de ventas
Excelente
Mas del 75% del promedio mensual
•
Indique los nombres de los meses en los cuales la venta fue Excelente.
3.
Escriba un programa que lea una frase dada por usuario, para luego mostrar el total de palabras que la
conforman y el total de espacios en blanco que tiene la frase.
4.
Crear un vector que guarde las 9 notas mensuales (desde Enero hasta Septiembre) de un estudiante de
bachillerato. Una vez recibidas las notas, muestre al estudiante
a) nota promedio final
b) el porcentaje de meses en los cuales obtuvo menor nota que el promedio final
c) en cuales meses obtuvo notas mayores al promedio final.
Tomar en cuenta que una nota valida solo debe variar entre {0.0 a 10.0}.
No reciba una nueva nota mensual hasta que la nota actual a ingresar cumpla el rango indicado.
5.
Escriba un programa que determine, si una cadena de texto es palíndromo. Es decir que se puede leer en
ambos sentidos, por ejemplo OSO al escribirla al revés resulta OSO.
VII. BIBLIOGRAFIA
•
•
•
Deitel, Harvey M. y Deitel, Paul J. CÓMO PROGRAMAR EN C++. 1ra Edición. Editorial Mc Graw Hill
Pappas, Chris H. y Murray, William H. MANUAL DE REFERENCIA DE VISUAL C++ 6.0. 4ta Edición
Editorial Prentice Hall (PEARSON).
Joyanes Aguilar, Luís. PROGRAMACIÓN EN C++ - ALGORITMOS, ESTRUCTURAS DE DATOS Y
OBJETOS. Editorial McGraw Hill, España, 2000.
Introducción a la Programación
8
Descargar