【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.19679

大きな整数の加算
投稿者---char(2005/02/01 13:58:10)


二つの正の整数xとyを入力として、その和を出力するプログラムをスタックを用いて作成せよという課題が出たんですけれど、いまいちよく分かりません。誰か教えていただけないでしょうか?
ここで扱う数はCコンパイラが扱う整数よりもかなり大きいので、数を整数変数に代入できず、入力は文字列に読み込むようなプログラムなのですが・・・

サイズMAXの配列sとそのスタックポインタをtopとし、topの初期値を-1としている。その他にstrlenとatoiを使えばよいというのはわかるのですが、あとがよくわかりません。どなたかよろしくお願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:大きな整数の加算 19682 επιστημη 2005/02/01 14:43:21


No.19682

Re:大きな整数の加算
投稿者---επιστημη(2005/02/01 14:43:21)


筆算と同じコトをすればいい。一の位から繰り上がりを考慮して加える。

/*
 * 123456789 + 987654321 = ?
 */
#include <stdio.h>

int main() {
  int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  int b[] = { 0, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
  int c[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  int i, carry;
  carry = 0;
  for ( i = 9; i >= 0; --i ) {
    int n = a[i] + b[i] + carry;
    c[i] = n % 10;  /* i位の答 */
    carry = n / 10; /* 上位への繰り上がり */
  }
  for ( i = 0; i < 10; ++i ) {
    printf("%d",c[i]);
  }
  return 0;
}





この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