Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.60 KB | None | 0 0
  1. #include "logic.h"
  2.  
  3. char *deblank(char* input) //funckja usuwająca spacje z wyrażenia
  4. {
  5.     unsigned int i, j;
  6.     char *output = input;
  7.     for (i = 0, j = 0; i<strlen(input); i++, j++)
  8.     {
  9.         if (input[i] != ' ')
  10.             output[j] = input[i];
  11.         else
  12.             j--;
  13.     }
  14.     output[j] = 0;
  15.     return output;
  16. }
  17.  
  18. void showExp(char* exp) //funkcja wyświetlająca podane wyrażenie
  19. {
  20.     for (unsigned int i = 0; i < strlen(exp); i++)
  21.     {
  22.         printf("%c", exp[i]);
  23.     }
  24. }
  25.  
  26. char *combineExp(char* exp, char* stack) //funckja łącząca nowo otrzymane wyrażenie z pozostałością stosu
  27. {
  28.     unsigned int l1 = strlen(exp);
  29.     unsigned int l2 = strlen(stack);
  30.     for (unsigned int i = l1; i < l1 + l2; i++)
  31.     {
  32.         exp[i] = stack[i - l1];
  33.     }
  34.     return exp;
  35. }
  36.  
  37. char *convertToONP(char* input, char* output, char **stack, int *stack_top) //funckja konwertująca wejściowe wyrażenie na wyrażenie zapisane w ONP
  38. {
  39.     int dlugosc = strlen(input);
  40.     int x = 0;
  41.  
  42.     for (int i = 0; i < dlugosc; i++)
  43.     {
  44.         switch (input[i])
  45.         {
  46.         case '(':
  47.         {
  48.             (*stack)[(*stack_top)] = input[i];
  49.             (*stack_top)++;
  50.             break;
  51.         }
  52.         case ')':
  53.         {
  54.             for (; (*stack)[(*stack_top) - 1] != '('; (*stack_top)--)
  55.             {
  56.                 output[x] = (*stack)[(*stack_top) - 1];
  57.                 x++;
  58.             }
  59.             if ((*stack)[(*stack_top) - 1] = '(')
  60.                 (*stack_top)--;
  61.             break;
  62.         }
  63.         case '+':
  64.         {
  65.             while ((*stack_top) > 0 && (*stack)[(*stack_top) - 1] != '(')
  66.             {
  67.                 output[x] = (*stack)[(*stack_top) - 1];
  68.                 x++;
  69.                 (*stack_top)--;
  70.             }
  71.             (*stack)[(*stack_top)] = input[i];
  72.             (*stack_top)++;
  73.             break;
  74.         }
  75.         case '-':
  76.         {
  77.             while ((*stack_top) > 0 && (*stack)[(*stack_top) - 1] != '(')
  78.             {
  79.                 output[x] = (*stack)[(*stack_top) - 1];
  80.                 x++;
  81.                 (*stack_top)--;
  82.             }
  83.             (*stack)[(*stack_top)] = input[i];
  84.             (*stack_top)++;
  85.             break;
  86.         }
  87.         case '*':
  88.         {
  89.             while ((*stack_top) > 0 && (*stack)[(*stack_top) - 1] == '*')
  90.             {
  91.                 output[x] = (*stack)[(*stack_top) - 1];
  92.                 x++;
  93.                 (*stack_top)--;
  94.             }
  95.             (*stack)[(*stack_top)] = input[i];
  96.             (*stack_top)++;
  97.             break;
  98.         }
  99.         case '/':
  100.         {
  101.             while ((*stack_top) > 0 && (*stack)[(*stack_top) - 1] == '/')
  102.             {
  103.                 output[x] = (*stack)[(*stack_top) - 1];
  104.                 x++;
  105.                 (*stack_top)--;
  106.             }
  107.             (*stack)[(*stack_top)] = input[i];
  108.             (*stack_top)++;
  109.             break;
  110.         }
  111.         case '^':
  112.         {
  113.             while ((*stack_top) > 0 && (*stack)[(*stack_top) - 1] == '^')
  114.             {
  115.                 output[x] = (*stack)[(*stack_top) - 1];
  116.                 x++;
  117.                 (*stack_top)--;
  118.             }
  119.             (*stack)[(*stack_top)] = input[i];
  120.             (*stack_top)++;
  121.             break;
  122.         }
  123.         default:
  124.         {
  125.             output[x] = input[i];
  126.             x++;
  127.             break;
  128.         }
  129.         }
  130.     }
  131.     return output;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement