“Grupo N°3” ” Integrantes: Ayala Tania” ” Callatasig Katherine” ” Iñiguez Yessica” ” Vera Melany”

## Ejercicio 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).
# Nota: Debemos instalar el paquete svDialogs y activar la libreria
library(svDialogs)
# Paso 1. Realizamos una función para calcular el factorial de un número 
facto <- function(n){
  fact = 1
  for (i in 1:n){
    fact <- fact*i
  }
  return(print(paste("El factorial del valor", n,"!", "es =", fact)))
}
# Paso 2. LLamamos a la funcion y pedimos que ingrese el numero para calcular su factorial
facto(n<-dlgInput(message="Ingrese por favor un numero para calcular el factorial: ")$res)
## 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 (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.

# Paso 1. En una variable sacamos un aleatorio de 1 hasta 100 y ponemos un contador.
aleatorio<-sample(1:100,1)
contador<-1
# Paso 2. Utilizando la función while para realizar el ejercicio con las condiciones requeridas.
while (contador<11) 
{
  num<- dlgInput(message="INGRESE UN NUMERO:")$res
  if (num==aleatorio)
  {
    resul<-paste(" ACERTASTE EN EL INTENTO: ",contador, " EL NUMERO ERA: ", aleatorio)
    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.

#Asignación de variables
#Asignación de una variable para la suma de todos los números
a<- 0
#Asignación de una variable como contador
num<- 1
#Se usa la función while (mientras) que es un bucle diseñado para ejecutar 
#el código hasta que se cumpla una condición
while (num>0){
  a[num]<- as.numeric(readline("Ingrese un nÚmero: "))
  if ( a[num] == 0){
    print(cat("La suma de los números es ", sum(a),"                               "))
    print(cat("La media de los números es", sum(a)/(num-1),"                      "))
    break
  }
  num<-num+1
}
# 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.


#Asignación de diferentes variables que funcionen como contadores
p<-0
#Contador para valores mayores que 0
c1<-0
#Contador para valores menores que 0
c2<-0
#Contador para valores iguales a 0
c3<-0
#Asignación de la función as.numeric para solicitar el ingreso de datos al usuario.
s<- as.numeric(readline("ingrese la cantidad de numeros: "))

#Se usa la función for que es una iteración repetitiva para ejecutar el código.
for (i in 1:s) {
  p[i]<- as.numeric(readline("ingrese un numero: "))
  if (p[i]>0){
    c1<- c1+1
  }
  if (p[i]<0){
    c2<- c2+1
  }
  if (p[i]==0){
    c3<- c3+1
  }
}

#Aplicación de la función cat ()
cat("\n Hay",c1,"números mayores que 0\n",
    "Hay",c2,"números menores que 0\n",
    "Hay",c3,"números iguales a 0\n")
# 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.

#Comenzaremos por asignar un valor de ” ” (espacio)
#para que termine cuando se ingrese un espacio:
caracter<- " "
#Se utiliza un bucle de while 
#colocando un bucle for 
#y declara todas las vocales para determinar si es o no una vocal.
while(caracter!=  "")
{
  caracter<- readline("Ingrese un caracter:")$res
  for(i in caracter) 
  {
    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.

pares<-function(x,y) {
  for(pares in x:y) {
    if(pares%%2==0)
      print(pares)
  }
}
#Se contarán todos los pares del número ingresado del 1 al 10.

pares(1,10)
## [1] 2
## [1] 4
## [1] 6
## [1] 8
## [1] 10
# Ejercicio 7
# Realizar una algoritmo que muestre la tabla de multiplicar de un número introducido por teclado.

#Asignación de la función as.numeric para solicitar el numero.
y<- as.numeric(readline("ingrese un numero para obtener su tabla de multiplicar: "))
#Proceso para resolver el ejercicio con el bucle for y el comando if
cat("Tabla de multiplicar del ",y,"\n")
for (x in c(1:12)) {
  if(x<=12){
    z<-x*y
    print(paste0(x,"*",y," = ",z))}
}
# 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.
#Procedimiento
#Instalar el paquete "svDialogs"
install.packages("svDialogs")
library(svDialogs)
#Determinar el limite superior y el inferior
num <- 1
suma <- 0
contador <- 0
lim_inferior <- as.numeric(dlgInput(message="Inserte el lC-mite inferior")$res);
lim_superior <- as.numeric(dlgInput(message="Inserte el lC-mite superior")$res)

while(num != 0)
{
  if (lim_inferior > lim_superior) {
    lim_superior <- as.numeric(dlgInput(message="Inserte el lC-mite superior")$res)
  } else {
    num<-as.numeric(dlgInput(message="Inserte un número")$res)
    suma<- suma + num
    contador<- contador +1
  }
}
num <- sample(0:11,1)
if (num>lim_inferior & num<lim_superior){
  suma <- suma+num
}
if (num<lim_inferior | num>lim_superior){
  cont=cont+1
}
if (num==lim_inferior | num==lim_superior){
  cat(num,"es igual a uno de los limites \n")
}
print(paste("La suma de las cantidades del intevalo es:", suma));
print(paste("Se ingresaron:", contador, "números 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.

f2 <- function(base, exponente){
  potencia <- 1
  for (i in 1:exponente)
  {
    potencia<- potencia*base
  }
  return(print(paste(base, "elevado a:", exponente, "es =", potencia)))
}
f2(base<-as.numeric(dlgInput(message="Ingrese un número para la base:")$res),
   exponente<-as.numeric(dlgInput(message="Ingrese un número para el exponente:")$res))
# Ejercicio 10 
# Algoritmo que muestre la tabla de multiplicar de los números 1,2,3,4 y 5.
for (i in 1:5) {
  cat("TABLA DEL",i,"\n")
  for (j in 1:12) {
    cat(i,"x",j,"=",i*j,"\n")
  }
}