0

Cで2つの数値配列を乗算する方法を教えてください。数値配列は基本的に、数字を含む 2 つの文字列から派生します。例: 123456 および 132465。

編集: と の 2 つの文字列がS1 = "123456"ありS2="132546"ました。次に、これらの 2 つの文字列を int の配列、つまり int IS1[6] と IS2[6] に変換して、

IS1[1] = 1, IS1[2] = 2......

IS2[1] = 1, IS2[2] = 3.....

ここで、これら 2 つの配列を乗算する必要があります。助けてください。

4

6 に答える 6

5

正確に何を乗算したいのかは明確ではありません。で 2 つのヌル終了文字列を乗算する必要がある場合は、次のように値にchar[]変換できます。intatoi

int result = atoi(str1) * atoi(str2);
于 2009-12-08T19:27:25.127 に答える
3

紙と鉛筆の算術演算を使用したいが、その方法がわからない場合は、次のを参照してください。

于 2009-12-08T19:30:21.740 に答える
1

アルゴリズムの長い乗算を使用して、ファイルの2行に格納された2つの数値を乗算する単純なプログラムをコーディングするだけです。互いに10億以上の数を持つ2つの数を乗算することができます

例:

            23958233
            5830 ×
         ------------
            00000000  ( =      23,958,233 ×     0)
           71874699   ( =      23,958,233 ×    30)
          191665864   ( =      23,958,233 ×   800)
         119791165    ( =      23,958,233 × 5,000)

ソースコード:

http://code.google.com/p/juniormultiply/source/browse/#svn/trunk/srcを確認してコメントをお寄せ ください

于 2010-07-17T14:04:34.073 に答える
0

乗算を含む配列を生成したい場合は、次のように使用できます。

int *a, *b, *c; // pointers to arrays of size n
for (unsigned i=0;i<n;++i)
  c[i] = a[i] * b[i];

内積が必要な場合は、次のようにします。

int *a, *b; // pointers to arrays of size n
int res = 0;
for (unsigned i=0;i<n;++i)
  res += a[i] * b[i];

前の回答が示唆するように、2 つの配列を数値として扱いたい場合は、前述のatoi()関数を使用できます。

于 2009-12-08T19:31:31.427 に答える
0

数値が十分に小さい場合は、それらを int ( atoi) に解析します。

大きすぎて int に収まらない場合:

  • gmpなどのライブラリを使用する

  • または鉛筆と紙のアルゴリズムを使用しますが、車輪を再発明することになります.

于 2009-12-08T19:28:16.637 に答える
-1

実際のプロジェクトの場合は、変換を行います。

これがアルゴリズムの演習である場合は、鉛筆と紙のアプローチに従って複数のループを実行します。

于 2009-12-08T19:33:27.333 に答える