Advertisement
nasho97

Mod2Cuest3Preg1

Sep 9th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.10 KB | None | 0 0
  1. //Ignacio Alejandro Ruiz Garrido
  2. //09 de Septiembre
  3. //Bus ticket
  4. //Saber si el día de Ricardo fue exitoso o no, mediante verificar el código de los boletos entregados
  5.  
  6. #include <stdio.h>
  7. #include <string.h>
  8.  
  9. int main ()                                         //Inicia el programa                   
  10. {
  11.     unsigned short T;                               //Variable para la cantidad de códigos a revisar
  12.     char Codigo [101];                              //Vector donde se guardará el código, largo del máximo posible permitido del código
  13.     unsigned short i;                               //I y J, Variables que se usan para recorrer ciclos
  14.     unsigned short j;
  15.     unsigned short leng;                            //Variable para guardar el largo dinámico de cada código
  16.     unsigned short flag;                            //Variable para guardar la sentencia de cada código
  17.    
  18.     scanf("%hu",&T);                                //Se pide la cantidad de códigos a revisar
  19.     Codigo[0]='\0';                                 //Se inicia el vector con un nulo, con la idea de ahorrar energía para el primer ciclo
  20.    
  21.     for (i=1;i<=T;i++)                              //Ciclo donde se repetirá el proceso T-veces
  22.     {
  23.         for (j=0;j<101;j++)                         //Ciclo donde limpiamos el vector del código anterior ingresado
  24.         {                                           //Basicamente es buscar la casilla donde está el nulo, y ahí es donde termina el código
  25.             if (Codigo[j]=='\0')
  26.             {
  27.                 break;
  28.             }
  29.             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
  30.             {
  31.                 Codigo[j]='\0';
  32.             }
  33.         }
  34.        
  35.         scanf ("%s",Codigo);                        //Se pide el código al usuario
  36.         leng=strlen(Codigo);                        //Se le calcula el largo al código
  37.         flag=1;                                     //Se asume que el código cumple los requisitos, asignado a flag 1 (True)
  38.        
  39.         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".
  40.         {
  41.             for (j=0;j<leng;j++)                    //Ciclo donde recorremos el vector, para verificar que se cumplan las condiciones, y así definir la sentencia (flag)
  42.             {
  43.                 if (j==0)                           //Si estamos en la primera casilla, directamente saltamos a la segunda vuelta ya que no hay nada que ver jeje
  44.                 {
  45.                     continue;
  46.                 }
  47.                 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
  48.                 {
  49.                     flag=0;
  50.                     break;
  51.                 }
  52.                 else if ((j>=2)&&(Codigo[j]==Codigo[j-2])&&(Codigo[j]!=Codigo[j-1]))
  53.                 {
  54.                     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.
  55.                 }
  56.                 else if (j!=1)                      //En cualquier caso de no cumplir con lo anterior es directamente falso, a menos que estemos en la vuelta
  57.                 {                                   //dos, que ahí podría existir la situación que sea correcto el código, y por esto se asume que flag es true
  58.                     flag=0;
  59.                     break;
  60.                 }
  61.             }
  62.         }
  63.         else                                        //De ser impar, directamente se asume que el código no es válido
  64.         {
  65.             flag=0;
  66.         }
  67.         if (flag)                                   //Dependiendo de la sentencia se dice si es o no correcto el código entregado
  68.         {
  69.             printf("SI\n");
  70.         }
  71.         else
  72.         {
  73.             printf("NO\n");
  74.         }
  75.     }
  76.    
  77.     return 0;
  78. }                                                   //Termina el programa
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement