Advertisement
GatoBooster

Ejercicio Acepta el reto con struct

Oct 7th, 2017
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.18 KB | None | 0 0
  1. //gcc 5.4.0
  2.  
  3. //Librerias
  4. #include <stdio.h>
  5. //#define MAX 101
  6. #define MAX 102 //*********OJOOO    POR SI HAY QUE AGREGAR UN 1
  7.  
  8.  
  9. #include <string.h>
  10.  
  11. typedef struct Cadenas{
  12.     char cadena[MAX];
  13.     char result[MAX];
  14. }cade;
  15.  
  16. int main(){                                             //Inicio del Main
  17.     //Declaración de Variables
  18.     cade vector;
  19.     short int i, j, largo;
  20.     short int flag, cont;
  21.     char hexa[17] = "0123456789ABCDEF";
  22.    
  23.     //for(h = 1; h <= MAX; h++){
  24.    
  25.     //OJO Un caso de prueba con la cadena FIN marca el final.
  26.     strcpy(vector.result,"");
  27.     while (strcmp(vector.result,"FIN") != 0)
  28.     {
  29.        
  30.        
  31.         scanf("%100[^\n]s", vector.result);                                //Ingresar los valores para la cadena
  32.         getchar(); //SE LEE EL ENTER QUE QUEDA EN EL BUFFER
  33.        
  34.         //SOLO SE PROCESA LA CADENA SI ES DISTINTA DE "FIN"
  35.        
  36.         if (strcmp(vector.result,"FIN") != 0) {
  37.            
  38.            
  39.             //NO ES NECESARIO VALIDAR !!!
  40.             /*for(i = 0; i < largo; i++){                         //Validar los valores ingresados
  41.                 cont=0;
  42.                 for(j = 0; j < 16; j++){
  43.                     if(result[i] != hexa[j]){
  44.                         cont++;
  45.                     }
  46.                     if(cont == 16){
  47.                         return 0;
  48.                     }
  49.                 }    
  50.             }*/
  51.            
  52.             //OJO LA CADENA DEBE tener 102 caracteres posiciones entre 0 y 101
  53.             // si te ingresan 100 F's
  54.            
  55.             for(i = 0; i < MAX; i++){
  56.                 vector.cadena[i] = '0';
  57.             }
  58.            
  59.             largo = strlen(vector.result);
  60.             //Rellenar los valores en la cadena
  61.             //for(i = MAX; largo >= 0; i--){
  62.             for(i = MAX-1; largo >= 0; i--){
  63.            
  64.                 vector.cadena[i] = vector.result[largo];
  65.                 largo--;
  66.             }
  67.            
  68.             flag=0;
  69.             //for(i = MAX-1;  i >= 0; i--){
  70.             for(i = MAX-2;  i >= 0; i--){            
  71.              
  72.                 for(j = 0; j < 16; j++){            
  73.                     if(vector.cadena[i] == hexa[j]){        
  74.                         if(vector.cadena[i] == 'F'){                 //Cuando es igual a F
  75.                             vector.cadena[i] = '0';
  76.                             break;
  77.                         }
  78.                         vector.cadena[i] = hexa[j+1];              //Cuando no es igual a F
  79.                         flag = 1;
  80.                         break;
  81.                     }
  82.                 }
  83.                 if(flag == 1){
  84.                     break;
  85.                 }
  86.             }
  87.      
  88.             //for(i = 0; i < MAX; i++){
  89.             for(i = 0; i < MAX - 1; i++){
  90.              
  91.                 if(vector.cadena[i] != '0'){
  92.                     largo = i;
  93.                     break;
  94.                 }
  95.             }
  96.             //for(i = largo; i < MAX; i++){
  97.             for(i = largo; i < MAX-1; i++){  
  98.                 printf("%c",vector.cadena[i]);
  99.             }
  100.             printf("\n");
  101.         }
  102.      }      
  103.     return 0;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement