Colaborador: Ing. Francisco Valverde P.hD en informática

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.

#x<-as.numeric(readline("Introduzca un numero:"))
x <- sample(1:10,1)
cont <- 0

for (i in 1:x){
  if (x%%i==0){
    cont <- cont+1 
  }
}
if (cont==2){
  paste(x," es un numero primo")
}else{
  paste(x, "no es un numero primo")
}
## [1] "3  es un numero 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.

meses<-c("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio",
         "Agosto","Septiembre","Octubre","Noviembre","Diciembre")
deposito<-sample(400:1000,12,replace = F)
Ahorro<-0
for (i in 1:12) {
  cat("Ahorro del mes de",meses[i],":",deposito[i],"\n")
  Ahorro<-sum(deposito)
}
## Ahorro del mes de Enero : 713 
## Ahorro del mes de Febrero : 431 
## Ahorro del mes de Marzo : 846 
## Ahorro del mes de Abril : 733 
## Ahorro del mes de Mayo : 623 
## Ahorro del mes de Junio : 826 
## Ahorro del mes de Julio : 802 
## Ahorro del mes de Agosto : 697 
## Ahorro del mes de Septiembre : 404 
## Ahorro del mes de Octubre : 763 
## Ahorro del mes de Noviembre : 970 
## Ahorro del mes de Diciembre : 528
cat("El Ahorro total de un año es de: ",Ahorro)
## El Ahorro total de un año es de:  8336

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.

dias<-c("Lunes","Martes","Miercoles","Jueves","Viernes","Sabado")
pago_por_hora<-0
sueldo<-0
total_horas<-0
for (i in 1:6) {
  #horas<-as.numeric(readline(paste("Horas trabajas del dia",dias[i],":")))
  horas <- sample(1:10,1)
  total_horas<-total_horas+horas
  pago_por_hora<-horas*2.21
  sueldo<-sueldo+pago_por_hora
}
cat("El sueldo total a recibir por",total_horas," horas trabajadas a la semana es de: ",sueldo)
## El sueldo total a recibir por 27  horas trabajadas a la semana es de:  59.67

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.

persona_A<-70
persona_B<-150
distancia<-persona_B-persona_A
while (distancia>0) {
  persona_A<-persona_A+1
  persona_B<-persona_B-1
  distancia<-persona_B-persona_A
}
paste("Las dos personas se encuentran el kilometro",persona_A)
## [1] "Las dos personas se encuentran el kilometro 110"

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.

cuota<-10
total<-0
for (i in 1:20) {
  cuota<-cuota*2
  total<-total+cuota
  print(paste("El pago del mes",i,"es de:",cuota))
}
## [1] "El pago del mes 1 es de: 20"
## [1] "El pago del mes 2 es de: 40"
## [1] "El pago del mes 3 es de: 80"
## [1] "El pago del mes 4 es de: 160"
## [1] "El pago del mes 5 es de: 320"
## [1] "El pago del mes 6 es de: 640"
## [1] "El pago del mes 7 es de: 1280"
## [1] "El pago del mes 8 es de: 2560"
## [1] "El pago del mes 9 es de: 5120"
## [1] "El pago del mes 10 es de: 10240"
## [1] "El pago del mes 11 es de: 20480"
## [1] "El pago del mes 12 es de: 40960"
## [1] "El pago del mes 13 es de: 81920"
## [1] "El pago del mes 14 es de: 163840"
## [1] "El pago del mes 15 es de: 327680"
## [1] "El pago del mes 16 es de: 655360"
## [1] "El pago del mes 17 es de: 1310720"
## [1] "El pago del mes 18 es de: 2621440"
## [1] "El pago del mes 19 es de: 5242880"
## [1] "El pago del mes 20 es de: 10485760"
paste("El pago total de 20 meses es de: $",total )
## [1] "El pago total de 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.

library(svDialogs)

#empleados<- as.numeric(dlgInput(message="CUANTOS TRABAJADORES TIENE?")$res)
empleados <- sample(1:10,1)
gasto_empresa<- 0
for(i in 1:empleados)
{
  #horas<-as.numeric(dlgInput(message="CUANTAS HORAS TRABAJO A LA SEMANA?")$res)
  horas <- sample(5:10,1)
  gasto_empresa<- gasto_empresa + horas*2.50
  sueldo<- horas*2.50
  print(paste("EL EMPLEADO", i, "GANA SEMANAL: $", sueldo))
}
## [1] "EL EMPLEADO 1 GANA SEMANAL: $ 20"
## [1] "EL EMPLEADO 2 GANA SEMANAL: $ 12.5"
## [1] "EL EMPLEADO 3 GANA SEMANAL: $ 20"
## [1] "EL EMPLEADO 4 GANA SEMANAL: $ 20"
## [1] "EL EMPLEADO 5 GANA SEMANAL: $ 17.5"
print(paste("LA EMPRESA PAGO POR LOS", empleados, "EMPLEADOS", gasto_empresa)) 
## [1] "LA EMPRESA PAGO POR LOS 5 EMPLEADOS 90"

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.

#trab<- as.numeric(dlgInput(message="CUANTOS EMPLEADOS TIENE?")$res)
trab <- sample(1:10,1)
pago<- 0
for(i in 1:trab)
{
  #dias<- as.numeric(dlgInput(message="CUANTOS DIAS TRABAJO EN LA SEMANA?")$res)
  dias <- sample(5:7,1)
  #horas<- as.numeric(dlgInput(message="CUANTOS HORAS TRABAJO EN ESOS DIAS?")$res)
  horas <- sample(5:10,1)
  sueldo<- (dias*horas)*2.50
  pago<- pago+ (dias*horas)+ sueldo
  print(paste("EL EMPLEADO", i, "GANA SEMANAL: $", sueldo))
}
## [1] "EL EMPLEADO 1 GANA SEMANAL: $ 75"
## [1] "EL EMPLEADO 2 GANA SEMANAL: $ 120"
## [1] "EL EMPLEADO 3 GANA SEMANAL: $ 157.5"
## [1] "EL EMPLEADO 4 GANA SEMANAL: $ 75"
## [1] "EL EMPLEADO 5 GANA SEMANAL: $ 140"
## [1] "EL EMPLEADO 6 GANA SEMANAL: $ 125"
## [1] "EL EMPLEADO 7 GANA SEMANAL: $ 122.5"
## [1] "EL EMPLEADO 8 GANA SEMANAL: $ 75"
## [1] "EL EMPLEADO 9 GANA SEMANAL: $ 140"
print(paste("LA EMPRESA PAGA SEMANALMENTE POR LOS", trab, "EMPLEADOS: $", pago))
## [1] "LA EMPRESA PAGA SEMANALMENTE POR LOS 9 EMPLEADOS: $ 1442"

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))
cronometro(6)
## [1] 6
## [1] 5
## [1] 4
## [1] 3
## [1] 2
## [1] 1
## [1] 0

Ejercicio 9

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

opc1<-cat(
                 "***********************************************
                                    MENU DE OPCIONES?
***********************************************
*                                             
*                       1. OPCION 1           
*                       2. OPCION 2           
*                       3. OPCION 3           
*                       4. SALIR              
*                                             
***********************************************

*SELECCIONE UNA OPCION:*")
## ***********************************************
##                                     MENU DE OPCIONES?
## ***********************************************
## *                                             
## *                       1. OPCION 1           
## *                       2. OPCION 2           
## *                       3. OPCION 3           
## *                       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.

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