UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE CIENCIAS ECONÓMICAS
CARRERA DE ESTADÍSTICA

Autores:

Grupo 5

Ejercicios Acerca de Ciclos Repetitivos

EJERCICIO N°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.

Ejecución del ejercicio: `

Forma 1: El usuario ingresa el número

#install.packages("svDialogs")
#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()

Forma 2: Ingresamos el número desde el script

is.prime <- function(num) {
  if (num == 2) {
    TRUE
    j<-print(" Es número primo")
  } else if (any(num %% 2:(num-1) == 0)) {
    FALSE
    j<-print(" No es número primo")
  } else { 
    TRUE
    j<-print(" Es número primo")
  }
}

is.prime(5)
## [1] " Es número primo"

EJERCICIO N°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.

Ejecución del ejercicio:

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 N°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.

Ejecución del ejercicio:

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 N°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.

Ejecución del ejercicio:

pa <- 70
pb <- 150
d <- pb-pa
while(d>0){
  pa <- pa+1
  pb <- pb-1
  d <- pb-pa
}
cat("el punto de encuentro es el km:",pa)
## el punto de encuentro es el km: 110

EJERCICIO N°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.

Ejecución del ejercicio:

pago1 <- 10
total <- 0
pagofinal <- function(num){
  for(num in 1:20){
    pago1 <- pago1*2
    total <- total+pago1
    print(paste("en el mes",num,"pagará $",pago1))
  }
  print(paste("el total al cumplir 20 meses el pago es de:",total))
}
pagofinal()
## [1] "en el mes 1 pagará $ 20"
## [1] "en el mes 2 pagará $ 40"
## [1] "en el mes 3 pagará $ 80"
## [1] "en el mes 4 pagará $ 160"
## [1] "en el mes 5 pagará $ 320"
## [1] "en el mes 6 pagará $ 640"
## [1] "en el mes 7 pagará $ 1280"
## [1] "en el mes 8 pagará $ 2560"
## [1] "en el mes 9 pagará $ 5120"
## [1] "en el mes 10 pagará $ 10240"
## [1] "en el mes 11 pagará $ 20480"
## [1] "en el mes 12 pagará $ 40960"
## [1] "en el mes 13 pagará $ 81920"
## [1] "en el mes 14 pagará $ 163840"
## [1] "en el mes 15 pagará $ 327680"
## [1] "en el mes 16 pagará $ 655360"
## [1] "en el mes 17 pagará $ 1310720"
## [1] "en el mes 18 pagará $ 2621440"
## [1] "en el mes 19 pagará $ 5242880"
## [1] "en el mes 20 pagará $ 10485760"
## [1] "el total al cumplir 20 meses el pago es de: 20971500"

EJERCICIO N°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.

Ejecución del ejercicio:

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("ingrese el valor de horas trabajadas: "))
    x2 <- as.numeric(readline("ingrese el valor de pago por hora: "))
    sueldo <- x1*x2
    contador <- contador+sueldo
    cat("el sueldo al recibir es:",sueldo)
  }
  cat("\n","por lo tanto","\n","la empresa paga un total de $",contador)
}
empresa()

EJERCICIO N°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.

Ejecución del ejercicio:

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

EJERCICIO N°8

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

Ejecución del ejercicio:

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 N°9

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

Ejecución del ejercicio:

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 N°10

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

Ejecución del ejercicio:

nprimos=function(n1){
  p1=numeric()
  nop=numeric()
  for (i in 1:n1) {
    if(sum(i/1:i==i%/%1:i)==2){
      nop=c(nop,i)
    } else{
      p1=c(p1,i)
    }
  }
  p1
  nop
}
nprimos(n1=as.numeric(readline("Que cantidad de números quiere mostrar:")))