You are on page 1of 5

Detector de paridad Planteamineto del problema Este ejercicio consiste en crear una mquina de estados finitos que reconozca

si un nmero binario es par o si es impar, la entrada es una secuencia de 1 y 0 que representan un nmero binario, una vez con la mquina de estados finitos se procede a implementar en algn lenguaje de programacin como c o c++ la dicha mquina. La mquina de estados finitos se vio en clase

Alternativas de solucin: Algoritmo1: Read binario par=true For i=0 to binario.lenght-1 if (binario(i)==1) par=!par end if (par) Output "El numero es par" else Output "El numero es impar" Seleccin de la mejor alternativa Como tenemos solo una alternativa de solucin, es la que escogemos Desarrollo del Ejercicio El Algoritmo presentado anteriormente, inicia con una bandera que se llama para inicializada en true, cuando recorre el nmero, cada vez que encuentra un 1, se almacena en par la negacin de par, una vez recorrida toda la cadena, nos despliega par o impar, dependiendo de el valor de la bandera par.

Diagrama de flujo:

Cdigo #include<iostream> #include <string> using namespace std; int main (void) { string cadena; cout<<"Ingrese el numero binario:\n"; cin>>cadena; char *cadena2 = strdup(cadena.c_str()); bool par=true; for(int i=0;i<strlen(cadena2);i++){ if (*(cadena2+i)=='1') par=!par; } if (par) cout<<"El numero es par\n"; else cout<<"El numero es impar\n"; system("PAUSE"); return 0; }

Explicacin:
Prueba 1:
En este caso corremos el programa con la entrada 011100011010101, y obtenemos el siguiente resultado:

Para comprobar si el resultado es vlido, lo corremos manualmente, podemos ver que el nmero ingresado tiene 8 unos, por lo cual tiene 8 transiciones: Transiciones: 1) Par 2) Impar 3)Par 4)Impar 5)Par 6)Impar -> -> -> -> -> -> Impar Par Impar Par Impar Par

7)Par 8)Impar

-> ->

Impar Par

Podemos observar que el resultado que se obtuvo en el programa es el mismo que obtuvimos corriendo manualmente el programa, en ambos casos el resultado es par.

Prueba2:
En este caso corremos el programa con la entrada 011100011010101, y obtenemos el siguiente resultado:

Para comprobar si el resultado es vlido, lo corremos manualmente, podemos ver que el nmero ingresado tiene 5 unos, por lo cual tiene 5 transiciones: Transiciones: 1) Par 2) Impar 3)Par 4)Impar 5)Par -> -> -> -> -> Impar Par Impar Par Impar

Podemos observar que el resultado que se obtuvo en el programa es el mismo que obtuvimos corriendo manualmente el programa, en ambos casos el resultado es impar. Prueba3: En este caso corremos el programa con la entrada 111000101110010101, y obtenemos el siguiente resultado:

Para comprobar si el resultado es vlido, lo corremos manualmente, podemos ver que el nmero ingresado tiene 10 unos, por lo cual tiene 10 transiciones: Transiciones: 1) Par 2) Impar 3)Par 4)Impar 5)Par 6)Impar 7)Par 8)Impar 9)Par 10)Impar -> -> -> -> -> -> -> -> -> -> Impar Par Impar Par Impar Par Impar Par Impar Par

Podemos observar que el resultado que se obtuvo en el programa es el mismo que obtuvimos corriendo manualmente el programa, en ambos casos el resultado es par.

Conclusiones: El detector de paridad nos permite saber si un nmero binario es par o impar, mediante transiciones de estado de par a impar al ingresar 0 y 1. La mquina de estados finitos del detector de paridad nos facilita la compresin del funcionamiento del detector de paridad, para que la creacin de algoritmos sea mas sencilla. Recomendaciones: Recomiendo usar un string para almacenar el numero binario en el ingreso, puesto que se facilita la implementacin del programa Recomiendo realizar mquinas de estado finito, para cantidad de problemas que se pueden simplificar usando este tipo de mquinas.

You might also like