acobzew

sem3-problem3

Apr 9th, 2017
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.88 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #define N 10000
  4.  
  5. void getstr(char s[]) {
  6.     char c;
  7.     int i = 0;
  8.     while((c = getchar()) != '\n')
  9.         s[i++] = c;
  10.     s[i] = '\0';
  11. }
  12.  
  13. char *expandChars(char s[]) {
  14.     static char ans[N];
  15.     int i = 0, k = 0;
  16.     char start, end, c;
  17.     for (i = 0; s[i] != '\0'; i++) {
  18.         if ((s[i] == '-' && i > 0 && s[i + 1] != '\0') &&
  19.                 (isdigit(s[i - 1]) && isdigit(s[i + 1]) ||
  20.                 (isalpha(s[i - 1]) && isalpha(s[i + 1]) &&
  21.                 (islower(s[i - 1]) && islower(s[i + 1]) ||
  22.                 isupper(s[i - 1]) && isupper(s[i + 1]))))) {
  23.            
  24.             start = s[i - 1];
  25.             end = s[i + 1];
  26.  
  27.             for (c = (start < end) ? (start + 1) : (start - 1);
  28.                     c != end;
  29.                     (start < end) ? c++ : c--)
  30.                 ans[k++] = c;
  31.  
  32.         } else {
  33.             ans[k++] = s[i];
  34.         }
  35.     }
  36.  
  37.     return ans;
  38. }
  39.  
  40. int main() {
  41.     char s1[N];
  42.     getstr(s1);
  43.     char *s2 = expandChars(s1);
  44.     printf("%s", s2);
  45.  
  46.     return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment