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

Cプログラムで配列として表された2つの数値を加算する方法


配列で表される数値とは、数値の各桁が配列の1つの要素として格納される形式のことです。たとえば、

数値234は配列では {2, 3, 4} と表されます。

このような形式で表された2つの数値を加算するには、まず最下位桁の数字同士を足し合わせ、その合計が10以上であれば繰り上げを次の桁へ伝えます。その後、配列内の次の桁へ進みながら同じ手順を繰り返し、全体の合計を求めていきます。

実際に2つの数値を加算する例を見てみましょう。

a = {2, 9, 6}
b = {6, 3, 8}
出力:934

説明 − まず数値の最下位桁同士を加算します。6 + 8 = 14 となるため、ここで繰り上げが発生します。次の桁では 9 + 3 + 1 = 13 となり、再び繰り上げが発生します。さらに次の桁では 2 + 6 + 1 = 9 となります。以上の手順により、合計は 934 になります。

アルゴリズム

配列として格納された数値の合計を求めるには、まずどちらの数値がより多くの桁を持っているかを確認します。桁数が異なる場合は、小さい方の数値の桁数分だけ加算を行い、その後で大きい方の数値の残りの桁を順に処理していきます。

あわせて、加算時に発生する可能性のある繰り上げを追跡するための変数(キャリー)を用意します。初期値は0とし、各桁の加算処理ごとに適切な値へ更新します。こうして1桁ずつ合計を計算して結果を配列に格納し、最終的にその配列を出力します。

サンプルコード

#include <iostream>
using namespace std;
int Sum(int a[], int b[], int n, int m){
    int sum[n];
    int i = n - 1, j = m - 1, k = n - 1;
    int c = 0, s = 0;
    while (j >= 0) {
        s = a[i] + b[j] + c;
        sum[k] = (s % 10);
        c = s / 10;
        k--;
        i--;
        j--;
    }
    while (i >= 0) {
        s = a[i] + c;
        sum[k] = (s % 10);
        c = s / 10;
        i--;
        k--;
    }
    for (int i = 0; i <= n-1; i++) {
        cout<<sum[i];
    }
}
int main(){
    int a[] = { 5, 6, 9 };
    int b[] = { 3, 8 };
    int n = sizeof(a) / sizeof(a[0]);
    int m = sizeof(b) / sizeof(b[0]);
    cout<<"合計は ";
    if (n >= m)
        Sum(a, b, n, m);
    else
        Sum(b, a, m, n);
    return 0;
}

出力

合計は 607

補足

このコードでは、569 + 38 = 607 のように桁数が変わらない加算は正しく処理できますが、999 + 99 のように最上位桁の繰り上げで結果の桁数が増えるケースは考慮されていません。そのような場合にも対応するには、すべての桁の処理が終わった後にキャリー変数 c を確認し、c が0でなければ先頭に追加して出力する処理を加えるとよいでしょう。

  1. 【Python】文字列として表現された2つの数値を加算して文字列で返す方法

    2つの文字列 S と T が与えられ、それぞれが整数を表しているとします。この2つの数値を加算し、その結果を同じく文字列として返す必要があります。 例えば、入力が 256478921657 と 5871257468 の場合、出力は 262350179125 になります。これは、256478921657 + 5871257468 = 262350179125 となるためです。 解決の手順 この問題は、以下のステップで解決できます。 S と T を文字列から整数に変換する 2つの整数を加算する(ret = S + T) 結果の ret を文字列に変換して返す Pythonでは int() 関数

  2. Pythonで2つの数値を加算するプログラム:ビット演算による実装方法

    この記事では、2つの数値を加算するという問題に対する解法とアプローチについて詳しく解説します。 問題の概要 2つの大きな数値が与えられ、それらを加算した結果を出力することが求められます。 最も単純なアプローチは、オペランド同士を「+」演算子で結ぶ方法です。また、2つの数値をリストなどのイテラブルに格納し、Python標準ライブラリに用意されている組み込み関数 sum() を利用する方法もあります。 しかし、これらのアプローチでは10進数に対して直接演算を行うため、計算コストが増大するという課題があります。 ビット演算を用いた別のアプローチ そこで次に、数値をビット単位で操作する別のアプローチを