“Grupo N°3” ” Integrantes: Ayala Tania” ” Callatasig Katherine” ” Iñiguez Yessica” ” Vera Melany”

#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.

#Se instala el paquete svDialogs
#install.packages("svDialogs")
library(svDialogs)
#Se pide ingresar un número.
x <- as.integer(dlgInput(message="INGRESE UN NUMERO ")$res)
cont <- 0
#Identificar si es un número par o impar.
for (i in 1:x){
  if (x%%i==0){
    cont <- cont+1 
  }
}
if (cont==2){
  paste(x," Es un número primo")
}else{
  paste(x, "Es un número no 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.

#se quiere saber cuánto lleva ahorrado cada mes.
#Se agrega las variables total, ahorro y mes.
total <- 0
ahorro <- 0
mes <- c("ENERO","FEBRERO","MARZO","ABRIL","MAYO","JUNIO","JULIO",
        "AGOSTO","SEPTIEMBRE","OCTUBRE", "NOVIEMBRE", "DICIEMBRE")
#Ingresar las cantidades a ahorrar de este año.
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.

#Procedimiento
#Se declara una función para determinar las horas de trabajo.
#El comando function() permite definir una función dentro de otra función, es decir, 
#es utilizada como argumento para otras funciones.
#La función data.frame()crea marcos de datos, colecciones de variables 
#que muestra de todos los valores relacionados con las emisiones.
horas<-function(h){
  DIAS<-c("lunes","martes","miercoles","jueves","viernes","sabado")
  print("Horas durante la semana")
  HORAS<-round(runif(6,min = 8,max = 9),0)
  print("Sueldos por hora")
  SUELDO<-round(runif(6,min = 20,max = 25),2)
  REGISTRO<-data.frame(DIAS,HORAS,SUELDO)
  print(REGISTRO)
  #La función cat() convierte sus argumentos en cadenas de caracteres, los concatena, 
  #separándolos por la cadena sep= dada y finalmente los imprime.
  cat("TOTAL DE SUELDO POR EL TRABAJO EN LA SEMANA : $ ",sum(SUELDO))}

total<-horas(h)
#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.

#Se utiliza la función while(), es una función diseñada para ejecutar algún código hasta que se cumpla una condición.
#Mientras la condición lógica sea TRUE, el código no dejará de ejecutarse.
#Otra función que se utiliza es paste(), nos permite concatenar cadenas de texto con R: 
#Interesantes funciones que nos pueden permitir automatizar códigos recursivos o códigos guardados como objetos en R.
#Se asigna variables para cada coche y el N° de km.
coche1<-70
coche2<- 150
distancia<- coche2 - coche1
while (distancia>0){
  coche1<- coche1 + 1
  coche2<- coche2 -1
  distancia<- coche2 - coche1
}
paste("El punto de encuentro de los coches es en el kilómetro:", coche1)
#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.

#Procedimiento
#Se declara las variables a utilizar
pago <-  10
total <- 0
#Se declara una función para determinar el total a pagar
#Se utiliza el ciclo for, es una iteración repetitiva (en bucle) de cualquier código
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))
}
#Se hace el llamado a la funcion para que imprima el resultado en la consola.
total_a_pagar()
#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.

#Procedimiento
#Se declara las variables a utilizar
empleados <-0
gasto_empresa<- 0
#Se utiliza la funcion dlgInput que es un cuadro de entrada simple
empleados<- as.numeric(dlgInput(message="CUANTOS TRABAJADORES TIENE?")$res)
#Se utiliza el ciclo for, es una iteración repetitiva (en bucle) de cualquier código
for(i 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", i, "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.

## Activamos la libreria "svDialogs" para realizar los ejercicios
library(svDialogs)
## Paso 1. Realizamos una función que nos permitirá realizar ingresar los valores pedidos y calcular el pago de la empresa que debe realizar.
empresa2<-function(num){
  trab<- as.numeric(dlgInput(message="CUANTOS EMPLEADOS TIENE?")$res);trab<-5
  pago<- 0
  for(num in 1:trab){
    dias<- as.numeric(dlgInput(message="CUANTOS DIAS TRABAJO EN LA SEMANA?")$res);dias<-3
    horas<- as.numeric(dlgInput(message="CUANTOS HORAS TRABAJO EN ESOS DIAS?")$res);horas<-6
    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))
}
## Paso 2. Llamamos a la funcion para ingresar los datos y mostrar los resultados.
empresa2()
#EJERCICIO 8 ####
## Hacer un programa que muestre un cronometro, indicando las horas, minutos y segundos.
# paso 1. Vamos a realizar una funcion en donde nos permita hacer el cronómetro.
cronometro<- function(seg){
  print(seg)
  while(seg!=0){
    Sys.sleep(1)
    seg<- seg-1
    print(seg)
  }
}
# Paso 2. Llamamos a la función e ingresamos un valor para que inície el cronómetro la cuenta regresiva.
cronometro(seg<-as.numeric(dlgInput(message="Ingrese un número:")$res))
#EJERCICIO 9 ####
## Realizar un ejemplo de menú, donde podemos escoger las distintas opciones hasta
## que seleccionamos la opción de “Salir”.

# Paso 1. Realizamos una función que nos permita realizar la demostración del Menú.
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()}
    
  }
}
# Paso 2. Llamamos a la funcion y escogemos las distintas opciones que se tienen en el menú.
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.

# Paso 1. Vamos a crear una función en la variable "N_primos" para indicar los números primos a mostrar.
N_primos<- 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
}
# Paso 2. Llamamos a la función que se creo e ingresamos el valor de números primos que se desea mostrar.
N_primos(num<-as.numeric(dlgInput(message="Hasta que número primo desea que se muestre?")$res))