UNIVERSIDAD CENTRAL DEL ECUADOR

FACULTAD DE CIENCIAS ECONÓMICAS

CARRERA DE INGENIERÍA EN ESTADÍSTICA
TERCER SEMESTRE
PROGRAMACIÓN
TALLER Nº12
TEMA: Ejercicios Acerca de Ciclos Repetitivos
GRUPO Nº8
Curso: EST S3 – 002
Docente: Ing. Francisco Valverde


Ejercicio 1:

Escribe un programa que diga si un número introducido por teclado es o no primo. Un número primo es aquel que sólo es divisible entre él mismo y la unidad. Nota: Es suficiente probar hasta la raíz cuadrada del número para ver si es divisible por algún otro número.

num <- 17 # valor de ejemplo
es_primo <- TRUE
if (num < 2) es_primo <- FALSE

i <- 2
while (i <= sqrt(num) && es_primo) {
  if (num %% i == 0) es_primo <- FALSE
  i <- i + 1
}
if (es_primo) cat(num, 'es primo\n') else cat(num, 'no es primo\n')
## 17 es primo

Ejercicio 2:

Realizar un algoritmo para determinar cuánto ahorrará una persona en un año, si al final de cada mes deposita cantidades variables de dinero; además, se quiere saber cuánto lleva ahorrado cada mes.

meses <- 12
ahorros <- c(50, 40, 60, 30, 70, 90, 80, 100, 60, 50, 55, 65) # valores de ejemplo
for (i in 1:meses) {
  cat('Hasta ahora llevas ahorrado', sum(ahorros[1:i]), "\n")
}
## Hasta ahora llevas ahorrado 50 
## Hasta ahora llevas ahorrado 90 
## Hasta ahora llevas ahorrado 150 
## Hasta ahora llevas ahorrado 180 
## Hasta ahora llevas ahorrado 250 
## Hasta ahora llevas ahorrado 340 
## Hasta ahora llevas ahorrado 420 
## Hasta ahora llevas ahorrado 520 
## Hasta ahora llevas ahorrado 580 
## Hasta ahora llevas ahorrado 630 
## Hasta ahora llevas ahorrado 685 
## Hasta ahora llevas ahorrado 750
cat('En todo el año lograste ahorrar', sum(ahorros), "\n")
## En todo el año lograste ahorrar 750

Ejercicio 3:

Una empresa tiene el registro de las horas que trabaja diariamente un empleado durante la semana (seis días) y requiere determinar el total de éstas, así como el sueldo que recibirá por las horas trabajadas.

horas <- c(8, 7.5, 8, 6, 7, 5) # ejemplos de horas por día
sueldo_x_hora <- 5 # ejemplo
cat('Trabajaste un total de', sum(horas), 'horas\n')
## Trabajaste un total de 41.5 horas
cat('Vas a recibir un sueldo de', sum(horas) * sueldo_x_hora, "\n")
## Vas a recibir un sueldo de 207.5

Ejercicio 4:

Una persona se encuentra en el kilómetro 70 de una carretera, otra se encuentra en el km 150, los coches tienen sentido opuesto y tienen la misma velocidad. Realizar un programa para determinar en qué kilómetro de esa carretera se encontrarán.

pos1 <- 70
pos2 <- 150
vel <- 40
tiempo <- (pos2 - pos1) / (2 * vel)
encuentro <- pos1 + vel * tiempo
cat('Los coches se van a encontrar en el kilómetro', encuentro, "\n")
## Los coches se van a encontrar en el kilómetro 110

Ejercicio 5: Pagos que se duplican

Una persona adquirió un producto para pagar en 20 meses. El primer mes pagó 10 €, el segundo 20 €, el tercero 40 € y así sucesivamente. Realizar un algoritmo para determinar cuánto debe pagar mensualmente y el total de lo que pagó después de los 20 meses.

