UNIVERSIDAD CENTRAL DEL ECUADOR

FACULTAD DE CIENCIAS ECONÓMICAS

INGENIERÍA EN ESTADÍSTICA

Autores: Caranqui Vanessa, Cevallos Gabriela, Loachamin Erika, Rosero Lennyn

Fecha de Publicación: 2023-01-29

Docente: Ing. Francisco Valverde

Ejercicios acerca de Estructuras de Control en R

EJERCICIO N°1

Crea una aplicación que pida un número y calcule su factorial (El factorial de un número es el producto de todos los enteros entre 1 y el propio número y se representa por el número seguido de un signo de exclamación. Por ejemplo 5! = 1x2x3x4x5=120).

  1. Creación de la función.
  2. Se ocupa readline para solicitar el número a factorizar.
factorial <- function(n){
  factorial <- -1
if(n < 0){
    print("No es posible calcular el factorial de un numero negativo")
  }else if(n == 0){
    print("Su factorial es 0")
  }else{
    for (i in 1:n) {
      factorial<-factorial*i
    }
    print(paste("El factorial de ", n))
    print(paste("es: ", factorial))
  }
}

EJERCICIO N°2

Crea una aplicación que permita adivinar un número. La aplicación genera un número aleatorio del 1 al 100. A continuación va pidiendo números y va respondiendo si el número a adivinar es mayor o menor que el introducido,a demás de los intentos que te quedan (tienes 10 intentos para acertarlo). El programa termina cuando se acierta el número (además te dice en cuantos intentos lo has acertado), si se llega al limite de intentos te muestra el número que había generado.

x<-sample(1:100,1,F)
intentos<-0
repeat {
#y<- as.numeric(readline("Ingrese un numero: "))
y <- sample(1:100,1)
if(x>y){
cat("El numero ingresado es menor al numero aleatorio ")
intentos<-intentos+1
}else if(x<y){
cat("El numero ingresado es mayor al numero aleatorio ")
intentos<-intentos+1
}
if(intentos==10){
cat("\n LO SIENTO YA NO TE QUEDAN MAS INTENTOS :(")
cat("\n El numero aleatorio es: ",x)
cat("\n Intentos Totales: ",intentos)
}else if(x==y){
cat("FELICIDADES ADIVINASTE EL NUMERO ")
cat("\n Intentos Totales: ",intentos)
}
if(intentos==10 | x==y){
break
}
}
## El numero ingresado es mayor al numero aleatorio El numero ingresado es mayor al numero aleatorio El numero ingresado es menor al numero aleatorio El numero ingresado es menor al numero aleatorio El numero ingresado es mayor al numero aleatorio El numero ingresado es menor al numero aleatorio El numero ingresado es mayor al numero aleatorio El numero ingresado es mayor al numero aleatorio El numero ingresado es menor al numero aleatorio El numero ingresado es menor al numero aleatorio 
##  LO SIENTO YA NO TE QUEDAN MAS INTENTOS :(
##  El numero aleatorio es:  48
##  Intentos Totales:  10

EJERCICIO N°3

Algoritmo que pida números hasta que se introduzca un cero. Debe imprimir la suma y la media de todos los números introducidos.

  1. Crear variables, su uso será de contadores.
  2. Se usarán las condicionales repeat para asegurar que las operaciones que contiene sean iteradas al menos en una ocasión.
  3. Utilizar la condicional if para que la operación se ejecute únicamente cuando una condición se cumple y else cuando no se cumpla dicha condición.
count <- 0
contador <- 0
suma_media <- function(num2) {
 repeat {
 num2 <- as.numeric(readline("Ingrese un nzmero: "))
 contador <- contador + 1
 count <- count + num2
 sumaa1 <- sum(count)
 media1 <- (sumaa1/contador)
 if(num2 == 0) {
 break }
 else {
 cat("La suma es de los nzmeros ingresados es:", sumaa1 ,"y la media es:", media1)
 }
 }
}

EJERCICIO N°4

Realizar un algoritmo que pida números (se pedirá por teclado la cantidad de números a introducir). El programa debe informar de cuantos números introducidos son mayores que 0, menores que 0 e iguales a 0.

  1. Crear variables, la función que cumplen es de contadores.
  2. Usar la condicional for ya que el ejercicio pide la cantidad de numero ingresado y esta permite repetir una instrucción compuesta de un número especificado de veces.
  3. Usar la función cat para que lea los mensajes.
