TEST: ===== 1-C 2-C 3-D 4-B CUESTION 1: (Hay dos posibilidades) =========== - Primera Versión struct fecha { int d, m, a; }; struct hora { int h, m; }; struct vuelo { char pto_partida[20]; char pto_llegada[20]; struct fecha f_salida, f_llegada; struct hora h_salida, h_llegada; }; struct historico { char id_avion[20]; struct vuelo vuelos[100]; }; - Segunda Versión (más simple pero repitiendo el identificador del avión) struct fecha { int d, m, a; }; struct hora { int h, m; }; struct vuelo { char id_avion[20]; char pto_partida[20]; char pto_llegada[20]; struct fecha f_salida, f_llegada; struct hora h_salida, h_llegada; }; CUESTION 2: =========== 5 6 7 8 9 10 15 14 13 12 11 10 9 8 PROBLEMA 3: =========== #include #define N 10 void main() { int V[N], i, j, ya_esta; for( i=0; i < N; i++ ) { do { printf( "V[%d]: ", i ); scanf( "%d", &V[i] ); ya_esta=0; for( j=0; j < i; j++ ) if ( V[i] == V[j] ) ya_esta=1; } while( ya_esta ); } for( i=0; i < N; i++ ) { printf( "V[%d] = %d\n", i, V[i] ); } } PROBLEMA 4: =========== #include #define NUM_DIVISAS 3 #define L_NOMBRE 50 struct divisa { char nombre[ L_NOMBRE ]; float cambio; }; void poner_divisas( struct divisa V[] ) { int i; for( i=0; i < NUM_DIVISAS; i++ ) { printf( "Nombre de la moneda (en plural): " ); scanf( "%s", V[i].nombre ); printf( "Valor de 1 euro en %s: ", V[i].nombre ); scanf( "%f", &V[i].cambio ); } } int elegir_divisa( struct divisa V[] ) { int i, d; do { printf( "Menú divisas\n-------------\n" ); for( i=0; i < NUM_DIVISAS; i++ ) { printf( " %2d) %s\n", i, V[i].nombre ); } printf( "\n Introduzca el código de la divisa: " ); scanf( "%d", &d ); } while( (d < 0) || (d >= NUM_DIVISAS) ); return d; } void divisa_a_euro( struct divisa V[], int d ) { float cantidad; printf( "Dame una cantidad en %s: ", V[d].nombre ); scanf( "%f", &cantidad ); printf( "\n %.2f %s son %.2f euros\n", cantidad, V[d].nombre, cantidad / V[d].cambio ); } void euro_a_divisa( struct divisa V[], int d ) { float cantidad; printf( "Dame una cantidad en euros: " ); scanf( "%f", &cantidad ); printf( "\n %.2f euros son %.2f %s\n", cantidad, cantidad * V[d].cambio, V[d].nombre ); } void tabla_euros( struct divisa V[], int d ) { float euros, incr; int i; printf( "\nDame el incremento en EUROS: " ); scanf( "%f", &incr ); printf( " %-12s %s\n", "EUROS", V[d].nombre ); for( euros=incr,i=0; i < 20; euros += incr, i++ ) { printf( " %10.2f %10.2f\n", euros, euros * V[d].cambio ); } } void tabla_divisas( struct divisa V[], int d ) { float divisa, incr; int i; printf( "\nDame el incremento en %s: ", V[d].nombre ); scanf( "%f", &incr ); printf( " %-12.12s %s\n", V[d].nombre, "EUROS" ); for( divisa=incr,i=0; i < 20; divisa += incr, i++ ) { printf( " %10.2f %10.2f\n", divisa, divisa / V[d].cambio ); } } int menu( char nombre_divisa[] ) { int opcion; printf( "\n\n MENU \n ======\n\n" ); printf( " 1.- Introducir datos de las divisas\n" ); printf( " 2.- Elegir divisa\n" ); printf( " 3.- Convertir una cantidad de %s a euros\n", nombre_divisa ); printf( " 4.- Convertir una cantidad de euros a %s\n", nombre_divisa ); printf( " 5.- Tabla de euros a %s\n", nombre_divisa ); printf( " 6.- Tabla de %s a euros\n", nombre_divisa ); printf( " 9.- Salir\n" ); printf( "\n\t Introduce el valor de una opción: " ); scanf( "%d", &opcion ); return opcion; } int main() { struct divisa DIVISAS[ NUM_DIVISAS ]; int opc, divisa; poner_divisas( DIVISAS ); divisa=0; do { opc = menu( DIVISAS[divisa].nombre ); switch( opc ) { case 1 : poner_divisas( DIVISAS ); break; case 2 : divisa = elegir_divisa( DIVISAS ); break; case 3 : divisa_a_euro( DIVISAS, divisa ); break; case 4 : euro_a_divisa( DIVISAS, divisa ); break; case 5 : tabla_euros( DIVISAS, divisa ); break; case 6 : tabla_divisas( DIVISAS, divisa ); break; } } while( opc != 9 ); return 0; }