meses <- 20
pago <- 10
total <- 0
for (i in 1:meses) {
  cat('En el mes', i, 'pagaste', pago, '€\n')
  total <- total + pago
  pago <- pago * 2
}
## En el mes 1 pagaste 10 €
## En el mes 2 pagaste 20 €
## En el mes 3 pagaste 40 €
## En el mes 4 pagaste 80 €
## En el mes 5 pagaste 160 €
## En el mes 6 pagaste 320 €
## En el mes 7 pagaste 640 €
## En el mes 8 pagaste 1280 €
## En el mes 9 pagaste 2560 €
## En el mes 10 pagaste 5120 €
## En el mes 11 pagaste 10240 €
## En el mes 12 pagaste 20480 €
## En el mes 13 pagaste 40960 €
## En el mes 14 pagaste 81920 €
## En el mes 15 pagaste 163840 €
## En el mes 16 pagaste 327680 €
## En el mes 17 pagaste 655360 €
## En el mes 18 pagaste 1310720 €
## En el mes 19 pagaste 2621440 €
## En el mes 20 pagaste 5242880 €
cat('En total pagaste', total, '€\n')
## En total pagaste 10485750 €

Ejercicio 6:

Una empresa les paga a sus empleados con base en las horas trabajadas en la semana. Realice un algoritmo para determinar el sueldo semanal de N trabajadores y, además, calcule cuánto pagó la empresa por los N empleados.

N <- 3 # es de ejemplo
sueldo_x_hora <- 5
horas_empleados <- c(40, 35, 30)
total_empresa <- 0
for (i in 1:N) {
  sueldo <- horas_empleados[i] * sueldo_x_hora
  total_empresa <- total_empresa + sueldo
  cat('Al empleado', i, 'le corresponde', sueldo, "\n")
}
## Al empleado 1 le corresponde 200 
## Al empleado 2 le corresponde 175 
## Al empleado 3 le corresponde 150
cat('En total la empresa pagó', total_empresa, "\n")
## En total la empresa pagó 525

Ejercicio 7:

Una empresa les paga a sus empleados con base en las horas trabajadas en la semana. Para esto, se registran los días que trabajó y las horas de cada día. Realice un algoritmo para determinar el sueldo semanal de N trabajadores y además calcule cuánto pagó la empresa por los N empleados.

N <- 2 # ejemplo de número de empleados
sueldo_x_hora <- 5
total_empresa <- 0
horas <- list(
  c(8,8,8,8,8,6),  # empleado 1
  c(7,7,7,7,7,5)   # empleado 2
)
for (i in 1:N) {
  total_horas <- sum(horas[[i]])
  sueldo <- total_horas * sueldo_x_hora
  total_empresa <- total_empresa + sueldo
  cat('El sueldo del empleado', i, 'es', sueldo, "\n")
}
## El sueldo del empleado 1 es 230 
## El sueldo del empleado 2 es 200
cat('En total la empresa pagó', total_empresa, "\n")
## En total la empresa pagó 430

Ejercicio 8:

Hacer un programa que muestre un cronometro, indicando las horas, minutos y segundos.

cat('¡Empezamos a contar el tiempo!\n')
for (h in 0:0) {
  for (m in 0:59) {
    for (s in 0:59) {
      cat(sprintf("%02d:%02d:%02d\n", h, m, s))
      Sys.sleep(1)
    }
  }
}

Ejercicio 9:

Realizar un ejemplo de menú, donde podemos escoger las distintas opciones hasta que seleccionamos la opción de “Salir”.

# Simulación de un menú sin readline
opciones <- c("1", "2", "3")
for (op in opciones) {
  if (op == "1") cat("¡Hola!\n")
  else if (op == "2") cat("Hoy es:", Sys.Date(), "\n")
  else if (op == "3") {cat("Saliendo...\n"); break}
  else cat("Opción inválida\n")
}
## ¡Hola!
## Hoy es: 20261 
## Saliendo...

Ejercicio 10: N números primos

Mostrar en pantalla los N primero número primos. Se pide por teclado la cantidad de números primos que queremos mostrar.

n <- 10
primos <- c()
num <- 2
while (length(primos) < n) {
  es_primo <- TRUE
  i <- 2
  while (i <= sqrt(num) && es_primo) {
    if (num %% i == 0) es_primo <- FALSE
    i <- i + 1
  }
  if (es_primo) primos <- c(primos, num)
  num <- num + 1
}
cat('Los números primos que te muestro son:', primos, "\n")
## Los números primos que te muestro son: 2 3 5 7 11 13 17 19 23 29