numero_mayor <- 0
numero_menor <- 0
numero_igual <- 0
numeros <- function(num3, num4) {
 num3 <- as.numeric(readline("Ingrese la cantidad de nzmeros que desee ingresar:
"))
 for (num3 in 1:num3) {
 num4 <- as.numeric(readline("Ingrese un numero: "))
 if(num4 > 0) {
 numero_mayor <- numero_mayor + 1
 cat("La cantidad de numeros ingresados mayores a cero es:", numero_mayor)
 }
 else
 {
 if (num4 < 0) {numero_menor <- numero_menor + 1
 cat("La cantidad de numeros ingresados menores a cero es:", numero_menor)
 }
 else {
 numero_igual <- numero_igual + 1
 cat("La cantidad de numeros ingresados iguales a cero es:", numero_igual)
 }
 }
 }
}

EJERCICIO N°5

Algoritmo que pida caracteres e imprima ‘VOCAL’ si son vocales y ‘NO VOCAL’ en caso contrario, el programa termina cuando se introduce un espacio.

  1. Para ejecutar dicho algoritmo, es necesario generar un bucle con condiciones, en donde se le pedirá al usuario que ingrese una letra cualquiera.
  2. Se utilizarán las funciones repeat, así también como if y else, estas con el fin de repetir el ciclo de manera condicionada.
vocales <- function(caracter1) {
 repeat {
 caracter1 <- as.character(readline("Ingrese una letra: "))
 if(caracter1 == "a" | caracter1 == "e" | caracter1 == "i" | caracter1 == "o" |
caracter1 == "u" & caracter1 != " "){
 cat(caracter1, "es una vocal")
 } else {
 if(caracter1 == 0) {
 break }
 else {
 cat(caracter1, "no es una vocal")
 }
 }
 }
}

EJERCICIO N°6

Escribir un programa que imprima todos los números pares entre dos números que se le pidan al usuario.

  1. Antes de iniciar el proceso, se instalará el paquete svDialogs.
  2. Se asignarán dos variables en las cuales se utilizará la función as.numeric, mediante la misma se le pedirá al usuario que ingrese dos números.
  3. Se utilizará el comando for para implicar la condición de si los números en dicho rango son pares o impares.
library(svDialogs)
## Warning: package 'svDialogs' was built under R version 4.2.2
num_pares<-function(num1){
num1<-as.numeric(dlgInput(message="Ingrese el primer número:")$res)
num2<-as.numeric(dlgInput(message="Ingrese el segundo número:")$res)
for(i in num1:num2)
{if(i%% 2 ==0){
print(paste(i,"ES PAR"))
}else{
print(paste(i,"ES IMPAR"))
}
}
}

EJERCICIO N°7

Realizar una algoritmo que muestre la tabla de multiplicar de un número introducido por teclado.

  1. En este ejercicio se utilizará el comando for para poder iniciar el conteo y así mismo, aplicar un límite para las multiplicaciones.
  2. Se asignarán diversas variables y en cada una de ellas se hará uso de la función as.numeric.
f1<-function(tabla, lim){
 for(i in 1:lim){
 mult<- tabla*i
 print(paste(i, "x", tabla, "=", mult))
 }
}

EJERCICIO N°8

Escribe un programa que pida el limite inferior y superior de un intervalo. Si el límite inferior es mayor que el superior lo tiene que volver a pedir. A continuación se van introduciendo números hasta que introduzcamos el 0. Cuando termine el programa dará las siguientes informaciones:

  1. Para crear este código haremos una función que se repita con condición y bucle, la función pedirá que se ingrese los valores de los límites, luego se separa los datos ingresados de los límites para poder realizar cálculos con condiciones.

EJERCICIO N°9

Escribe un programa que dados dos números, uno real (base) y un entero positivo (exponente), saque por pantalla el resultado de la potencia. No se puede utilizar el operador de potencia.

  1. Para la creación del código se hará uso de la palabra reservada “function” que crea una función y el uso de bucles en este caso el uso de “for in” y por último se usará la palabra reservada “print” el cual pega los valores deseados.
potencia <- function(base, exponente) {
resultado <- 1
for (i in 1:exponente) {
resultado <- resultado * base
}
return(resultado)
}
base <- 2
exponente <- 5
resultado <- potencia(base, exponente)
print(paste(base, "^", exponente, "=", resultado))
## [1] "2 ^ 5 = 32"

EJERCICIO N°10

Algoritmo que muestre la tabla de multiplicar de los números 1,2,3,4 y 5.

  1. Para la creación de este algoritmo se utilizará dos bucles anidados. El primero itera sobre los números 1 a 5 y el segundo bucle itera sobre los números 1 a 10. Para cada combinación de números se calcula el resultado de la multiplicación y se imprime.
for (i in 1:5) {
cat("Tabla del", i, "\n")
for (j in 1:10) {
result <- i * j
cat(i, "x", j, "=", result, "\n")
}
cat("\n")
}
## Tabla del 1 
## 1 x 1 = 1 
## 1 x 2 = 2 
## 1 x 3 = 3 
## 1 x 4 = 4 
## 1 x 5 = 5 
## 1 x 6 = 6 
## 1 x 7 = 7 
## 1 x 8 = 8 
## 1 x 9 = 9 
## 1 x 10 = 10 
## 
## Tabla del 2 
## 2 x 1 = 2 
## 2 x 2 = 4 
## 2 x 3 = 6 
## 2 x 4 = 8 
## 2 x 5 = 10 
## 2 x 6 = 12 
## 2 x 7 = 14 
## 2 x 8 = 16 
## 2 x 9 = 18 
## 2 x 10 = 20 
## 
## Tabla del 3 
## 3 x 1 = 3 
## 3 x 2 = 6 
## 3 x 3 = 9 
## 3 x 4 = 12 
## 3 x 5 = 15 
## 3 x 6 = 18 
## 3 x 7 = 21 
## 3 x 8 = 24 
## 3 x 9 = 27 
## 3 x 10 = 30 
## 
## Tabla del 4 
## 4 x 1 = 4 
## 4 x 2 = 8 
## 4 x 3 = 12 
## 4 x 4 = 16 
## 4 x 5 = 20 
## 4 x 6 = 24 
## 4 x 7 = 28 
## 4 x 8 = 32 
## 4 x 9 = 36 
## 4 x 10 = 40 
## 
## Tabla del 5 
## 5 x 1 = 5 
## 5 x 2 = 10 
## 5 x 3 = 15 
## 5 x 4 = 20 
## 5 x 5 = 25 
## 5 x 6 = 30 
## 5 x 7 = 35 
## 5 x 8 = 40 
## 5 x 9 = 45 
## 5 x 10 = 50