46b - Soluciones

Volver al curso

Al final de la ficha anterior os pedí hacer los ejercicios del 1 al 8 (excepto el 2) de la página 25 de los apuntes de José María Bea. Aquí tenéis las soluciones de los que hicimos en clase:

// Crea un programa que intercambie el valor de 2 variables.
// (página 20, ej3 apuntes José María Bea )

#include <stdio.h>

 float a = 0;
 float b = 0;
 float intermediario = 0;

int main()
{
    printf("Programa para intercambiar variables.\n");
    printf("Introduce la primera variable, 'A': ");
    scanf("%f", &a);
    printf("\nIntroduce la segunda variable, 'B': ");
    scanf("%f", &b);
    printf("\nLas variables son A = %.0f y B = %.0f", a, b); // %.0f es para que no ponga decimales
    printf("\n\nLas voy a intercambiar...\n");
    
    // Ahora viene lo IMPORTANTE
    intermediario = a;   
    a = b;
    b = intermediario;
    
    printf("\ny ahora las variables son A = %.0f y B = %.0f\n", a, b);         
}

// Programa que ordene 3 números enteros.
// (página 20, ej4 apuntes José María Bea )

// Es un coñazo pensar todos los casos.
// Hay tres líneas que se repiten todo el rato (intercambiar variables)
// Cuando aprendamos a usar funciones, este programa será mucho más sencillo

#include <stdio.h>

 int a = 0;
 int b = 0;
 int c = 0;
 int intermediario = 0;

int main()
{
    printf("Introduce la primera variable, 'A': ");
    scanf("%i", &a);
    printf("\nIntroduce la segunda variable, 'B': ");
    scanf("%i", &b);
    printf("\nIntroduce la tercera variable, 'C': ");
    scanf("%i", &c);
    printf("\nLas variables son A = %i, B = %i y C = %i", a, b, c);
    printf("\n\nAhora las voy a ordenar...");
    
    
    // No se especifica, pero decidimos ordenar DE MENOR A MAYOR
    
    if(a < b && b < c) printf(" ¡pero si ya están ordenadas!\n"); // 1, 2, 3
    
    if(a > b && b > c) // 3, 2, 1 ordenadas justo al revés
        {
        intermediario = a;
        a = c;
        c = intermediario;
        }
    
    
    if(a < b && a < c && c < b) // 1, 3, 2
        {
        intermediario = b;
        b = c;
        c = intermediario;
        }
    
    if(c < a && b > a) // 2, 3, 1
        {
        intermediario = a;
        a = c;
        c = intermediario;
        
        intermediario = b;
        b = c;
        c = intermediario;
        }
    
    if(a > b && a < c && b < c) // 2, 1, 3
        {
        intermediario = a;
        a = b;
        b = intermediario;
        }
     
    if(a > b && a > c && b < c) // 3, 1, 2
        {
        intermediario = a;
        a = b;
        b = intermediario;
        
        intermediario = b;
        b = c;
        c = intermediario;
        }
    
    printf("Las variables ordenadas son: %i, %i y %i\n", a, b, c);         
}

/* Un año es bisiesto si es divisible entre 4 excepto si es divisible entre 100,
aunque los años divisibles entre 400 también son bisiestos. 
Crea un programa que te indique si un año es bisiesto o no. */
// (página 20, ej7 apuntes José María Bea) 

/* Mejor que hagas antes el organigrama porque
tiene varios IF con ANIDAMIENTO. */

/* Si te curras a meter varias condiciones en 
 un solo if lo puedes simplificar */

// Las sangrías son tu mejor amigo.

#include <stdio.h>
int anho = 0;

int main()
    {
    printf("\nIntroduce el año para saber si es bisiexto: ");
    scanf("%i", &anho);
    
    if(anho % 4 == 0)
        {
        if(anho % 100 == 0)
            {
            if(anho % 400 == 0) printf("SÍ BISIEXTO");
            else printf("NO BISIEXTO");
            }
        else printf("SÍ BISIEXTO");
        }
    else printf("NO BISIEXTO");   
    }
// Eurocalculadora
// (página 20, ej8 apuntes José María Bea )

#include <stdio.h>

int opcion = 0;
float dinero = 0;
float dineroconvertido = 0;

int main() {
	printf("- EUROCALCULADORA -\n");
	printf("\n 1. Ptas -> EUR");
	printf("\n 2. EUR -> Ptas");
	printf("\n\nSelecciona una opcion: ");
	scanf("%i", &opcion);
	printf("\nIntroduce el importe: ");
	scanf("%f", &dinero);

	switch(opcion)
	{
		case 1:
			dineroconvertido = dinero / 166.386;
			printf("\n%.0f ptas en EUR son %.2f\n",dinero, dineroconvertido);
			break;
		case 2:
			dineroconvertido = dinero * 166.386;
			printf("\n%.2f EUR en ptas son %.0f\n",dinero, dineroconvertido);
			break;
		default:
			printf("\nOpcion no valida.\n");
			break;
	}
}