Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Ignacio Alejandro Ruiz Garrido
- //09 de Septiembre
- //Bus ticket
- //Saber si el día de Ricardo fue exitoso o no, mediante verificar el código de los boletos entregados
- #include <stdio.h>
- #include <string.h>
- int main () //Inicia el programa
- {
- unsigned short T; //Variable para la cantidad de códigos a revisar
- char Codigo [101]; //Vector donde se guardará el código, largo del máximo posible permitido del código
- unsigned short i; //I y J, Variables que se usan para recorrer ciclos
- unsigned short j;
- unsigned short leng; //Variable para guardar el largo dinámico de cada código
- unsigned short flag; //Variable para guardar la sentencia de cada código
- scanf("%hu",&T); //Se pide la cantidad de códigos a revisar
- Codigo[0]='\0'; //Se inicia el vector con un nulo, con la idea de ahorrar energía para el primer ciclo
- for (i=1;i<=T;i++) //Ciclo donde se repetirá el proceso T-veces
- {
- for (j=0;j<101;j++) //Ciclo donde limpiamos el vector del código anterior ingresado
- { //Basicamente es buscar la casilla donde está el nulo, y ahí es donde termina el código
- if (Codigo[j]=='\0')
- {
- break;
- }
- else //Se limpia el vector metiendo un nulo en cada casilla que no sea nulo, hasta encontra la primera casilla donde si hay un nulo
- {
- Codigo[j]='\0';
- }
- }
- scanf ("%s",Codigo); //Se pide el código al usuario
- leng=strlen(Codigo); //Se le calcula el largo al código
- flag=1; //Se asume que el código cumple los requisitos, asignado a flag 1 (True)
- if (leng%2==0) //Se revisa el códido si la cantidad de dígitos es par, porque si es impar directamente ya no está en "alternada".
- {
- for (j=0;j<leng;j++) //Ciclo donde recorremos el vector, para verificar que se cumplan las condiciones, y así definir la sentencia (flag)
- {
- if (j==0) //Si estamos en la primera casilla, directamente saltamos a la segunda vuelta ya que no hay nada que ver jeje
- {
- continue;
- }
- else if (Codigo[j]==Codigo[j-1]) //Si la casilla que se está viendo es igual a la anterior, ya se tiene la sentencia y se rompe el ciclo
- {
- flag=0;
- break;
- }
- else if ((j>=2)&&(Codigo[j]==Codigo[j-2])&&(Codigo[j]!=Codigo[j-1]))
- {
- flag=1; //Aquí se ve si es que existen 3 letras en la secuencia, y al mismo tiempo se ve si están alternadas de manera correcta.
- }
- else if (j!=1) //En cualquier caso de no cumplir con lo anterior es directamente falso, a menos que estemos en la vuelta
- { //dos, que ahí podría existir la situación que sea correcto el código, y por esto se asume que flag es true
- flag=0;
- break;
- }
- }
- }
- else //De ser impar, directamente se asume que el código no es válido
- {
- flag=0;
- }
- if (flag) //Dependiendo de la sentencia se dice si es o no correcto el código entregado
- {
- printf("SI\n");
- }
- else
- {
- printf("NO\n");
- }
- }
- return 0;
- } //Termina el programa
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement