100!まで表せる計算機

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ぷれこ

100!まで表せる計算機

#1

投稿記事 by ぷれこ » 16年前

先日はお世話になりました、ぷれこです。

今日でた宿題は「100の階乗までを表示できる計算機をintの行列で表せ」というもので、
intの行列 kazu[MAX] にひとけたずつ数を入力し、大きな桁を表示できるようにするというものなのですが、

現状、
#include <stdio.h>
#define MAX 200
void main(void)
{
	int kazu[MAX];
	int i,j,k,x,y;
	/*数値を0に固定*/
	for (i = 0;i < MAX;i++){
		kazu = 0;
	}
	kazu[0] = 1;
	printf("階乗を入力する\n");
	scanf("%d",&x);
	
	for (i = 1;i < x + 1;i++){
		/*その回の階乗分をかける*/
		for (j = 0;j < MAX;j++){
			kazu[j] = kazu[j]*i;
		}
		/*繰り上げ処理*/
		for (j = 0;j < MAX;j++){
			if (kazu[j] > 9){
				kazu[j+1] = kazu[j+1] + kazu[j]/10;
				kazu[j] = kazu[j]%10;
			}
		}
	}
	
	printf("%d の階乗は ",x);
	for (i = y;i > 0;i--){
		printf("%d",kazu);
	}	
	printf(" です。");
	
}

といったところまで作ったのですが、桁数を求める方法が分からないので、答えにたどりつけません。
桁数を求められれば答えにたどりつけると思うのですが……
皆さん、お力をお貸しください。

たかぎ

Re:100!まで表せる計算機

#2

投稿記事 by たかぎ » 16年前

100個ぐらいなら、表引きにした方が簡単では?

ぷれこ

Re:100!まで表せる計算機

#3

投稿記事 by ぷれこ » 16年前

学校の宿題なので、行列でないといけないらしいです。

たかぎ

Re:100!まで表せる計算機

#4

投稿記事 by たかぎ » 16年前

> 学校の宿題なので、行列でないといけないらしいです。

行列ではなく配列ですよね。
計算結果を文字列のテーブルで持って、それを元に結果の配列に値を設定する方が簡単だということです。

non

Re:100!まで表せる計算機

#5

投稿記事 by non » 16年前

printf("%d の階乗は ",x);
	for (y=0,i = MAX-1;i >= 0;i--){
		if(kazu)
			y=1;
		if(y)
			printf("%d",kazu);
	}	
	printf(" です。");

lbfuvab

Re:100!まで表せる計算機

#6

投稿記事 by lbfuvab » 16年前

どうやら多倍長演算ですね。

それなら必要な機能は
1、非負の多倍長整数と非負の整数の掛け算
2、非負の多倍長整数の表示
だけです。
桁数については常用対数でいけます。

ぷれこ

Re:100!まで表せる計算機

#7

投稿記事 by ぷれこ » 16年前

あの後いろいろ弄ってたら、どうにか動きました。
皆様、どうもありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る