Advertisement
Malinovsky239

Untitled

Sep 8th, 2011
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cstring>
  3.  
  4. #define L int(1e5 + 5)
  5.  
  6. char s[L];
  7. int pos;
  8.  
  9. int main() {   
  10.     while (gets(s)) {
  11.         pos = 1;
  12.         int l = strlen(s);
  13.         for (int i = 0; i < l;) {
  14.             if (s[i] == '\\') {
  15.  
  16.                 char c = s[i + 1];
  17.                 if ( (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') || (c >= '0' && c <= '9') ) {
  18.                     int number = 0;
  19.                     if (c >= 'a' && c <= 'f')
  20.                         number += 16 * (10 + c - 'a');
  21.                     if (c >= 'A' && c <= 'F')
  22.                         number += 16 * (10 + c - 'A');
  23.                     if (c >= '0' && c <= '9')
  24.                         number += 16 * (c - '0');
  25.  
  26.                     char c2 = s[i + 2];        
  27.                     if (c2 >= 'a' && c2 <= 'f')
  28.                         number += (10 + c2 - 'a');
  29.                     if (c2 >= 'A' && c2 <= 'F')
  30.                         number += (10 + c2 - 'A');
  31.                     if (c2 >= '0' && c2 <= '9')
  32.                         number += (c2 - '0');
  33.  
  34.                     printf("%c", number);
  35.                     pos++;
  36.                     i += 3;                
  37.  
  38.                     continue;
  39.                 }
  40.  
  41.                 switch (s[i + 1]) {
  42.                     case '\\':
  43.                         putchar('\\');
  44.                         i += 2;
  45.                         pos++;
  46.                     break;
  47.  
  48.                     case 'n':
  49.                         putchar('\n');
  50.                         i += 2;
  51.                         pos = 1;
  52.                     break;
  53.  
  54.                     case 't':
  55.                         i += 2;
  56.                         do {
  57.                             pos++;
  58.                             putchar(' ');
  59.                         }
  60.                         while (pos % 7 != 1);
  61.                     break;
  62.                 }
  63.             }
  64.             else {
  65.                 putchar(s[i]);
  66.                 i++;
  67.                 pos++;
  68.             }
  69.         }
  70.         puts("");
  71.     }
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement