Computer >> Máy Tính >  >> Lập trình >> lập trình C

Chương trình C để xóa dấu ngoặc khỏi một đầu vào nhất định.

Vấn đề

Hãy tạo một biểu thức đơn giản hóa bằng cách xóa dấu ngoặc khỏi biểu thức.

Giải pháp

Ví dụ 1

Input: A string expression with bracket is as follows:
(x+y)+(z+q)
The output is as follows:
x+y+z+q

Ví dụ 2

The input is as follows:
(x-y+z)-p+q
The output is as follows:
x-y+z-p+q

Thuật toán

Tham khảo một thuật toán để loại bỏ các dấu ngoặc khỏi một đầu vào nhất định.

Bước 1:Khai báo và đọc đầu vào trong thời gian chạy.

Bước 2:Duyệt qua chuỗi.

Bước 3:Sao chép từng phần tử của chuỗi đầu vào thành chuỗi mới.

Bước 4:Nếu gặp bất kỳ ai trong dấu ngoặc đơn dưới dạng một phần tử, hãy thay thế nó bằng khoảng trống.

Ví dụ

Sau đây là chương trình C để loại bỏ các dấu ngoặc khỏi một đầu vào nhất định -

#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;
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

Enter the string:(x+y)-z
x+y-z