Está en la página 1de 6

OPTMIZACION DE

PROCESOS
UNIDAD 3
INICIO

1. Con base en el material consultado en la unidad 3 resuelve el siguiente ejercicio que se plantea a
continuación acerca de los siguientes temas:

 método de búsqueda directa


 algoritmo para búsqueda directa en cadena
 algoritmo para comparación de dos cadenas

Planteamiento del Ejercicio.

Resuelve mediante algoritmos el siguiente ejercicio de búsqueda directa, consideremos dos


vectores que representan dos cadenas de caracteres:

S: vector (tamaño N) de carácter


P: vector (tamaño M) de carácter
Además, consideremos que 0 < M < N.

Hay que diseñar una función que devuelva la posición de S donde aparece:

1) La palabra por primera vez, o − 1 si no aparece en S.


2) Analiza la complejidad computacional del algoritmo.

La idea de que debe implementar este algoritmo consiste en empezar por la primera posición
de S y ver si los siguientes M caracteres coinciden con los de P. Si es así, ya se ha
encontrado la primera aparición de P. De lo contrario, hay que avanzar a la siguiente
posición de S, y volver a realizar la misma comparación, y así sucesivamente. Para
implementar esta idea, pues, serán necesarias dos funciones.
Para utiliza el software C++ https://www.onlinegdb.com/online_c++_compiler
y sigue el procedimiento que se indica:
determina las funciones algorítmicas que aplican en la resolución del ejercicio.
Apóyate en la siguiente referencia:

Bisbal Riera, J. (2013). Manual de algorítmica: recursividad, complejidad y diseño de


algoritmos. Editorial UOC. Recuperado de
https://elibro.net/es/ereader/uvm/56561?page=73 Capítulo 3.
Métodos de
búsqueda y clasificación. Páginas. 74 a 80 y 105

2. Elabora en un procesador de textos las respuestas en el que incluyas los siguientes


puntos:

• Primera función de su cadena


• Segunda función de coincidencia

Introducción
En la presente actividad vamos a implementaremos un programa con un en el lenguaje de
programación, en este caso usaremos “c++”.
Desarrollo:
Código fuente en C++:
Main.cpp
/
****************************************************************
************** Materia: Optimización de procesos
Actividad: 7 - Ejercicios
Elaborado por: Mario Garza 03/30/2022

*******************************************************************************/
#include <iostream>
#include <string>

#define GREEN "\033[32m"


#define RESET "\033[0m"

using namespace std; int


main ()
{
char my_string_S[500];
char my_string_P[20]
int i, j;
bool encontrado = false;

cout << "Trabajo realizado por\n\n"; cout <<


"Introduzca la primera cadena de caracteres (S) - Max: 500 caracteres: ";
cin.getline (my_string_S, sizeof (my_string_S));

cout <<
"Introduzca la palabra a buscar en la primera cadena de caracteres (P) - Max: 20 caracteres: "; cin.getline
(my_string_P, sizeof (my_string_P));

cout << "\nBuscaremos la palabra \"" << GREEN << my_string_P << RESET << "\" en
la cadena: \"" << GREEN << my_string_S << RESET << "\"";

i = 0;
j = 0;

// primera búsqueda encontrar la coincidencia del primer carácter de la cadena S while


(my_string_S[i] && encontrado != true)
{
j = 0;

// segunda búsqueda: buscar toda la cadena P en la cadena S, empezando en la primera


coincidencia
while (my_string_P[j] && encontrado != true)
{
if (my_string_S[i + j] == my_string_P[j])
{
if (!(my_string_P[j + 1]))
{

}
j+
+;
}
else
break;
}

i
+
+
;
}

if (encontrado == true)

cout << "\nEncontrada la palabra empieza en la posicion: " << GREEN << i << RESET << "
y termina en la posicion: " << GREEN << i + j - 1 << RESET;
}
e
l
s
e
{
cout << "\nCoincidencia no encontrada en la cadena.";
}

return 0;
}

Ejecución:

El programa por realizar nos pide 2 parámetros.

• El primer Parámetro, es la cadena principal con la cual buscaremos la palabra.


• El segundo Parámetro, es la palabra para encontrar en la cadena principal.

Después el programa recorrerá las dos cadenas, para así encontrar la palabra ( 2ndo
Parámetro) en la cadena principal.

Evidencias de ejecución:
Elaborado en: https://onlinegdb.com/eRHtrdoBK
Código Fuente: <scriptsrc="//onlinegdb.com/embed/js/eRHtrdoBK?
theme=dark"></script>
Conclusión:

Podemos ver el desarrollo de la aplicación teniendo como el objetivo principal


encontrar una solución con los menores pasos posibles y de la misma manera utilizar los
menores números de posibles, como vimos en este ejercicio, el algoritmo es sencillo por lo
cual el desarrollo es igual, pero en problemas con más algoritmos será más complejo.
Una vez dicho lo anterior, podemos ver que, al usar las 2 cadenas de la siguiente manera
correría nuestro programa:
 Cadena 1: De tamaño N, en nuestra aplicación le restringimos un máximo de 500
caracteres.
 Cadena 2: Seria la palabra clave que buscaremos en la cadena 1.

Referencias.
Bisbal Riera, J. (2013). Manual de algorítmica: recursividad, complejidad y diseño de
algoritmos. Editorial UOC. https://elibro.net/es/ereader/uvm/56561?page=73
Viera Class. (22 de marzo de 2020). Algoritmos de Búsqueda y Problemas de Optimización
https://www.youtube.com/watch?v=0NOrtRziK1s

También podría gustarte