UNIVERSIDAD CENTRAL DEL ECUADOR

FACULTAD DE CIENCIAS ECONÓMICAS

INGENIERÍA EN ESTADÍSTICA

GRUPO 1

Autores: Alexander Jiménez, Ismael Montesdeoca, Saúl Quishpe

Docente: Ing. Francisco Valverde PhD

TALLER-APE 12: Ejercicios Acerca de Ciclos Repetitivos

NOTA:

Primero se tiene que instalar un paquete llamado “svDialogs”. Este paquete nos sirve para proceder hacer la aplicación solicitada en los siguientes ejercicios.

SvDialogs: Sirve para crear una ventana e ingresar opciones o valores.

install.packages("svDialogs")
library(svDialogs)

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.

install.packages("svDialogs")
library(svDialogs)
  
p <- function(){
    a<-as.integer(dlgInput(message="POR FAVOR, INGRESE UN NÚMERO ")$res)
    if(sum(a/1:a==a%/%1:a)==2){
        (m <- paste0("EL NUMERO: ", a , " ES PRIMO "))
    }else{(m <- paste0("EL NÚMERO: ", a, " NO ES PRIMO"))}
}
p()

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.

ah<-function(x)
{
    print("DEPOSITO ANUAL")
    MESES<-c("ENERO","FEBRERO","MARZO","ABRIL","MAYO","JUNIO","JULIO","AGOSTO",
             "SEPTIEMBRE","OCTUBRE","NOVIEMBRE","DICIEMBRE")
    for(i in MESES)
        DEPOSITOS_M<- as.numeric(dlgInput(message="POR FAVOR, INGRESE LA CANTIDAD A AHORRAR:")$res)
    DATOS<-data.frame(MESES,DEPOSITOS_M)
    print(DATOS)
    cat("TOTAL DEL DEPOSITO ANUAL : ",sum(DEPOSITOS_M))
}
depositosA<-ah(x)

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 estas, así como el sueldo que recibirá por las horas trabajadas.

horas<- 0
h<- 0
th<- 0
d<- c("LUNES", "MARTES", "MIERCOLES", "JUEVES", "VIERNES", "SABADO")
for(i in d)
{
    h<- as.numeric(readline("¿CUANTAS HORAS TRABAJO?"))
    th<- th+ horas
    s<- th*2.50
    print(paste("EL", i, "TRABAJO", h, "HORAS"))
}
## ¿CUANTAS HORAS TRABAJO?
## [1] "EL LUNES TRABAJO NA HORAS"
## ¿CUANTAS HORAS TRABAJO?
## [1] "EL MARTES TRABAJO NA HORAS"
## ¿CUANTAS HORAS TRABAJO?
## [1] "EL MIERCOLES TRABAJO NA HORAS"
## ¿CUANTAS HORAS TRABAJO?
## [1] "EL JUEVES TRABAJO NA HORAS"
## ¿CUANTAS HORAS TRABAJO?
## [1] "EL VIERNES TRABAJO NA HORAS"
## ¿CUANTAS HORAS TRABAJO?
## [1] "EL SABADO TRABAJO NA HORAS"
print(paste("EL SUELDO QUE RECIBIRA ES DE: $", s))
## [1] "EL SUELDO QUE RECIBIRA ES DE: $ 0"

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.

c<- 70
v<- 150
km<- 0
while(c == v)
{
    p1<- c+1
    p2<- v-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.

p<-  10
t<- 0
for(i in 1:20)
{
    p<- p*2
    t<- t + p
    print(paste("EN EL MES", i, "PAGARAS: $", p))
}
print(paste("EL TOTAL QUE PAGASTE EN 20 MESES ES DE: $", t))

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.

install.packages("svDialogs")
library(svDialogs)

Instalamos el paquete “svDialogs” que nos sirve para crear ventanas emergentes con un mensaje solicitando información que luego se puede utilizar para realizar la operación.

e<-function(n){
    pl<- as.numeric(dlgInput(message="CUANTOS TRABAJADORES TIENE?")$res)
    gasto_empresa<- 0
    for(n in 1:pl){
        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", n, "GANA SEMANAL: $", sueldo))
    }
    print(paste("LA EMPRESA PAGO POR LOS", pl, "EMPLEADOS", gasto_empresa))
}
e()

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.

install.packages("svDialogs")
library(svDialogs)

Instalamos el paquete “svDialogs” que nos sirve para crear ventanas emergentes con un mensaje solicitando información que luego se puede utilizar para realizar la operación.

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

Ejercicio 8:

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

c<- function(seg)
{
    print(seg)
    while(seg!=0)
    {
        Sys.sleep(1)
        seg<- seg-1
        print(seg)
    }
}
c(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”.

opc<-cat(
    "   *SELECCIONE UNA OPCION:*
  ---------------------------------
         MENU DE OPCIONES
-----------------------------------
*                                             
*  1.---------------------OP1           
*  2.---------------------OP2           
*  3.---------------------OP3           
*  4.---------------------SALIR              
*                                             
-----------------------------------

*SELECCIONE UNA OPCION:*")

Ejercicio 10:

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

np<- function(n)
{
    p<-numeric()
    no_primo<-numeric()
    for (i in 1:n)
    {
        if (sum(i/1:i==i%/%1:i)==2)
        {
            no_primo<-c(no_primo,i)
        } else
        {
            p<-c(p,i)
        }
    }
    p
    no_primo
}
np(10)
## [1] 2 3 5 7