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

NがCで移動した後、配列内の1の数をカウントします


サイズNの配列が与えられます。配列の最初の数はすべて0です。タスクは、番号を数えることです。 Nが移動した後の配列内の1の。 N番目の各移動には、ルールが関連付けられています。ルールは-

  • 1番目の移動-位置1、2、3、4で要素を変更します…………..

  • 2番目の移動-位置2、4、6、8で要素を変更します…………..

  • 3番目の移動-位置3、6、9、12で要素を変更します…………..

最後の配列の1の数を数えます。

例を挙げて理解しましょう。

入力

Arr[]={ 0,0,0,0 } N=4

出力

Number of 1s in the array after N moves − 2

説明 −次の移動後の配列-

Move 1: { 1,1,1,1 }
Move 2: { 1,0,1,0 }
Move 3: { 1,0,0,3 }
Move 4: { 1,0,0,1 }
Number of ones in the final array is 2.

入力

Arr[]={ 0,0,0,0,0,0} N=6

出力

Number of 1s in the array after N moves − 2

説明 −次の移動後の配列-

Move 1: { 1,1,1,1,1,1,1 }
Move 2: { 1,0,1,0,1,0,1 }
Move 3: { 1,0,0,1,0,0,1 }
Move 4: { 1,0,0,0,1,0,0 }
Move 5: { 1,0,0,0,0,1,0 }
Move 4: { 1,0,0,0,0,0,1 }
Number of ones in the final array is 2.

以下のプログラムで使用されているアプローチは次のとおりです

  • 0と整数Nで初期化された整数配列Arr[]を使用します。

  • 関数OnecountはArr[]を受け取り、そのサイズはNであり、noを返します。 Nが移動した後の最終配列にあるものの数。

  • forループは1から配列の終わりまで始まります。

  • 各iはi番目の動きを表します。

  • ネストされたforループは、0番目のインデックスから配列の終わりまで始まります。

  • i番目の移動ごとに、インデックスjがiの倍数(j%i ==0)の場合、その位置で0を1に置き換えます。

  • このプロセスは、配列の最後までiごとに続行されます。

  • −インデックスはi =1、j =1から始まりますが、配列インデックスは0からN-1までです。このため、arr[j1]は毎回変換されます。

  • 最後に、配列全体を再度トラバースし、noをカウントします。 1の内にあり、カウントに保存します。

  • 希望する結果としてカウントを返します。

#include <stdio.h>
int Onecount(int arr[], int N){
   for (int i = 1; i <= N; i++) {
      for (int j = i; j <= N; j++) {
         // If j is divisible by i
         if (j % i == 0) {
            if (arr[j - 1] == 0)
               arr[j - 1] = 1; // Convert 0 to 1
            else
               arr[j - 1] = 0; // Convert 1 to 0
         }
      }
   }
   int count = 0;
   for (int i = 0; i < N; i++)
      if (arr[i] == 1)
         count++; // count number of 1's
   return count;
}
int main(){
   int size = 6;
   int Arr[6] = { 0 };
   printf("Number of 1s in the array after N moves: %d", Onecount(Arr, size));
return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Number of 1s in the array after N moves: 2

  1. 入力された数字の1の数を数えるC#プログラム

    配列を使用して数字を追加しました- int[] num = new int[] {1, 25, 1, 55, 1}; ここでループして1を見つけ、1があれば、6を見つけて、発生をカウントする変数をインクリメントします- foreach(int j in num) {    if (j == 1) {       cal++;    } } 例 以下は、入力した数字の1の数を数えるコードです。 using System; public class Demo {    public static voi

  2. 文字列内の単語数をカウントするC#プログラム

    最初に文字列を宣言しましょう- string str = "Hello World!"; 次に、文字列全体をループして、空白、タブ、または改行文字を見つけます- while (a <= str.Length - 1) {    if(str[a]==' ' || str[a]=='\n' || str[a]=='\t') {       myWord++;    }    a++; } 例 C#で文字列内の単語数をカウントするた