INGENIERÍA EN ESTADÍSTICA

En esta publicación podrás encontrar ejercicios sobre los ciclos repetitivos en R

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.
library(svDialogs)

primo <- function(){
  num4<-as.integer(dlgInput(message="INGRESE UN NUMERO ")$res)
  if(sum(num4/1:num4==num4%/%1:num4)==2){
    (m <- paste0("EL NUMERO: ", num4 , " ES PRIMO "))
  }else{(m <- paste0("EL NUMERO: ", num4, " NO ES PRIMO"))}
}
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.
total<- 0
ahorro<- 0
mes<- c("ENERO","FEBRERO","MARZO","ABRIL","MAYO","JUNIO","JULIO",
        "AGOSTO","SEPTIEMBRE","OCTUBRE", "NOVIEMBRE", "DICIEMBRE")
cuenta<-function(num){
  for(num in mes){
    ahorro<- as.numeric(dlgInput(message="INGRESE LA CANTIDAD A AHORRAR:")$res)
    total<- total+ahorro
    print(paste("EN", num, "LLEVAS: $",total, "DE AHORRO"))
  }
  print(paste("EN EL AÑO AHORRASTE: $",total))
}
cuenta()

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<- 0
total_horas<- 0
dias<- c("LUNES", "MARTES", "MIERCOLES", "JUEVES", "VIERNES", "SABADO")
remuneracion<-function(num){
  for(num in dias){
    horas<- as.numeric(dlgInput(message= "¿CUANTAS HORAS TRABAJO?")$res)
    total_horas<- total_horas+ horas
    sueldo<- total_horas*4.50
    print(paste("EL", num, "TRABAJO", horas, "HORAS"))
  }
  print(paste("EL SUELDO QUE RECIBIRA ES DE: $", sueldo))
}
remuneracion()

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.
p1<- 70
p2<- 150
km<-0
while(p1 == p2){
  p1<- p1+1
  p2<- p2-1
  km<- p2-p1
  print(paste("SE ENCONTRARON EN EL KILOMETRO", km))
}

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.
pago<-  10
total<- 0
total_a_pagar<-function(num){
  for(num in 1:20){
    pago<- pago*2
    total<- total + pago
    print(paste("EN EL MES", num, "PAGARAS: $", pago))
  }
  print(paste("EL TOTAL QUE PAGASTE EN 20 MESES ES DE: $", total))
}
total_a_pagar()
## [1] "EN EL MES 1 PAGARAS: $ 20"
## [1] "EN EL MES 2 PAGARAS: $ 40"
## [1] "EN EL MES 3 PAGARAS: $ 80"
## [1] "EN EL MES 4 PAGARAS: $ 160"
## [1] "EN EL MES 5 PAGARAS: $ 320"
## [1] "EN EL MES 6 PAGARAS: $ 640"
## [1] "EN EL MES 7 PAGARAS: $ 1280"
## [1] "EN EL MES 8 PAGARAS: $ 2560"
## [1] "EN EL MES 9 PAGARAS: $ 5120"
## [1] "EN EL MES 10 PAGARAS: $ 10240"
## [1] "EN EL MES 11 PAGARAS: $ 20480"
## [1] "EN EL MES 12 PAGARAS: $ 40960"
## [1] "EN EL MES 13 PAGARAS: $ 81920"
## [1] "EN EL MES 14 PAGARAS: $ 163840"
## [1] "EN EL MES 15 PAGARAS: $ 327680"
## [1] "EN EL MES 16 PAGARAS: $ 655360"
## [1] "EN EL MES 17 PAGARAS: $ 1310720"
## [1] "EN EL MES 18 PAGARAS: $ 2621440"
## [1] "EN EL MES 19 PAGARAS: $ 5242880"
## [1] "EN EL MES 20 PAGARAS: $ 10485760"
## [1] "EL TOTAL QUE PAGASTE EN 20 MESES ES DE: $ 20971500"

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.
empresa<-function(num){
  empleados<- as.numeric(dlgInput(message="CUANTOS TRABAJADORES TIENE?")$res)
  gasto_empresa<- 0
  for(num in 1:empleados){
    horas<-as.numeric(dlgInput(message="CUANTAS HORAS TRABAJO A LA SEMANA?")$res)
    gasto_empresa<- gasto_empresa + horas*2.50
    sueldo<- horas*2.50
    print(paste("EL EMPLEADO", num, "GANA SEMANAL: $", sueldo))
  }
  print(paste("LA EMPRESA PAGO POR LOS", empleados, "EMPLEADOS", gasto_empresa))
}
empresa()

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.
empresa<-function(num){
  empleados<- as.numeric(dlgInput(message="CUANTOS TRABAJADORES TIENE?")$res)
  gasto_empresa<- 0
  for(num in 1:empleados){
    horas<-as.numeric(dlgInput(message="CUANTAS HORAS TRABAJO A LA SEMANA?")$res)
    gasto_empresa<- gasto_empresa + horas*2.50
    sueldo<- horas*2.50
    print(paste("EL EMPLEADO", num, "GANA SEMANAL: $", sueldo))
  }
  print(paste("LA EMPRESA PAGO POR LOS", empleados, "EMPLEADOS", gasto_empresa))
}
empresa()

EJERCICIO 8

Hacer un programa que muestre un cronometro, indicando las horas, minutos y segundos.
cronometro<- function(seg){
  print(seg)
  while(seg!=0){
    Sys.sleep(1)
    seg<- seg-1
    print(seg)
  }
}
cronometro(seg<-as.numeric(dlgInput(message="INGRESE UN NUMERO:")$res)) 

EJERCICIO 9

Realizar un ejemplo de menú, donde podemos escoger las distintas opciones hasta que seleccionamos la opción de “Salir”.
menu<-function(){ 
  opc1<-as.numeric(dlgInput(message="MENU PRINCIPAL 
               
               1.- OPCION 1
               2.- OPCION 2       
               3.- OPCION 3 
               4.- OPCION 4 
               5.- SALIR 
               
               ***SELECCIONE UNA OPCION:***")$res)
  if(opc1==1){
    opc1 <- dlgInput(message="OPCION 1:         
               1.- REGRESAR AL MENU
               2.- SALIR
               
               ***SELECCIONE UNA OPCION:***")$res  
    opc1<-as.character(opc1)
    if(opc1==1){menu()}
    
  }else if(opc1==2){
    
    opc1 <- dlgInput(message="OPCION 2:         
               1.- REGRESAR AL MENU
               2.- SALIR
               
               ***SELECCIONE UNA OPCION:***")$res
    opc1<-as.numeric(opc1)
    if(opc1==1){menu()}
    
  }else if(opc1==3){
    opc1 <- as.numeric(dlgInput(message="OPCION 3:
               1.- REGRESAR AL MENU
               2.- SALIR
               
               ***SELECCIONE UNA OPCION:***")$res)
    if(opc1==1){menu()}
    
  }else if(opc1==4){
    opc1 <- as.numeric(dlgInput(message="OPCION 4: 
               1.- REGRESAR AL MENU
               2.- SALIR
               ***SELECCIONE UNA OPCION:***")$res)
    if(opc1==1){menu()}
    
  }
}
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.
primo<- function(num){
  pri<-numeric()
  no_pri<-numeric()
  for (i in 1:num){
    if (sum(i/1:i==i%/%1:i)==2){
      no_pri<-c(no_pri,i)
    } else {
      pri<-c(pri,i)
    }
  }
  pri
  no_pri
}
primo(num<-as.numeric(dlgInput(message="HASTA QUE NUMERO PRIMO QUIERE?")$res))