Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

指定された入力式から括弧を削除するCプログラムの作成方法


問題

数式から括弧を取り除き、簡略化された式を作成してみましょう。この記事では、入力された文字列式から括弧を除去するCプログラムを紹介します。

解法

例1

入力:括弧を含む文字列式は次の通りです。
(x+y)+(z+q)
出力は次の通りです。
x+y+z+q

例2

入力は次の通りです。
(x-y+z)-p+q
出力は次の通りです。
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;
}

プログラムのポイント

このプログラムは、単に括弧を削除するだけでなく、数式の規則にも対応している点が特徴です。

  • 括弧の直前が「+」の場合:括弧の中身をそのまま出力します。
  • 括弧の直前が「-」の場合:括弧内の「+」と「-」の符号を入れ替えて出力します。
  • 閉じ括弧「)」は読み飛ばされ、出力には含まれません。

出力

上記のプログラムを実行すると、次のような出力が得られます。

文字列を入力してください:(x+y)-z
x+y-z

  1. 【Python】セットから要素を削除するプログラム:pop()メソッドの使い方

    「集合(セット)」という言葉は、数学の世界でもおなじみですね。Pythonにおけるセットは、数学の集合に相当するデータ構造です。セットにはさまざまな要素を格納でき、要素の順序は定義されません(順序を持たないコレクションです)。セットでは要素の追加や削除が自由に行え、要素の反復処理のほか、和集合・積集合・差集合といった標準的な集合演算も実行できます。この記事では、セットから要素を削除する方法を解説します。ここでは pop() メソッドを使用します。pop() はPythonの組み込みメソッドで、セットから要素を1つずつ取り出しながら削除していくために使われます。実行例NEW SET IS ::&

  2. 【初心者向け】Pythonで文章から重複する単語をすべて削除する方法

    プログラミングでは、与えられた文章から重複する単語を取り除いて整理したい場面がよくあります。本記事では、Pythonの標準ライブラリ「collections.Counter」を活用して、文章内の重複単語を効率的に削除する方法を解説します。処理の概要たとえば、次のような文章が与えられたとします。入力:I am a peaceful soul and blissful soul. 出力:I am a peaceful soul and blissful.このように、「soul」という単語が2回出現している場合、2回目以降の出現を削除し、各単語が1回だけ含まれる文章を作成します。アルゴリズムの手順重