Advertisement
Guest User

Untitled

a guest
Nov 1st, 2014
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.47 KB | None | 0 0
  1. #include <iostream>
  2. #include <string.h>
  3.  
  4. using namespace std;
  5.  
  6. int op (char a){
  7.     char oper[] = {'+', '-','*', '/', '(', ')'};
  8.     for (int i = 0; i < 6; i++)
  9.         if (a == oper[i])
  10.             return i;
  11.  
  12.     return 0;
  13. }
  14. //((x+0))*(3*x)-x*(x-5)
  15. char* delete_scobe(char* str, char x){
  16.     char res[100]="";
  17.     bool used[100]={false};
  18.     int prior, k=0,sc=0;
  19.  
  20.     for (int i = 0; i < strlen(str); i++){
  21.         if(str[i] == 'x'){
  22.             res[k] = str[i];
  23.             k++;
  24.             continue;
  25.         }
  26.         if ((int)str[i] - 48  >= 0){
  27.             res[k] = str[i];
  28.             k++;
  29.             continue;
  30.         }
  31.         if (str[i] == '('){
  32.             sc++;
  33.             for (int j=i+1; j < strlen(str); j++){
  34.                 if (op(str[j]) <= 1){
  35.                     if (str[j] != 'x' && ((int)str[j] - 48 < 0 || (int)str[j] - 48 > 9) && !used[j]){
  36.                         if (i == 0){
  37.                             sc--;
  38.                             break;
  39.                         }
  40.                         used[j]=true;
  41.                         res[k]=str[i];
  42.                         k++;
  43.                         break;
  44.                     }
  45.                 }else if (str[j] == ')'){
  46.                     sc--;
  47.                     break;
  48.                 }
  49.                 if (str[j] =='*' || str[j] == '/'){
  50.                     j=strlen(str);
  51.                     if (sc > 0)
  52.                         sc--;
  53.                 }
  54.             }
  55.             continue;
  56.         }
  57.         if (str[i] == ')' && sc > 0){
  58.             sc--;
  59.             res[k]=str[i];
  60.             k++;
  61.             continue;
  62.         }else{
  63.             if (str[i] == ')' && !sc)
  64.                 continue;
  65.             res[k]=str[i];
  66.             k++;
  67.             continue;
  68.         }
  69.     }
  70.    
  71.     for (int i=0; i < strlen(res); i++)
  72.         if (res[i] == 'x')
  73.             res[i] = x;
  74.     return res;
  75. }
  76.  
  77. int main(){
  78.     char *str = "((x*5)+(x*3*(x-5)))-4*(x*5)";
  79.     char x = '5';
  80.     //cin >> str;
  81.     //cin >> x;
  82.  
  83.     str = delete_scobe(str, x);
  84.    
  85.     return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement