Anda di halaman 1dari 2

Elementos de Programacin 1A E.T.S.I.

Informtica Gestin

Prctica 6: Arrays Unidimensionales en C++.


En los temas anteriores se han estudiado los diferentes tipos de datos simples de C++, usados para representar valores simples como enteros, reales o caracteres. Sin embargo, en muchas situaciones se precisa procesar una coleccin de valores que estn relacionados entre s, como por ejemplo una lista de calificaciones, una tabla de temperaturas, etc. El procesamiento de tales conjuntos de datos utilizando tipos simples puede ser extremadamente complejo y tedioso, y por ello la mayora de los lenguajes de programacin incluyen mecanismos sintcticos para manipular agrupaciones de datos, son las llamadas estructuras de datos. La estructura de datos ms bsica soportada por los lenguajes es el array. Un array se puede visualizar como una coleccin de cajas que representan variables de un mismo tipo de datos, tal y como se ilustra en la siguiente figura. A este tipo de array se le suele denominar array unidimensional o vector. Para hacer referencia a una caja o componente en particular, usaremos el nombre o identificador del array seguido por un nmero (ndice) entre corchetes, que indicar su posicin dentro del array. Realmente lo que va entre corchetes al referirse a la posicin de un componente de un array, puede ser cualquier expresin que al evaluarse d como resultado un valor numrico entero positivo. Un rasgo importante de los arrays en C++ es que el tipo ndice es siempre un subrango de naturales empezando por 0, por lo que a la hora de definir un array solo ser necesario indicar su dimensin. As definimos una variable de un tipo array como: tipo nombre_array [dimensin]; Donde tipo es el tipo base de los componentes del array y "dimensin" es un nmero natural mayor de cero que representa la longitud o dimensin del array. Ejemplos: int vector [10]; // Array de 10 enteros bool logicos [50]; // Un array de 50 lgicos Aunque lo ms adecuado, tal como se ha comentado en el programa de ejemplo del apartado anterior, es usar constantes globales para definir la dimensin de los arrays. const int MAXVECTOR = 10; const int MAXLOGICOS = 50; int vector [MAXVECTOR]; bool logicos [MAXLOGICOS]; // Array de 10 enteros // Array de 50 lgicos

Aunque como hemos visto se pueden definir variables de array al mismo tiempo que se define su tipo base y su dimensin (definicin implcita de tipos array), lo correcto es definir separadamente los tipos de datos, asignndoles un nombre, y posteriormente declarar las variables como pertenecientes a los tipos anteriormente definidos. C++ incorpora un mecanismo para definir nuevos tipos de datos, la sentencia typedef. Sintaxis: typedef tipo_conocido nombre_nuevo_tipo; Ejemplo: Declarar variables de tipo TContador: typedef unsigned int Tcontador; Tcontador i, j; El objetivo fundamental de esta sentencia es mejorar la claridad del cdigo fuente asociando nombres simblicos a tipos de datos definidos por el programador. Segn esto, en el caso de definicin de tipos array la sintaxis concreta sera entonces: typedef tipo_base nombre_nuevo_tipo [dimensin]; Ejemplos: const unsigned int MAXVECTOR = 4; const unsigned int MAXLISTA = 7; typedef int Tvector [MAXVECTOR]; typedef unsigned int Tlista [MAXLISTA]; Posteriormente se pueden definir variables de estos tipos: Tvector v; Tlista mi_lista; Nota: Slo se puede definir un nico tipo en cada sentencia typedef. Jos Luis Pastrana Brincones @ 2002 1

Elementos de Programacin 1A E.T.S.I. Informtica Gestin

Un polinomio de grado n, p(x) = a0 + a1x + a2x2 + + anxn , podemos representarlo mediante un array de sus coeficientes (a0, a1, a2, , an). Disea un programa C++ que defina el tipo TPolinomio como un array de un tamao mximo de 10 elementos (grado mximo del polinomio) y que presente al usuario las siguientes opciones de men: Cada operacin deber mostrar el resultado por pantalla, hacer una pausa y volver al men principal. Vase el siguiente ejemplo de Men:
#include <iostream.h> #include <stdlib.h> #include <ctype.h> // Necesario para toupper char void void bool Menu(); Pausa(); clrscr(); ConfirmarSalida();

CALCULADORA DE POLINOMIOS Elaborado Por : Nombre Apellidos E.T.S.I Informtica de Gestin Curso: 1A Fecha: 16 de Enero de 2.002

A.- Leer el Polinomio 1 (p1) B.- Leer el Polinomio 2 (p2) C.- Calcular p1 + p2 D.- Calcular p1 - p2 E.- Calcular p1 * p2 F.- Calcular Derivada de p1 G.- Calcular Derivada de p2 X.- Salir del Programa Opcin:

int main() { bool salir; char OpcionMenu; salir = false; while(!salir) { clrscr(); OpcionMenu = Menu(); switch(OpcionMenu) { case 'A': cout << "Ha seleccionado la Opcion A" << endl; break; case 'B': cout << "Ha seleccionado la Opcin B" << endl; break; case 'C': cout << "Ha seleccionado la Opcion C" << endl; break; case 'X': salir = ConfirmarSalida(); break; } Pausa(); } return 0; } char Menu() { char op; cout << " MENU" << endl; cout << " ====" << endl; cout << "Elaborado Por : Nombre Apellidos" << endl; cout << "E.T.S.I Informatica de Gestion Curso: 1-A " << endl; cout << "Fecha: 16 de Enero de 2.002" << endl << endl << endl; // 3 saltos de lnea cout << "A.- Opcion A" << endl; cout << "B.- Opcion B" << endl; cout << "C.- Opcion B" << endl; cout << "X.- Salir del Programa" << endl; cout << endl << "Opcion: "; cin >> op; op = toupper(op); // Paso op a maysculas while ( (op!='X') && ((op<'A') || (op>'C')) ) { cout << endl << "Opcion Incorrecta ..." << endl << "Opcion: "; cin >> op; op = toupper(op); // Paso op a maysculas } return op; } bool ConfirmarSalida() { char si_no; cout << endl << endl << "Esta seguro de que quiere salir (S/N)?"; cin >> si_no; si_no = toupper(si_no); return (si_no=='S'); } /* Pause y clrscr pueden ser implementadas de forma ms eficiente. Ms adelante, cuando se trate el tema de libreras y compilacin separada, se vern otras soluciones ms elegantes. */ void Pausa() { system("Pause"); } void clrscr() { system("cls"); }

Jos Luis Pastrana Brincones @ 2002 2

Anda mungkin juga menyukai