समस्या
आइए ब्रैकेट्स को एक्सप्रेशन से हटाकर एक सरलीकृत एक्सप्रेशन बनाएं।
समाधान
उदाहरण 1
Input: ब्रैकेट के साथ एक स्ट्रिंग एक्सप्रेशन निम्नानुसार है: (x+y)+(z+q) The output is as follows: x+y+z+q
उदाहरण 2
The input is as follows: (x-y+z)-p+q The output is as follows: x-y+z-p+q
एल्गोरिथम
दिए गए इनपुट से ब्रैकेट्स हटाने के लिए एक एल्गोरिथम देखें।
चरण 1: रनटाइम पर इनपुट डिक्लेयर और पढ़ें।
चरण 2: स्ट्रिंग को ट्रैवर्स करें।
चरण 3: इनपुट स्ट्रिंग के प्रत्येक तत्व को नई स्ट्रिंग में कॉपी करें।
चरण 4: यदि कोई पैरेंथेसिस एक तत्व के रूप में मिलता है, तो इसे खाली स्पेस से बदलें।
उदाहरण
निम्नलिखिश C प्रोग्राम दिए गए इनपुट से ब्रैकेट्स हटाता है:
#include <stdio.h>
int main(){
int i = 0, c = 0, j = 0;
char a[100], b[100];
printf("\nEnter the string :");
scanf("%s", a);
while(a[i] != '\0'){
if((a[i] == '(') && (a[i-1] == '-')){
(c == 0) ? j = i : j = c;
while(a[i] != ')'){
if(a[i+1] == '+')
b[j++] = '-';
else if(a[i+1] == '-')
b[j++] = '+';
else if(a[i+1] != ')')
b[j++] = a[i+1];
i++;
}
c = j + 1;
}
else if(a[i] == '(' && a[i-1] == '+'){
(c == 0) ? j = i : j = c;
while(a[i] != ')'){
b[j++] = a[i+1];
i++;
}
j--;
c = j + 1;
}
else if(a[i] == ')'){
i++;
continue;
} else {
b[j++] = a[i];
}
i++;
}
b[j] = '\0';
printf("%s", b);
return 0;
}
आउटपुट
Enter the string: (x+y)-z x+y-z