Cuaderno de Trabajo 3(1)

4
Fundamentos de la Programación – Cuaderno de trabajo 3 1 Grado en Sistemas de la Información, turno de mañana Grado en Ingeniería Informática, turno de mañana Ejercicios Resueltos 1. Escriba un programa capaz de identificar si un número leído por teclado es múltiplo de 3. SOLUCION PROPUESTA: #include <stdio.h> int main(void){ float n; printf("Introduzca un número (preferiblemente entero): "); scanf("%g",&n); if ((int)n > n || (int)n%3 == 0){ printf("El numero %g es múltiplo de 3.\n", n); } else{ printf("%g es un bonito número, pero no es múltiplo de 3.\n", n); } return 0; } 2. Escriba una función y su programa principal en C para calcular el factorial de un número validado en el rango de 1 a 30. Cuando se pase el número N a la función Factorial dicho número ya habrá sido validado por otra función. SOLUCION PROPUESTA: #include <stdio.h> #include <stdbool.h> long int Factorial(int x){ int i; long int acu = 1; for (i=1;i<=x; i++) acu*=i; return acu; } bool esValido(int n){ return (n-(int)n)!=0; } Fundamentos de Programación Cuaderno de Trabajo 3

description

Mu shuli....

Transcript of Cuaderno de Trabajo 3(1)

  • Fundamentos de la Programacin Cuaderno de trabajo 3 1

    Grado en Sistemas de la Informacin, turno de maana

    Grado en Ingeniera Informtica, turno de maana

    Ejercicios Resueltos

    1. Escriba un programa capaz de identificar si un nmero ledo por teclado es

    mltiplo de 3.

    SOLUCION PROPUESTA:

    #include

    int main(void){

    float n;

    printf("Introduzca un nmero (preferiblemente entero): ");

    scanf("%g",&n);

    if ((int)n > n || (int)n%3 == 0){

    printf("El numero %g es mltiplo de 3.\n", n);

    }

    else{

    printf("%g es un bonito nmero, pero no es mltiplo de 3.\n", n);

    }

    return 0;

    }

    2. Escriba una funcin y su programa principal en C para calcular el factorial de un

    nmero validado en el rango de 1 a 30. Cuando se pase el nmero N a la funcin

    Factorial dicho nmero ya habr sido validado por otra funcin.

    SOLUCION PROPUESTA:

    #include

    #include

    long int Factorial(int x){

    int i;

    long int acu = 1;

    for (i=1;i

  • Fundamentos de la Programacin Cuaderno de trabajo 3 2

    int main(void){

    float n;

    int num;

    printf("Introduce un numero entero entre 1 y 30: ");

    scanf("%g",&n);

    num = (int)n;

    if ((n30) || !esValido(n)){

    printf("Error!!: el nmero debe ser entero y estar

    comprendido entre 1 y 30.\n");

    return -1;

    }

    else{

    printf("El factorial de %i es %ld\n",num,Factorial(num));

    return 0;

    }

    }

    Ejercicios propuestos

    1. Escriba un cdigo que implemente el siguiente comportamiento: Si la compra es

    superior a 100EUR se aplica un descuento del 5% si se paga al contado, pero si el

    pago es con tarjeta slo se aplica el 2%

    2. Escribir un programa que calcule el producto de dos nmeros enteros ledos

    desde el teclado sin utilizar el operador de multiplicacin *. El programa no debe

    asumir que ambos nmeros son mayores que cero y deber por tanto validar las

    entradas.

    3. Escribir un programa que lea la hora en notacin de 24 horas y la devuelva en

    notacin de 12 horas (ejemplo: las 18:30 sern las 6:30 PM).

    4. Una universidad acaba de modificar su sistema de representacin de la

    calificacin de los alumnos, que como es sabido son valores entre 0 y 10. A partir

    de ahora, se calificarn como A las notas mayores o iguales a 8,5, B las

    mayores o iguales a 6,5, C las calificaciones mayores o iguales a 5, D las

    calificaciones mayores o iguales a 3,5, y F todas las dems. Programe una

    funcin que reciba una calificacin numrica y retorne la letra con la nueva

    calificacin.

    5. Escribir un programa que lea un nmero real y un nmero entero y calcule el

    valor del primero elevado al segundo.

    6. Escribir un algoritmo que tras leer tres enteros los escriba en pantalla ordenados.

    7. Programe dos funciones en C que permitan determinar si un determinado

    carcter es una vocal o no, implementando una funcin con if-else y otra con

    switch.

    8. Escribir un programa que, despus de preguntar cuntos nmeros se van a

    introducir, pida esos nmeros y devuelva su media aritmtica, el mayor y el

    menor. El programa debe controlar que la cantidad de nmeros es mayor de 2 y

    en caso contrario ha de mostrar un mensaje de error.

  • Fundamentos de la Programacin Cuaderno de trabajo 3 3

    9. Programe una funcin en C que reciba un nmero entero, y si es entre 1 y 12

    escriba un mensaje por pantalla indicando el mes a que dicho nmero

    corresponde. En caso contrario deber mostrar un mensaje de error.

    10. Escribir un programa que lea un nmero entero positivo y:

    a. determine cuntos dgitos se necesitan para escribir su valor.

    b. calcule cuntas veces se puede dividir ese nmero por 2.

    11. Escriba un programa en C que lea una letra por teclado correspondiente a un da

    de la semana y muestre un men de comida para dicho da. Asegrese de que su

    programa es robusto y por tanto comprueba que la letra leda es correcta, en

    caso contrario muestre un mensaje de error.

    12. Escribir un programa que lea una serie de nmeros enteros hasta que se

    introduzca el nmero -9999, y cuente el total de nmeros introducidos, el total de

    valores positivos y el total de valores negativos. Hacerlo primero utilizando la

    sentencia while y despus la sentencia do-while.

    13. Obtener las races de una ecuacin de segundo grado ax bx c2 0 a partir de

    sus coeficientes a, b y c. Recuerde que si el discriminante es cero la raz es nica

    (-b/2xa) y que si el discriminante es negativo las races son imaginarias, en cuyo

    caso deber indicarse con un mensaje races imaginarias y mostrarse indicado

    as:

    X1 = (-b + discriminante1/2)/ (2*a)

    14. Escribir un programa que pida un nmero lmite y calcule cuntos trminos de la

    serie armnica son necesarios para que su suma supere dicho lmite, es decir,

    determine el menor nmero n tal que:

    11

    2

    1

    3

    1 ........

    nlmite

    El programa ha de ser robusto, es decir, no asumir que el nmero introducido por

    el usuario es positivo ni entero.

    15. Escribir un programa que lea dos caracteres y averige si se introdujeron en el

    orden de su cdigo ASCII o no. Se deber adems comprobar si el primero de

    ellos es una cifra, y en caso afirmativo indicar si es impar y si es o no primo.

    Modularice la solucin.

    16. Escribir un programa que lea un entero positivo n y genere:

    a. una tabla con las n primeras potencias de 2.

    b. una tabla con las potencias de 2 que son menores o iguales que n.

    17. Escribir un programa que acepte un ao escrito en cifras arbigas y lo visualice

    escrito en nmeros romanos, dentro del rango 1 a 2000. (I=1, V=5, X=10, L=50,

    C=100, D=500, M=1000).

    18. El director de un banco necesita un programa para determinar cundo un

    solicitante de un prstamo hipotecario est cualificado para obtenerlo. El criterio

    para la concesin del prstamo se gua por las siguientes caractersticas: el

    sueldo base del solicitante debe ser al menos el 20% del precio de la vivienda,

  • Fundamentos de la Programacin Cuaderno de trabajo 3 4

    debe haber trabajado al menos 5 aos, sus ingresos anuales han de ser al menos

    el 40% del precio de la compra, y si tiene otros crditos, stos no deben superar

    el 20% del sueldo anual. Realizar un programa modularizado para decidir si un

    solicitante es vlido o no.

    19. Escribir un programa que muestre un men en pantalla que permita calcular el

    seno, coseno, tangente, cotangente, secante y cosecante. El men se mostrar

    hasta que el usuario decida salir. El men quedar:

    1. Seno 2. Coseno

    ...

    0. Salir

    Elija una opcin:

    20. Una compaa de alquiler de automviles desea un programa para emitir sus

    facturas, con las siguientes consideraciones:

    a. Una cantidad fija de 100EUR si no se rebasan los 300 Km.

    b. Si la distancia recorrida es mayor que 300 Km:

    i. Si la distancia es menor o igual que 1000 Km, se cobrarn las

    100EUR ms el kilometraje que exceda de 300 Km a razn de 30

    cntimos/Km.

    ii. Si la distancia es mayor que 1000 Km, se cobrarn los 100EUR ms

    el kilometraje a razn de 30 cntimos/Km para los kilmetros entre

    el 300 y el 1000 y 20 cntimos/Km para el resto.