UNIVERSIDAD CENTRAL DEL ECUADOR

Facultad de Ciencias Económicas

Carrera de Estadística

Autores: Fernanda Chipantaxi, Ayleen Rubio, Marlon Llugsha, Cristhian Diaz

Fecha: 03-07-2022

Colaborador: Ing. Francisco Valverde, PHD en informática

FUNCIONES 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.
primo <- function(n) {
  if (n == 2) {
    TRUE
    a<-print(" Es primo")
  } else if (any(n %% 2:(n-1) == 0)) {
    FALSE
    a<-print(" No es primo")
  } 
}
primo(4)
## [1] " 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.
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))
}

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))
}

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))
}

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.
empresa2<-function(num){
  trab<- as.numeric(dlgInput(message="CUANTOS EMPLEADOS TIENE?")$res)
  pago<- 0
  for(num in 1:trab){
    dias<- as.numeric(dlgInput(message="CUANTOS DIAS TRABAJO EN LA SEMANA?")$res)
    horas<- as.numeric(dlgInput(message="CUANTOS HORAS TRABAJO EN ESOS DIAS?")$res)
    sueldo<- (dias*horas)*2.50
    pago<- pago+ (dias*horas)+ sueldo
    print(paste("EL EMPLEADO", num, "GANA SEMANAL: $", sueldo))
  }
  print(paste("LA EMPRESA PAGA SEMANALMENTE POR LOS", trab, "EMPLEADOS: $", pago))
}

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)
  }
}

Ejercicio 9 —-

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

while(o!="Salir"){
  o <- readline(prompt="Elija entre estas opciones:\n-o1\n-o2\n-o3\n-Salir: ")
  if (o=="o1"){
    print("Escogió opción 1")
  }else{
    if (o=="o2"){
      print("Escogió opción 2")
    }else{
      if (o=="o3"){
        print("Escogió opción 3")
      }else{
        if (o=="Salir"){
          print("Salió del menú")
          break
        }
      }
    }
  }
}

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
}