Semana 15
Practica en Clase y Tarea (Case 4 y 5)
#include <iostream>
#include <math.h>
#include <cstdlib>
using namespace std;
int op, n1, i, j,n,c,Aux;
int A[100];
float SUMAR;
int arr[] = {12, 11, 13, 5, 6, 7};
int n2 = sizeof(arr) / sizeof(arr[0]);
int numeros[] = {1, 2, 3, 4, 5};
int inf, sup, mitad, dato = 3;
char band = 'F';
// Declaraciones de metodos
void Busqueda(),Burbuja(),heapify(int arr[], int size, int i),heapSort(int arr[], int size);
void printArray(int arr[], int size);
void bbinaria(),Oseleccion();
int main()
{
do
{
do
{
cout << "\n******************Menu de Opciones*******************\n";
cout << "\nIngrese la opcion a realizar: \n";
cout << "\n[1] = Busqueda Secuencial \n";
cout << "\n[2] = Ordenamiento Burbuja \n";
cout << "\n[3] = Ordenamiento por Monticulos\n";
cout << "\n[4] = Busqueda Binaria\n";
cout << "\n[5] = Ordenamiento por Seleccion";
cout << "\nIngrese su opcion: ";
cin >> op;
cout << "\n*************************************************\n";
if (op != 1 && op != 2 && op != 3 && op != 4 && op != 5)
{
cout << "Opcion Incorrecta";
}
} while (op != 1 && op != 2 && op != 3 && op != 4 && op != 5);
switch (op)
{
case 1:
cout << "------------------------------";
cout << "\nBusqueda Secuencial\n";
cout << "------------------------------\n";
Busqueda();
break;
case 2:
cout << "------------------------------";
cout << "\nOrdenamiento de Burbuja\n";
cout << "------------------------------\n";
Burbuja();
break;
case 3:
cout << "------------------------------";
cout << "\nOrdenamiento por Monticulos\n";
cout << "------------------------------\n";
cout << "Arreglo original:\n";
printArray(arr, n2);
heapSort(arr, n2);
cout << "Arreglo ordenado usando Heap Sort:\n";
printArray(arr, n2);
break;
case 4:
cout << "------------------------------";
cout << "\nBusqueda Binaria\n";//Ejercicio de Tarea
cout << "------------------------------\n";
bbinaria();
break;
​
​
case 5:
cout << "------------------------------";
cout << "\nOrdenamiento por Seleccion\n";
// Ejercicio de Tarea
cout << "------------------------------\n";
Oseleccion();
break;
default:
break;
}
do
{
cout << "\nDesea realizar otra operacion?\n";
cout << "[1 = Si] [2 = No]\n";
cin >> n1;
if (n1 != 1 && n1 != 2)
{
cout << "\nOpcion Incorrecta";
}
} while (n1 != 1 && n1 != 2);
} while (n1 == 1);
cout << "\nPrograma Finalizado\n";
}
void Busqueda()
{
for (i = 1; i <= 20; i++)
{
A[i] = rand() % 20;
cout << "A[" << i << "]=" << A[i];
}
cout << "Ingrese el elemento a buscar ";
cin >> n;
cout << "cuenta las veces que se encuentra el elemento \n";
c = 0;
for (i = 1; i <= 20; i++)
{
if (A[i] == n)
{
cout << "A[" << i << "]=" << A[i] << endl;
c = c + 1;
}
}
cout << "\n se repitio: " << c << " veces " << n << endl;
}
void Burbuja()
{
for (i = 1; i <= 20; i++)
{
A[i] = rand() % 20;
cout << "A[" << i << "]=" << A[i];
}
cout << "'n Ordenando el vector A[20] " << endl;
for (i = 1; i <= 20; i++)
{
for (j = 1; j <= 19; j++)
{
if (A[j] > A[j + 1])
{
Aux = A[j];
A[j] = A[j + 1];
A[j + 1] = Aux;
}
}
}
for (i = 1; i <= 20; i++)
{
cout << "A[" << i << "]=" << A[i] << endl;
}
}
void heapify(int arr[], int size, int i)
{
int largest = i;
int left = 2 * i + 1;
int right = 2 * i + 2;
if (left < size && arr[left] > arr[largest])
{
largest = left;
}
if (right < size && arr[right] > arr[largest])
{
largest = right;
}
if (largest != i)
{
swap(arr[i], arr[largest]);
heapify(arr, size, largest);
}
}
void heapSort(int arr[], int size)
{
for (int i = size / 2 - 1; i >= 0; --i)
{
heapify(arr, size, i);
}
for (int i = size - 1; i >= 0; --i)
{
swap(arr[0], arr[i]);
heapify(arr, i, 0);
}
}
void printArray(int arr[], int size)
{
for (int i = 0; i < size; ++i)
{
cout << arr[i] << " ";
}
cout << endl;
}
void bbinaria() {
// Algoritmo de la Busqueda Binaria
inf = 0;
sup = 5;
i = 0;
while ((inf <= sup) && (i < 5))
{
mitad = (inf + sup) / 2;
if (numeros[mitad] == dato)
{
band = 'V';
break;
}
if (numeros[mitad] > dato)
{
sup = mitad;
mitad = (inf + sup) / 2;
}
if (numeros[mitad] < dato)
{
inf = mitad;
mitad = (inf + sup) / 2;
}
i++;
}
if (band == 'V')
{
cout << "El numero se encontro en la pos: " << mitad << endl;
}
else
{
cout << "El numero NO se encontro";
}
}
void Oseleccion () {
int numeros[] = {3, 4, 5, 2, 1};
int aux,min;
// Algoritmo del Ordenamiento por Selección
for (i = 0; i < 5; i++)
{
min = i;
for (j = i + 1; j < 5; j++)
{
if (numeros[j] < numeros[min])
{
min = j;
}
}
aux = numeros[i];
numeros[i] = numeros[min];
numeros[min] = aux;
}
cout << "Orden Ascendente: ";
for (i = 0; i < 5; i++)
{
cout << numeros[i] << " ";
}
cout << "\nOrden Descendente: ";
for (i = 4; i >= 0; i--)
{
cout << numeros[i] << " ";
}
}




