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

与えられた制約で与えられた配列の要素を追加しますか?


ここで1つの問題が発生します。 2つの配列要素を追加し、それらを別の配列に格納します。ただし、いくつかの制約に従います。これらの制約は以下のようなものです-

  • 追加は、両方の配列の0番目のインデックスから指定する必要があります
  • 合計が1桁を超える場合は分割し、各桁を対応する場所に配置します
  • 大きい方の入力配列の残りの桁は、出力配列に格納されます

アイデアを得るためのアルゴリズムを見てみましょう。

アルゴリズム

addArrayConstraints(arr1、arr2)

Begin
   define empty vector out
   i := 0
   while i is less than both arr1.length and arr2.length, do
      add := arr1[i] + arr2[i]
      if add is single digit number, then
         insert add into out
      else
         split the digits and push each digit into out
   end if
done
while arr1 is not exhausted, do
   insert each element directly into out if they are single digit, otherwise split and insert
done
while arr2 is not exhausted, do
   insert each element directly into out if they are single digit, otherwise split and insert
done
End

#include<iostream>
#include<vector>
using namespace std;
void splitDigit(int num, vector<int> &out) { //split the digits and store into vector to add into array
   vector<int> arr;
   while (num) {
      arr.insert(arr.begin(), num%10);
      num = num/10;
   }
   out.insert(out.end(), arr.begin(), arr.end());
}
void addArrayConstraints(int arr1[], int arr2[], int m, int n) {
   vector<int> out;
   int i = 0; //point current index of arr1 and arr2
   while (i < m && i <n) {
      int add = arr1[i] + arr2[i];
      if (add < 10) //if it is single digit, put the sum, otherwise split them
         out.push_back(add);
      else
         splitDigit(add, out);
      i++;
   }
}
while (i < m) //if arr1 has more elements
   splitDigit(arr1[i++], out);
while (i < n) //if arr2 has more elements
   splitDigit(arr2[i++], out);
for (int i = 0; i< out.size(); i++)
   cout << out[i] << " ";
}
main() {
   int arr1[] = {9323, 8, 6, 55, 25, 6};
   int arr2[] = {38, 11, 4, 7, 8, 7, 6, 99};
   int n1 = sizeof(arr1) / sizeof(arr1[0]);
   int n2 = sizeof(arr2) / sizeof(arr2[0]);
   addArrayConstraints(arr1, arr2, n1, n2);
}

出力

9 3 6 1 1 9 1 0 6 2 3 3 1 3 6 9 9

  1. 与えられた数に1を加えますか?

    指定された数値に1を加算するプログラムは、変数の値を1ずつインクリメントします。これは一般的にカウンターで使用されます。 増加させる方法は2つあり、特定の数を1つ増やすために使用できます- 番号に1を追加し、それを変数に再割り当てするだけです。 プログラムでインクリメント演算子を使用します。 方法1-再割り当て方法を使用する このメソッドは変数を受け取り、それに1を追加してから、その値を再割り当てします。 サンプルコード #include <stdio.h> int main(void) {    int n = 12;   &nb

  2. C /C++の多次元配列

    C / C ++では、多次元配列は簡単な言葉で配列の配列として定義されます。多次元配列では、データは表形式で(行の主要な順序で)格納されます。次の図は、次元が3 x 3x3の多次元配列のメモリ割り当て戦略を示しています。 アルゴリズム Begin    Declare dimension of the array.    Dynamic allocate 2D array a[][] using new.    Fill the array with the elements.    Print the ar