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

C言語で指定した文字がN回出現した後の文字列を出力する方法


課題の概要

今回の課題は、ユーザーが指定した文字が指定された回数だけ出現した後の残りの文字列を出力するC言語プログラムを作成することです。

入力 : string = {"I am harsh vaid "}
  文字 = 'a'
  出現回数 = 2
出力 : rsh vaid

これは、ユーザーが文字「a」とその出現回数「2」を指定したため、文字列中に2回目の「a」が出現した直後からの文字列が出力として表示されることを意味します。

アルゴリズム

START
ステップ1 → 文字ch(例:'a')と出現回数count(例:2)をint型として入力する
ステップ2 → sizeof(string)/sizeof(string[0])で文字列のサイズを求め、nに初期化する
ステップ3 → iを0からn未満までインクリメントしながら繰り返す
  IF count > 0 ならば
    IF string[i] == ch ならば
      count = count - 1
    End IF
    Continue(次のループへスキップ)
  End IF
  Else
    string[i] を出力する
  End Else
ステップ4 → ループ終了
STOP

サンプルコード

#include <stdio.h>
int main(int argc, char const *argv[]) {
    char string[] = {"I am Harsh Vaid"};
    char ch = 'a';
    int i, count = 2;
    int n = sizeof(string)/sizeof(string[0]);
    for( i = 0; i < n; i++ ) {
        if(count>0) {
            if(string[i]==ch) {
                count--;
            }
            continue;
        }
        else
        printf("%c", string[i]);
    }
    return 0;
}

コードの解説

このプログラムでは、まずsizeof演算子を使って文字列全体のサイズを要素1つ分のサイズで割ることで、配列の長さnを求めています。次にforループで文字列を先頭から1文字ずつ走査し、変数countが0より大きい間は文字を出力せずに読み飛ばします。走査中に指定文字「a」が見つかるたびにcountをデクリメントし、countが0になった時点、すなわち2回目の「a」の直後からは、elseブロックによって残りの文字を順番に出力していきます。continue文により、countが残っている間の処理は必ず次のループへスキップされる点がポイントです。

実行結果

上記のプログラムを実行すると、以下の出力が生成されます。

rsh Vaid
  1. 指定された文字列のすべての順列を出力するPythonプログラム

    本記事では、以下の問題に対する解決策について詳しく学んでいきます。 問題文 1つの文字列が与えられたとき、その文字列から作成できるすべての順列(並べ替えの組み合わせ)を表示する必要があります。 それでは、以下の実装例で具体的な解決策を見ていきましょう。 実装例 # リストを文字列に変換 def toString(List): return .join(List) # 順列の生成 def permute(a, l, r): if l == r: print(toString(a)) else: for i in range(l, r +

  2. Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法

    本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列