Ejercicios acerca de Estructuras de Control en R

En el presente informe podrá encontrar ejercicios utilizando estructuras de control en R.

Ejercicio 1

Crea una aplicación que pida un número y calcule su factorial

Paso 1: Daremos uso de la función if donde condicionamos los valores que se ingrese y la función for para que se realice el factorial del valor.

factorial <- 1
numero <- as.integer(readline("Ingrese un numero: "))

if(numero<0) {
  print("No existe el factorial negativo") 
 }else if(numero==0) {
  print("El factorial es 0")
}else {
 for(i in 1:numero) {
  factorial=factorial*i
}
print(paste("El factorial es: ",factorial))
}
numero

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

Paso 1: Daremos uso de la libreria svDialogs y la función While para controlar el límite de intentos y la función if para que muestre el mensaje en caso de acertar o si estamos cerca del número.

library(svDialogs)
aleatorio<-sample(1:100,1)
contador<-1
while (contador<11) 
{
  num<- dlgInput(message="INGRESE UN NUMERO: ")$res
 if (num==aleatorio)
 {
   resul<-paste("ACERTASTE EN EL INTENTO: ", i)
 winDialog(message=resul)
    contador<-12
  } else
  {
    if (num>aleatorio)
    {
      winDialog(message="EL NUMERO ES MUY ALTO")
    } else
    {
      if (num<aleatorio)
      {
        winDialog(message="EL NUMERO ES MUY BAJO")
      } 
    }
  }
  if (contador == 10)
  {
    x<-paste("SE TERMINARON LOS INTENTOS, EL NUMERO ERA:",aleatorio)
    winDialog(message=x)
  }
  contador<-contador+1
}

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

Paso 1: Definimos las variables que servirán de contadores para realizar la suma y la media de todos los valores ingresados hasta que aparezca un cero.

suma<- 0
contador<- 0
num<- 1
while(num!= 0)
  {
  num<- as.numeric(dlgInput(message= "INGRESE UN NUMERO")$res)
  suma<- suma + num
  contador<-contador+1
  media<-suma/contador
  }
print(paste("LA SUMA ES:", suma));print(paste("LA MEDIA ES:", media))

Ejercicio 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).

Paso 1: Creamos contadores

mayor_cero<-0
menores_cero<-0
igual_cero<-0
p<-0

Paso 2:Asignamos una variable s con la función readline con la cual se podrá leer los números que ingrese el usuario

s<- as.numeric(readline("ingrese la cantidad de números: "))
## ingrese la cantidad de números:

Paso 3:Utilizamos el bucle for para realizar lo requerido en el enunciado.

for (i in 1:s) {
p[i]<- as.numeric(readline("Ingrese el número: "))
if (p[i]>0){
mayor_cero<- mayor_cero+1
}
if (p[i]<0){
menores_cero<- menores_cero+1
}
if (p[i]==0){
igual_cero<- igual_cero+1
}
}
mayor_cero
menores_cero
igual_cero

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

Paso 1: Inicializamos una variable con un espacio para que se detenga el bucle cuando el usuario así lo decida.

letra<- " "

Paso 2:Utilizamos el condicional while y realizamos lo requerido en el enunciado

while(letra!=  " "){
  letra<- as.character(readline("INGRESE UN CARACTER:"))
  for(i in letra) 
  {
    if(i== "a" | i== "e" | i== "i" | i== "o" | i== "u")
    {
      print(paste(i,"ES VOCAL"))
    }else
{
     print(paste(i,"NO ES VOCAL")) 
    }
  }
}

Ejercicio 6

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

Paso 1:Asignamos una variable pares y utilizamos la función, dentro de ella irán los valores que el usuario ingrese.

Paso 2:Utilizamos el condicional for y realizamos lo que nos menciona en el enunciado.

pares<-function(x,y) {
    for(pares in x:y) {
    if(pares%%2==0)
      print(pares)
  }
}
pares(1,15)
## [1] 2
## [1] 4
## [1] 6
## [1] 8
## [1] 10
## [1] 12
## [1] 14

Ejercicio 7

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

Paso 1:Asignamos una variable tabla con el comando readline para que nos lea la tabla que se desee calcular.

tabla<-as.numeric(readline("Ingrese el número de la tabla de multiplicar que desee: "))
## Ingrese el número de la tabla de multiplicar que desee:

Paso 2:Utilizamos el condicional for y realizamos lo que nos indica en el enunciado.

for (i in 1:12){
  cat(tabla,"x",i,"=",tabla*i,"\n")
}
## NA x 1 = NA 
## NA x 2 = NA 
## NA x 3 = NA 
## NA x 4 = NA 
## NA x 5 = NA 
## NA x 6 = NA 
## NA x 7 = NA 
## NA x 8 = NA 
## NA x 9 = NA 
## NA x 10 = NA 
## NA x 11 = NA 
## NA x 12 = NA

Ejercicio 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:

#La suma de los números que están dentro del intervalo (intervalo abierto). #Cuantos números están fuera del intervalo. #He informa si hemos introducido algún número igual a los límites del intervalo.**

Paso 1:Asignamos valores a diferentes contadores que nos ayuden con el programa y utilizamos la función readline para asignar un valor al límite superior e inferior un valor.

inf<-as.numeric(readline("Ingrese el limite inferior del intervalo "))
## Ingrese el limite inferior del intervalo
sup<-as.numeric(readline("Ingrese el limite inferior del intervalo "))
## Ingrese el limite inferior del intervalo
num<-1
suma<-0
contador<-0

Paso 2:Utilizamos un bucle while con los argumentos que necesitamos.

while (num=0) {
  num<-as.numeric(readline("Ingrese un número "))
  suma<-suma+1
  contador<-contador+1
}

print(paste("La suma de los números dentro del intervalo es ", suma))
print(paste(contador, "Números estan fuera del intervalo"))

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

Paso 1:Asignamos un nombre a la función que vamos a realizar y utilizamos la función function() : Paso 2:Utilizaremos un condicional while() Paso 3:Ponemos lo que queremos que realice con la variable

potencia<-function(a,b) {
  contador<-1
  elevado<-1
  while(contador<=b) {
    elevado<-elevado*a
    contador<-contador+1
    print(elevado)
  }
}

Ejercicio 10

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

Paso 1:Realizamos un bucle doble de for() que recorra los límites que queremos y multiplique para poder realizar las tablas de multiplicar

for (i in 1:5){
  for (j in 1:10){
    cat(i," x ",j," = ",i*j,".\n")
  }
}
## 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 .
## 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 .
## 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 .
## 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 .
## 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 .