Hola a todos.
Necesito escribir un programa en C/C++ que recibiendo una especificación de patrón proporcionada como argumento de línea de comando, procese un conjunto de entradas para determinar si la entrada se ajusta al patrón proporcionado. En caso de que la entrada se ajuste al patrón, esta es impresa por el programa. Las entradas son tomadas de un archivo de texto. En este, cada entrada es terminada por el carácter de nueva línea “\n”, y el programa debe terminar cuando recibe el fin de archivo.
El programa debe ser ejecutable de la siguiente manera:
$ programa "patron" archivoEntrada
Así pues, por ejemplo, si el patrón es “este es un %{0} ejemplo de patrón %{1S1}”, y el archivo de entrada se llama archivoIn.txt, la aplicación se invoca de la siguiente manera:
$ programa “este es un %{0} ejemplo de patrón %{1S1}” archivoIn.txt
Como salida, imprimirá por la salida estándar, aquellas líneas del archivo de entrada que se ajusten al patrón especificado.
Un patrón es una cadena de texto, delimitada con secuencias de captura de que identifican el texto variable a extraer del mensaje. Una secuencia de captura se representa como carácter de un signo de porcentaje '%' seguido por un '{' carácter, un entero no negativo, una opción modificadora de captura de contadores, y, finalmente, un carácter '}' (e. g. {%1S1}) El primer número entero no negativo indica el índice en la lista de patrones. Hay 2 tipos de patrones.
Patrón Simple
Un patrón simple se escribe, por ejemplo como "% {0}" y "% {25}", y captura cualquier cantidad de texto que se produce entre los literales de texto adyacentes.
Por ejemplo, un patrón conteniendo sólo secuencias simples es como se ilustra a continuación:
“Foo % {0} es un% {1}”
La cual aceptaría o reconocería las siguientes cadenas de texto:
“Foo bla es un bar”
“Foo bla bla es un barco muy grande”
Mientras que rechazaría las siguientes cadenas de texto:
“Foo bla es bar”
“Foo bla”
“Foo es bla”
Patrón Espaciado
Un patrón de espaciado se relaciona con la cantidad de espacios que puede contener una entrada.
Por ejemplo, la secuencia {1S2%} especifica como símbolo de índice a uno (1), con un total de espacios de exactamente dos (2).
Por ejemplo, el patrón:
“Foo% {0} es un % {1S0}”
Reconocería la siguiente cadena:
“Foo bla es un bar”
Pero no reconocería las siguientes cadenas de texto:
“Foo bla es un barco muy grande”
“Foo bla es bar”
“Foo bla”
“Foo es bla”
Por ejemplo el patrón:
“Foo% {0} es un % {1S2}”
Reconocería la siguiente cadena:
“Foo bla es un bar ”
Pero no reconocería las siguientes cadenas de texto:
“Foo bla es un barco grande”
El programa debe ser presentado en forma de código fuente, y debe emplear un modelo MVC, así como la respectiva documentación y diagramas de diseño.
Me podrían ayudar con esto, ya que lo veo algo complicado. Estaré agradecido por su ayuda.