APLICANDO CONOCIMIENTOS ADQUIRIDOS ACERCA DE CICLOS REPETITIVOS
En este documento se presentan 10 ejercicios de aprendizaje sobre ciclos repetitivos, para la comunidad de RStudio.
AUTORES
COLABORACIÓN
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_primos <- function(num5) {
num5<-as.integer(readline("Ingrese el numero a verificar: "))
residuo<-(sum(num5/1:num5==num5%/%1:num5))
if(residuo==2)
{
cat("El número", num5, "es primo")
}else
{
cat("El número",num5, "no es primo")
}
}
num_primos()
## El número 6 no 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.
ahorro_persona <- function(cantidad) {
cantidad <- scan()
cat("Las cantidades a ahorrar son:","\n", cantidad)
sumaa <- sum(cantidad)
cat("\n","El total a ahorrar en un año es de:", sumaa, "dólares")
}
ahorro_persona()
## Las cantidades a ahorrar son:
## 15 25 30 150 200 98 23 147 258 369 123 456
## El total a ahorrar en un año es de: 1894 dólares
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.
sueldo_empleado <- function(sueldo, horas) {
sueldo <- as.numeric(readline("Ingrese el sueldo que gana por horas:"))
horas <- as.numeric(readline("Ingrese las horas trabajadas por día:"))
sueldo_diario <- (sueldo * horas)*6
cat("El sueldo a recibir es de:", sueldo_diario)
}
sueldo_empleado()
## El sueldo a recibir es de: 150
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.
kilometro <- function() {
km1 <- 70
km2 <- 150
kim_encuentro <- km1 + (km2 - km1)/2
cat("El kilómetro en el cual se encuentran es:", kim_encuentro, "kilómetros")
}
kilometro()
## El kilómetro en el cual se encuentran es: 110 kilómetros
EJERCICIO 5
- 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.
producto <- function(pago, contador) {
contador <- 5
for (pago in 1:20) {
contador <- (contador * 2)
cat("El pago del mes", pago, "es:", contador, "\n")
}
}
producto()
## El pago del mes 1 es: 10
## El pago del mes 2 es: 20
## El pago del mes 3 es: 40
## El pago del mes 4 es: 80
## El pago del mes 5 es: 160
## El pago del mes 6 es: 320
## El pago del mes 7 es: 640
## El pago del mes 8 es: 1280
## El pago del mes 9 es: 2560
## El pago del mes 10 es: 5120
## El pago del mes 11 es: 10240
## El pago del mes 12 es: 20480
## El pago del mes 13 es: 40960
## El pago del mes 14 es: 81920
## El pago del mes 15 es: 163840
## El pago del mes 16 es: 327680
## El pago del mes 17 es: 655360
## El pago del mes 18 es: 1310720
## El pago del mes 19 es: 2621440
## El pago del mes 20 es: 5242880
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.
contador <- 0
empresa <- function(num1, x1, x2) {
num1 <- as.numeric(readline("Ingrese el número de trabajadores: "))
for (num1 in 1:num1) {
x1 <- as.numeric(readline("Ingresa el valor de horas trabajadas:"))
x2 <- as.numeric(readline("ingresa el valor de pago por hora:"))
sueldosem <- x1*x2
contador <- contador + sueldosem
cat("El sueldo a recibir es:", sueldosem )
}
cat("\n","Por lo tanto","\n","La empresa pagó un total de:", contador, " dólares")
}
empresa()
## El sueldo a recibir es de 375 dólares
## Por lo tanto
## La empresa pagó un total de 1800 dólares
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.
contador <- 0
dias_horas <- function(trabajadores, dias, horas, valor) {
trabajadores <- as.numeric(readline("Ingrese el número de trabajadores: "))
for (trabajadores in 1:trabajadores) {
dias <- as.numeric(readline("Ingresa el número de días trabajados:"))
horas <- as.numeric(readline("Ingresa las horas trabajadas al día:"))
valor <- as.numeric(readline("Ingresa el valor de pago por hora:"))
horas_trabajo <- dias*horas
sueldosem <- horas_trabajo * valor
contador <- contador + sueldosem
cat("El sueldo a recibir es:", sueldosem )
}
cat("\n","Por lo tanto","\n","La empresa pagó un total de:", contador, " dólares")
}
dias_horas()
## El sueldo a recibir es: 700
## Por lo tanto
## La empresa pagó un total de: 700 dólares
EJERCICIO 8
- Hacer un programa que muestre un cronometro, indicando las horas, minutos y segundos.
hora <- 0
minuto <- 0
segundo <- 0
cronometro <- function(hora, minuto, segundo) {
for (hora in 0:23) {
for (minuto in 0:59) {
for (segundo in 0:59) {
Sys.sleep(1)
print(paste("HORA :",hora))
print(paste("MINUTO :",minuto))
print(paste("SEGUNDO :",segundo))
}
}
}
}
EJERCICIO 9
- Realizar un ejemplo de menú, donde podemos escoger las distintas opciones hasta que seleccionamos la opción de “Salir”.
# library(svDialogs)
menu<-function(){
opc1<-as.numeric(dlgInput(message="MENÚ PRINCIPAL
1.- Opción 1
2.- Opción 2
3.- Opción 3
4.- Opción 4
5.- Salir
---SELECCIONE UNA OPCIÓN:---")$res)
if(opc1==1){
opc1 <- dlgInput(message="Opción 1:
1.- Regresar al menú
2.- Salir
---SELECCIONE UNA OPCIÓN:---")$res
opc1<-as.character(opc1)
if(opc1==1){menu()}
}else if(opc1==2){
opc1 <- dlgInput(message="Opción 2:
1.- Regresar al menú
2.- Salir
---SELECCIONE UNA OPCIÓN:---")$res
opc1<-as.numeric(opc1)
if(opc1==1){menu()}
}else if(opc1==3){
opc1 <- as.numeric(dlgInput(message="Opción 3:
1.- Regresar al menú
2.- Salir
---SELECCIONE UNA OPCIÓN:---")$res)
if(opc1==1){menu()}
}else if(opc1==4){
opc1 <- as.numeric(dlgInput(message="Opción 4:
1.- Regresar al menú
2.- Salir
---SELECCIONE UNA OPCIÓN:---")$res)
if(opc1==1){menu()}
}
}
EJERCICIO 10
- Mostrar en pantalla los N primero número primos. Se pide por teclado la cantidad de números primos que queremos mostrar.
numeros_primos <- function(num) {
num<-as.numeric(readline("Ingrese la cantidad de números que desea observar: "))
primo <- numeric()
noprimo <- numeric()
for (k in 1:num)
{
if (sum(k/1:k==k%/%1:k)==2)
{
noprimo <- c(noprimo,k)
} else
{
primo <- c(primo,k)
}
}
primo
noprimo
}
numeros_primos()
## [1] 2 3 5 7 11 13