Modulo 2 - Practica
Modulo 2 - Practica
Modulo 2 - Practica
Ejercicios
Breve descripción
Ejercicios de programación para el módulo 2.
Versión 1.1
Martin Jerman
Martin.jerman@inspt.utn.edu.ar
Practica del módulo 2
3. Desarrolla un algoritmo que le permita leer dos valores (A y B) y que escriba cuál de los dos
valores leídos es el mayor.
4. Ingresa dos números enteros, la computadora indica si el mayor es divisible por el menor.
7. Recomendado: Desarrolla un algoritmo que le permita leer tres valores enteros e indique
cuál es el mayor.
8. Desarrolla un algoritmo que le permita leer tres valores A, B y C e indique cuál es valor del
centro (análogo al ejercicio 7).
9. Desarrolla un algoritmo que le permita leer tres valores A, B y C e indicar si uno de los tres
divide a los otros dos exactamente.
11. Completa los espacios en blanco de manera tal que el programa indique si la persona es o
no mayor de edad, considerando, int edad=18;
a) if _______________________ printf( "Es mayor de edad, ya que tiene %d
años \n" , edad ); else printf ("No es mayor de edad\n");
b) if _______________ printf( "No es mayor de edad, ya que tiene %d años
\n" , edad ); else printf ("Es mayor de edad\n");
12. Suponiendo que y = 5 y x = 1, cuando se ejecutan las siguientes instrucciones; ¿cuál será la
salida?
a) if (!((x < 2) && (y < 6)) ) printf( "Si"); else printf( "NO");
b) if (!((x > 1) && (y > 3)) printf( "Si"); else printf( "NO");
15. Vuelve a escribir el fragmento anterior, pero utilizando el operador || (OR) en la condición
de if.
16. Escribe un programa que reciba dos números enteros como entrada y escriba el mensaje
"signos opuestos", si al menos uno de los números ingresados es negativo.
21. Recomendado: Construye un programa que ingrese los valores de los lados de un triángulo:
a) Valide si las medidas pueden formar un triángulo y b) detecte y muestre un mensaje
correspondiente a su tipo (EQUILÁTERO, ISÓSCELES, O ESCALENO);
22. Desarrolla un algoritmo que le permita leer un valor cualquiera N y escribir si dicho número
es múltiplo de Z.
23. Desarrolla un algoritmo que le permita leer tres valores N, M y P y decir si N es múltiplo de
M y P.
24. Recomendado: Desarrolla un algoritmo que le permita leer tres valores A, B y C e indicar si
la suma de dos de ellos cualquiera es igual al tercero.
#include <stdio.h>
main(){
float nota;
printf ("Introduzca la nota del 0 al 10: ");
scanf ("%f", ¬a);
if (nota < 5)
printf (“SUSPENSO\n”);
else
printf (“APROBADO\n”);
return 0;
}
¿Qué sucede si la nota introducida es 5, menor que 5, o mayor que 5? Modifíquelo para que
muestre por pantalla la palabra “SUSPENSO”, “APROBADO”, “NOTABLE” o
“SOBRESALIENTE”, según sea la nota introducida.
26. Tipea el siguiente programa que utiliza la sentencia condicional if y sigue la traza para
observar su funcionamiento. Usa el depurador y observa los valores de las variables del
programa:
#include <stdio.h>
main() {
int valor, resultado;
printf("Introduce un numero entero:");
scanf("%d",&valor);
resultado = valor%2;
if (resultado)
printf("El numero introducido era IMPAR");
else
printf("El numero introducido era PAR");
return 0;
}
a) Sustituye la expresión que da valor a la variable resultado por esta otra: valor %7.
¿Cuándo se ejecuta el primer printf y cuándo el segundo? Modifique el mensaje de los
printf para que el programa sea coherente con el comportamiento de la sentencia if.
b) Ídem para la expresión: valor%2==0 && valor>10
c) Ídem para la expresión: valor%2==0 || valor>10
d) Ídem para la expresión: !(valor%2!=0 && valor<=10)
#include <stdio.h>
int main() {
char caracter;
printf ("Introduce un carácter y pulsa Intro: ");
scanf (“%c”,&caracter);
if ( (character >= ’A’) && (character <= ’Z’) )
printf("La letra es una mayúscula\n");
else if ( (character >= ’a’) && ( character <= ’z’) )
printf("La letra es una minúscula\n");
else
printf("No es una letra\n");
return 0;
}
Amplía para que además de decirnos si el carácter introducido es una letra mayúscula o
minúscula, que nos diga si el carácter es un dígito numérico.
28. En un almacén se rebaja 20% del precio al cliente si el valor a pagarse es mayor a $200. Dado
un valor, muestre lo que debe pagar el cliente.
29. Una frutería ofrece las manzanas con descuento según la siguiente tabla:
5.01 - 10 15
10.01 en adelante 20
Determina cuánto pagara una persona que compre X manzanas a Y precio en esa frutería.
31. Recomendado: Dadas las 4 notas obtenidas por un alumno, calcule e informe por pantalla
su promedio e informe con una leyenda si está aprobado o no. La condición de aprobación
es obtener un promedio mayor o igual que 4.
32. De una prueba de nivel realizada a un alumno se conoce la cantidad total de preguntas
realizadas y la cantidad de respuestas correctas. Construye un programa que informe el
nivel registrado de acuerdo con la siguiente escala:
Nota Porcentaje
Excelente 100
Muy bueno 91 a 99
Bueno 61 a 90
Regular 40 a 60
Malo 0 a 40
36. Recomendado: Construye un programa que solicite la primera letra de los días de la
semana y emita por pantalla el nombre completo de ese día. En el caso de los martes y
miércoles, pedir la segunda letra para emitir.
printf("(1) EL TRIPLE\n");
printf("(2) EL CUADRADO\n");
printf("(3) LOGARITMO NATURAL\n");
printf("(4) LOGARITMO DECIMAL\n");
printf("(5) SENO\n");
printf(" Escribe el numero de la opción que desees: \n");
scanf("%d",&x);
switch(x)
{
case 1:
printf("Escribe el numero: \n");
scanf("%f",&num);
printf("El triple de %f es %f",num,3*num);
break;
case 2:
printf("Escribe el numero: \n");
scanf("%f",&num);
printf("El cuadrado de %f es %f",num,num*num);
break;
case 3:
printf("Escribe el numero: \n");
scanf("%f",&num);
printf("El logaritmo neperiano de %f
es %f",num,log(num));
break;
case 4:
printf("Escribe el numero: \n");
scanf("%f",&num);
printf("El logaritmo decimal de %f
es %f",num,log10(num));
break;
case 5:
printf("Escribe el numero: \n");
scanf("%f",&num);
printf("El seno de %f es %f",num,sin(num));
break;
default:
printf("Esto no es ninguna opción \n");
break;
}
}
3. Suponer que en una condición while hay una sola variable entera. Si el cuerpo del ciclo
nunca cambia el valor de esta variable, ¿qué se puede afirmar acerca de este ciclo "while"?
5. Recomendado: Escriba un programa que le permita al usuario intentar hasta cuatro veces
la respuesta a una cierta pregunta. Si el usuario no acierta a los cuatro intentos, se le deberá
indicar la respuesta correcta.
7. Pedro invierte u$s 100 a una tasa del 8% anual. Jorge invierte u$s 150 al 5% anual. ¿Después
de cuántos años la cuenta de Pedro rebasará a la de Jorge?
2. Supone que en una condición while hay una sola variable entera. Si el cuerpo del ciclo nunca
cambia el valor de esta variable, ¿qué se puede afirmar acerca de este ciclo "while"?
4. Desarrolle un algoritmo que le permita realizar la suma a los primeros N números impares.
8. Desarrolle un algoritmo que le permita leer un valor entero positivo N y decir si es primo o
no. Análisis: Un número es primo cuando es divisible tan solo por la unidad y por si mismo.
Para determinar si un número es primo o no se realiza la verificación de la división de dicho
número con el rango de datos comprendidos entre el dos y la mitad del número. Si existe
algún valor de dicho rango que divide exactamente a nuestro número entonces este no será
primo. Si al finalizar dicha revisión no hay ningún valor que lo divida exactamente entonces
nuestro número será primo. La revisión se hace hasta la mitad del número ya que de la
mitad hacia arriba ningún valor lo divide exactamente.
10. Desarrolle un algoritmo que le permita leer un valor entero positivo N y verifique si es
máximo común divisor de W y Z. Análisis: Existen diferentes maneras de verificar si un
número es el máximo común divisor de otros dos valores. Una manera es hallar la diferencia
entre dichos valores y comenzar a verificar de esa diferencia hacia atrás si existe un valor
que divida a los dos exactamente. En el momento de encontrar dicho valor el algoritmo no
verifica más. En caso de existir un valor que los divida, al final se compara con el valor de N,
si es igual es porque N es el MCD.
11. Recomendado: Desarrolle un algoritmo que le permita leer un valor entero positivo N dado
en base decimal y convertirlo a base binaria. Análisis: Para convertir un número
representado en base decimal a base binaria es necesario dividir consecutivamente por dos
el número hasta llegar a un valor de 1. Se toma en una variable el residuo de dividir el
número entre dos y el residuo de la división exacta se va escribiendo, Luego se retoma en la
variable donde estaba el número inicialmente, el valor entero de la división.
12. Recomendado: Escribí un programa para mostrar una tabla de conversión entre grados
Fahrenheit y grados Celsius. Sugerencia: celsius = (fahrenheit - 32) * 5/9.
Fahrenheit Celsius
32 0.0
34 1.1
13. Escribe un programa para contar la cantidad de dígitos de un número que se ingresa.
Selecciona el tipo de ciclo más conveniente.
14. Leer un número entero y almacenarlo en la variable N y leer una base numérica cualquiera
en la variable B y pasar dicho número a esta Base. Análisis: Para la solución del presente
ejercicio se sigue el procedimiento anterior con la diferencia que se va a dividir
consecutivamente por el valor de la base.
15. Recomendado: Desarrolle un algoritmo que le permita leer un valor entero positivo N y
calcular su cuadrado sumando N veces N.
16. Desarrolle un algoritmo que le permita leer N valores y calcular la media aritmética Análisis:
para poder calcular el valor de la media aritmética a N valores es necesario dentro de una
estructura cíclica leer y almacenar los valores y al finalizar el ciclo calcular el valor del
promedio.
17. Recomendado: Escribir un programa para evaluar la función y = 4x2 - 16x + 15, en
donde x toma los valores de 1 a 2 en pasos de 0,1. Para cada x la salida debe dar el valor de
y junto con el mensaje POSITIVO o NO POSITIVO en formato de tabla.
18. Escribir un programa de sueldos usando un ciclo do while con señal de finalización. Para
cada empleado, el programa debe solicitar el nombre, genero, horas de trabajo y sueldo por
hora. La impresión debe mostrar nombre del empleado, horas trabajadas, sueldo por hora
y cuánto cobrará. Al final, deberá indicar el sueldo promedio de los hombres y el sueldo
promedio de las mujeres.
19. Las potencias de 2 son 1, 2, 4, 8, 16, 32, 64, etc. Para obtener la siguiente potencia
de 2, se multiplica la anterior por 2. Escribí un programa que pueda determinar la primera
potencia de 2 que sobrepasa de 1000.
20. Escribir un programa en el que el usuario debe introducir enteros positivos entre 1 y 5. El
programa debe informar al usuario cuando haya escrito un entero que hace que la suma de
los números ingresados pase de 21. Además del mensaje "MAS DE 21", la computadora
debe imprimir la suma y el último entero introducido.
21. Redactar un programa que imprima la secuencia de Ulam para un entero que se ingresa.
Dar formato a la salida para que no contenga más de 10 números por línea. Además, se debe
indicar cuántos números componen la secuencia.
5. Desarrolle un algoritmo que le permita realizar la suma a los primeros N números impares.
Análisis: La idea es desarrollar la estructura para N veces y de la variable que lleve la cuenta
generar los números impares buscando la relación entre la cuenta y el número como tal.
6. Escribe un programa para encontrar la suma de los primeros 50 números. Córrelo varias
veces, debe en cada caso mostrar la misma salida. Ahora elimina la inicialización: sum=0; y
corre el programa dos veces más. Si las salidas fueron incorrectas explica por qué.
7. Escribe un programa en el que se pida al usuario que ingrese 10 enteros impares para
sumarlos, el programa debe validar el número de manera que actúe correctamente cuando
el usuario introduce, por error, un número par, imprimirá la suma y debe finalizar sólo
cuando se hayan ingresado diez enteros impares.
8. Generar un programa que ingresar N naturales y que muestre la suma, el promedio, el valor
máximo y el mínimo.
9. Escribe un programa que calcule y muestre la suma: 1 + 1/2 + 1/3 + 1/4 + .... + 1/50
10. Recomendado: Escribe un programa que muestre una tabla con los cuadrados y cubos de
los números de 1 a 15 y luego presente en pantalla:
a) La suma de los cuadrados.
b) La suma de los cubos
c) Cuántos cubos son mayores a 500
d) Un mensaje que diga si la suma de los cuadrados fue o no mayor a 2000.
11. Se lanza una pelota hacia arriba con una velocidad inicial de Vo m/s (metros por segundo),
y lo hace un hombre parado en el borde de un profundo precipicio, a cuya profundidad
denominamos ho. La altura de la pelota (sobre el nivel del suelo) después de t segundos es
h(t), y responde a la ecuación: h(t) = ho + Vot - 4,9 t2.
12. Recomendado: Supone que se lanza la pelota con una velocidad inicial Vo = 96 m/s. Se
necesita un programa para producir una tabla que presente la altura de la pelota para cada
valor de t de 1 a 8 segundos.
13. 5! (que se lee "factorial de cinco") es igual al producto 5.4.3.2.1. De manera similar, 8!
=8.7.6.5.4.3.2.1. Escribe un programa que calcule el factorial de un número cualquiera que
se ingresa por teclado.
14. Escribe un programa de sueldos para una PyME que tiene seis empleados. Para cada
empleado/a, el programa recibe desde el teclado el id de empleado, género, horas
trabajadas y sueldo por hora. Por cada empleado ingresado, el programa deberá mostrar
en pantalla el nombre y el sueldo de cada empleado. Posteriormente debe informar el total
de pagos para cada género, y el sueldo promedio de hombres y de mujeres.
15. Recomendado: Escribe un programa que permita calificar a un grupo de diez alumnos de
la escuela secundaria. Por teclado se ingresan el nombre y las tres calificaciones de cada
alumno y con esos datos el programa debe calcular e informar el promedio de cada alumno
y decir si está aprobado o no; para aprobar se requiere un promedio de seis o más y haber
obtenido al menos seis en la última de las tres calificaciones. Posteriormente el programa
debe informar cuántos alumnos aprobaron y cuántos obtuvieron un promedio de al menos
8 puntos.
Ejercicios complementarios
1. Un bote tiene capacidad de llevar X kilos. Se tiene una lista con los pesos en kilos ordenados
en forma creciente de las personas que desean subir al bote. Determine cuantas personas
puede llevar el bote.
2. Recomendado: Repita la lectura de un número entero hasta que sea positivo, entonces,
determine cuantas cifras tiene. El método que debe usar es contar cuantas veces es divisible
para 10.
4. Recomendado: Dado un entero positivo, muéstrelo con las cifras en orden opuesto. Ej.
Entra 7258. Sale 8527.
5. Dados dos números enteros muestre su MCD y su MCM. Ej. Entra 25 y 20. Sale 5 y 100. Nota:
si a, b son los datos y MCM es su mínimo común múltiplo y MCD es su máximo común divisor,
se tiene que MCD * MCM = a * b.
10. Recomendado: Encuentre todos los números naturales entre 1 y 100 tales que la suma de
sus dígitos de como resultado un numero primo. Ejemplo: 34: 3+4 = 7 debe mostrar el 34
pues 7 es un número primo.
11. Muestre los N primeros números de la secuencia de Fibonacci, siendo n un dato entero.
12. Los términos de la secuencia de Fibonacci son: 1, 1, 2, 3, 5, 8, 13, 21, 34, .... Note que a partir
del tercer término cada nuevo término es igual a la suma de los dos anteriores.
13. Repita la lectura de un entero hasta que sea par. Luego encuentre dos números primos tales
que la suma sea igual al dato dado.
14. Dado el radio r de una circunferencia, encuentre el polígono regular de menor número de
lados inscrito en la circunferencia, de tal manera que la suma de sus lados difiera de la
longitud de la circunferencia en no más de 0.0001. Sugerencia: repita los cálculos con
polígonos regulares incrementando su número de lados con n = 3, 4, 5, 6,…
15. Recomendado: ¿Cuántas iteraciones del bloque se realizan al ejecutar el siguiente bucle?:
for (i=0 ; i<100 ; i=i+2) {/* bloque */};
16. Recomendado: ¿Cuántas iteraciones del bloque se realizan al ejecutar el siguiente bucle?:
for (i=0 ; i<100 ; i--) {/* bloque */};
17. Recomendado: ¿Cuántas iteraciones del bloque se realizan al ejecutar el siguiente bucle?:
for (i=100 ; i>0 ; i--) {/* bloque */};
18. Recomendado: ¿Cuántas iteraciones del bloque se realizan al ejecutar el siguiente bucle?:
for (i=0 ; i<100 ; i=i+2)
for (j=0 ; j<100 ; j=j+2)
{/* bloque */};
19. Recomendado: ¿Cuántas iteraciones del bloque se realizan al ejecutar el siguiente bucle?:
for (i=0 ; i<100 ; i++)
for (j=0 ; j<i ; j++)
{/* bloque */};
22. Recomendado: Se desea procesar las ventas realizadas por los vendedores de una empresa.
Cada vendedor tiene un número que lo identifica y trabaja en una zona en particular. Cada
vendedor puede realizar una venta, más de una o ninguna.
Para procesar los datos se lee un número no determinado de veces un número de vendedor,
luego un carácter y una sucesión de valores reales, cada uno correspondiente a una venta;
el fin de las ventas de un vendedor se indica con un -1. Si el vendedor no realizó ninguna
venta, luego de ingresados su número y zona, ingresará el -1.
El fin de la secuencia de vendedores se indica con número de vendedor -1 y no se lee zona
ni ventas en ese caso.
Se desea emitir esta información:
a. Para cada vendedor, la suma total de ventas
b. La zona en la que se ha vendido más y a cuánto asciende ese máximo.
c. Cuántos vendedores no han vendido nada.
d. El valor máximo de alguna venta (de una venta, no de la suma de ventas de un
vendedor).
23. Una empresa tiene un número no determinado de empleados, que evalúa durante los
proyectos en los cuales participan en varios ítems. Por cada empleado se lee:
• El código del empleado (entero)
• Edad de este (entero)
• N cantidad de notas (cada nota es un real, N es una constante).
El último empleado se indica con código = -1, valor que no se procesa. Se desea:
• Emitir la cantidad de empleados con promedio >=7 que sean menores de 30 años
• Emitir un mensaje indicando si algún empleado obtuvo alguna nota 0 (nota, NO
promedio)
• Emitir la edad del mayor y menor empleado.
24. Se desea procesar información de una boletería de teatro, en donde se presenta un grupo
de obras, la cantidad de obras no está determinada previamente. Para ingresar los datos se
pide:
• Código de obra (código 0 cero para terminar el proceso).
• Para cada código de obra se lee un número no determinado de veces:
o Ubicación (fila y número),
o Precio de la entrada,
o Final del proceso de cada obra es fila 0 (cero).
Se desea para cada obra emitir:
• la recaudación total
• La fila más vendida
• Indicar el total de entradas vendidas para la fila 1
• Indicar total de entradas vendidas para asientos 20 y 21 (un solo total por la venta
de ambos)
• Al finalizar el procesamiento el total recaudado en todas las obras y cuál es la obra
que más recaudó.
b)
for( n = 1;n<=3;n++)
{
for( i = 5;i<= 7;i++)
printf(“%d %d”, n,i);
printf(“\n”);
}
28. Realice un programa que calcule el promedio de tres notas para 10 alumnos. El ejemplo de
una salida puede ser:
Alumno #1
Nota 1: 100
Nota 2: 70
Nota 3: 70
Promedio: 80.00
29. Recomendado: Construye un programa de gestión para una pequeña compañía que tiene
seis empleados. Cada empleado tiene un número de legajo que está entre 111 y 999. Para
cada empleado/a, el programa recibe desde el teclado el nombre, sexo, horas trabajadas y
sueldo por hora. Pero además por cada empleado, se deben descontar una cantidad no
conocida de vales de adelantos dados en el mes. Por cada empleado ingresado, el programa
deberá mostrar en pantalla el nombre y sueldo a cobrar. Al finalizar el programa se debe
informar el total de pagos para cada sexo, el sueldo promedio de hombres y de mujeres y
qué legajo obtuvo mayores ingresos
ZYXWVUTSRQPONMLKJIHGFEDCBA
YXWVUTSRQPONMLKJIHGFEDCBA
XWVUTSRQPONMLKJIHGFEDCBA
WVUTSRQPONMLKJIHGFEDCBA
VUTSRQPONMLKJIHGFEDCBA
UTSRQPONMLKJIHGFEDCBA
TSRQPONMLKJIHGFEDCBA
SRQPONMLKJIHGFEDCBA
RQPONMLKJIHGFEDCBA
QPONMLKJIHGFEDCBA
PONMLKJIHGFEDCBA
ONMLKJIHGFEDCBA
NMLKJIHGFEDCBA
MLKJIHGFEDCBA
LKJIHGFEDCBA
KJIHGFEDCBA
JIHGFEDCBA
IHGFEDCBA
HGFEDCBA
GFEDCBA
FEDCBA
EDCBA
DCBA
CBA
BA
A
35. Se desea obtener el promedio de g grupos que están en un mismo año escolar; siendo que
cada grupo puede tener n alumnos, que cada alumno puede llevar m materias y que en
todas las materias se promedian tres calificaciones para obtener el promedio de la materia.
Lo que se desea desplegar es el promedio de los grupos, el promedio de cada grupo y el
promedio de cada alumno.
36. El profesor de una materia desea conocer la cantidad de sus alumnos que no tienen derecho
al examen de nivelación. Diseñe un programa que lea las calificaciones obtenidas en las 5
unidades por cada uno de los 40 alumnos y escriba la cantidad de ellos que no tienen
derecho al examen de nivelación.
37. Escriba un programa que imprima la forma en diamante siguiente (minimice la cantidad de
printf utilizados):