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

C++を使用して配列から先行ゼロを削除する


配列が提供され、指定された配列から先行ゼロを削除してから、配列を出力する必要があります。

Input : arr[] = {0, 0, 0, 1, 2, 3}
Output : 1 2 3

Input : arr[] = {0, 0, 0, 1, 0, 2, 3}
Output : 1 0 2 3

特定の問題で、前の配列の先行ゼロを含まない新しい配列を作成できます。

解決策を見つけるためのアプローチ

このアプローチでは、配列を調べてすべての数値を挿入しますが、先行ゼロは挿入しません。

#include <iostream>

using namespace std;

int main() {
   int arr[] = {0, 0, 0, 1, 2, 0, 4};
   int n = sizeof(arr) / sizeof(int); // size of given array.
   int last = -1;
   for(int i = 0; i < n; i++) { // finding the first non zero element
      if(arr[i] != 0) {
      last = i;
      break;
      }
   }
   if(last == -1)
      cout << "Empty\n";
   else {
      int b[n - last]; // the new array.
      for(int i = last; i < n; i++) // inserting the elements in the new array
         b[i-last] = arr[i];

      for(int i = 0; i < n-last; i++) // printing the array
   cout << b[i] << " ";
   }
}

出力

1 2 0 4

上記のコードの説明

与えられたプログラムでは、最初に配列arrをトラバースし、最初の非ゼロ要素のインデックスを見つけます。これは、トラバーサル後にlastが-1の場合、lastという変数に格納されます。つまり、配列全体がで構成されます。ゼロなので、「空」を出力します。

これで、最初の非ゼロ要素のインデックスを取得したので、新しい配列のサイズ、つまり(n-last)を決定できます。次に、最後からn未満までforループを実行します。これらの要素を新しい配列に挿入し、新しい配列を出力します。

結論

この記事では、配列から先行ゼロを削除する問題を解決します。また、この問題のC ++プログラムと、解決した完全なアプローチについても学びました。同じプログラムを、C、java、python、その他の言語などの他の言語で作成できます。この記事がお役に立てば幸いです。


  1. C#の文字列から先行ゼロを削除する

    次の文字列が先行ゼロであるとしましょう。 String str ="000234"; TrimStart()メソッドを使用し、0を設定して削除します。 TrimStart(new Char[] { '0' } ) 以下は、先行ゼロを削除するための完全なコードです。 例 using System; class Program {    static void Main() {       String str ="000234".TrimStart(new Char[] { '

  2. IPアドレスから先行ゼロを削除するPythonプログラム

    このチュートリアルでは、IPアドレスから先行ゼロを削除するプログラムを作成します。正確に何であるかを見てみましょう。 IPアドレスが255.001.040.001であるとします。 、次にそれを 255.1.40.1に変換する必要があります 。以下の手順に従ってプログラムを作成してください。 IPアドレスを初期化します。 IPアドレスをで分割します。分割関数の使用 IPアドレスの各部分をintに変換します これにより、先行ゼロが削除されます。 各部分をstrに変換して、すべての部分を結合します。 結果が最終出力です。 例 ## initializing IP address ip_addre