Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porMatilde Pascual Modificado hace 9 años
1
1 5.1. Concepto de tupla Las tuplas son estructuras de datos que constan de varios campos que pueden contener datos de tipos distintos. El acceso al contenido de los campos en las tuplas se hace utilizando el nombre de los campos en lugar de su posición. El siguiente ejemplo muestra la definición del tipo de tupla “coche” que posee cuatro campos: propietario, modelo, matrícula y año de matriculación typedef struct { char propietario[25]; char modelo[25]; char matrícula[25]; int año; } coche; coche mi_coche; Una vez definido el tipo de tupla “coche”, podemos declarar variables de tipo “coche” como de cualquier otro tipo.
2
2 5.2. Acceso y modificación #define LongPalabra 25 typedef char palabra[LongPalabra]; typedef struct { palabra propietario, modelo, matricula; ints año; } coche; int main(void) { coche mi_coche; … Una vez definida la variable “mi_coche” como una variable de tipo “coche” se puede acceder a cada uno de sus campos de la siguiente manera: mi_coche.propietario = “Jose”; mi_coche.modelo = “PV212”; cout << mi_coche.propietario << “ “ << mi_coche.modelo;
3
3 Las tuplas se pueden asignar y comparar globalmente siempre que no haya tablas dentro de la tupla. c1 = c2; c1== c3; Cuando hay tablas dentro de una tupla, las operaciones de asignación y comparación se hacen campo a campo. typedef char palabra[25]; typedef struct {palabra nombre; int edad; float peso; char profesion;} persona; persona p1, p2; strcpy(p1.nombre,”Pepe”); p1.edad = 25; strcpy(p2.nombre,p1.nombre); p2.edad = p1.edad;
4
4 Ejemplo 1: puntos del plano Para representar los puntos del plano se puede definir un tipo de tupla denominado punto con dos campos correspondientes a las coordenadas x e y. Una vez definido el tipo punto se pueden declarar variables de tipo punto, acceder a los valores de sus campos y modificarlos de la manera siguiente: typedef struct { double x, y; } punto int main(void) { punto punto1, punto2; double distancia; punto1.x = 5; punto1.y = 6; punto2.x = 1; punto2.y = 3; distancia = sqrt( pow((punto1.x - punto2.x), 2.) + pow((punto1.y - punto2.y),2) ); cout << distancia; }
5
5 Ejemplo 2: fecha y hora (tupla de tuplas). En este ejemplo definimos el tipo de tupla fecha que contiene cuatro campos: día, mes, año y hora. El tipo de los valores del campo “hora” es “tiempo”, que es a su vez otro tipo de tupla con tres campos: horas, minutos y segundos. typedef struct { int horas, minutos, segundos; } tiempo; typedef struct { int año, mes, día; tiempo hora; } fecha; int main(void) { fecha fecha_actual; fecha_actual.año = 2003; fecha_actual.mes = 3; fecha_actual.dia = 18; fecha_actual.hora.horas = 18; fecha_actual.hora.minutos = 30; fecha_actual.hora.segundos = 15 }
6
6 Ejemplo 3 Suma de los elementos de una secuencia de nú- meros complejos acabada en 0+0i. Un número complejo se representa como una tupla con dos campos: parte real y parte imaginaria. #include using namespace std; typedef struct {double re, im;} complejo; void lee_complejo(complejo& c); bool es_cero(complejo c); void escribe_complejo(complejo c); complejo suma_complejos(complejo c1, complejo c2);
7
7 int main (void) { complejo c, resultado; resultado.re = 0.0; resultado.im = 0.0; lee_complejo(c); while (!es_cero(c)) { resultado=suma_complejos(resultado,c); lee_complejo(c); } cout << "La suma de los complejos leidos es "; escribe_complejo(resultado); cout << endl; system("Pause"); }
8
8 void lee_complejo(complejo& c) { cout << "Introduzca un complejo (parte real y " << "parte imaginaria). Para terminar 0.0 0.0 : " << endl; cin >> c.re; cin >>c.im; } bool es_cero(complejo c) { return c.re==0 && c.im==0; }
9
9 void escribe_complejo(complejo c) { cout << c.re; if (c.im>0) {cout << "+" << c.im << "i"; } else if (c.im<0) {cout << c.im << "i"; } } complejo suma_complejos(complejo c1, complejo c2) { complejo suma; suma.re=c1.re+c2.re; suma.im=c1.im+c2.im; return suma; }
10
10 5.3. Tablas de tuplas Las tuplas se pueden usar como cualquier otro tipo para definir las componentes de un vector. Por ejemplo, podemos definir una variable “coches_tienda” de tipo tabla [1..100] de coche (i.e., una tabla de tuplas) para referirnos a un grupo de coches. coche coches_tienda[100]; El acceso y la modificación de los campos de cada coche se hace del modo siguiente: coches_tienda[1].propietario = “José”; coches_tienda[1].modelo = “PV212”; coches_tienda[2].propietario = “Josefina”; coches_tienda[2].modelo = “OC111”; …
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.