
100の階乗を配列を利用してプログラムを組みたいのですが、どうやってすればいいのか分かりません。やりたい方法としては、数値を入力して、1から順番に入力して数値までかけて行きたいです。その中で、繰り上がり(agari)を利用して、人間が筆算をしているのと同じやり方をして計算したいです。掛けられる数は2桁でも一気にかけます。よろしくお願いします。
#include<stdio.h>
#define N 200
void main(void)
{
int a,agari,h,i,j;
int su[N];
printf("数値を入力してください");
scanf("%d",&a);
for(i=0;i<N;i++){
su[i] = 0;
}
su[N-1] = 1;
agari = 0;
ここから先が分かりません。
No.2ベストアンサー
- 回答日時:
すみません。
さっきのは間違えてました。for(k=2;k<=a;k++){ //kをsu[]にかける
su[0] *= k;
for(i=1;i<N;i++){
su[i]*=k;
agari=su[i]/10;
su[i]%=10;
for(j=i-1;j>0;j--){
agari+=su[j]
su[j]=agari%10;
agari/=10;
if(agari==0)break;
}
su[0]=agari;
}
}
ありがとうございました。
今日、このレポートをしあげてきました。
ですが、自分が書いていなかったのが悪いのですが、【break】は使っちゃダメな授業だったので、結局自力でやりました。ありがとうございます。
No.1
- 回答日時:
100以下の任意の階乗を求めたいということですね?配列は1つの変数に0から9までの数値だけを入れて10進N桁で計算しようということですね?
for(k=2;k<=a;k++){ //kをsu[]にかける
su[0] *= k;
for(i=1;i<N;i++){
su[i]*=k;
if(su[i]>9){ //繰り上がり
agari=su[i];
for(j=i;j>0;j--){
su[j]=agari%10;
agari/=10;
}
su[0]=agari;
}
}
}
こんな感じでどうでしょう?
ちなみに、intの最大が32767ですので、a<100なら、1つの変数に0から99まで入れて、9→99、10→100としても良いですし、ちょっと面倒でも2進数で考えるともっとメモリが節約できます。
1つの変数で9ビット(100は7ビット、intは16ビットなので16-7=9ビット)使うとして、9→511、10→512とします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列の要素数に変数を入れたい...
-
関数から配列を返すには?
-
C言語において、 配列要素をひ...
-
C言語の課題が出たのですが自力...
-
0 からa-1 までの整数の乱数をn...
-
C言語の平均点の出し方
-
アドレス格納のための二次元配...
-
配列のNULL初期化について
-
配列の逆順コピー
-
int i, int i[1];
-
C言語の2次元配列 容量が大き...
-
define で 配列
-
c言語 配列
-
100の階乗のプログラムって
-
c言語
-
fclose()でセグメンテーション違反
-
C言語についてです 5人のテスト...
-
プログラミングに関する問題が...
-
ポインタを使って構造体の配列...
-
C#で配列が空かを判定するには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
define で 配列
-
c言語
-
C#で構造体の配列を持った構造...
-
C言語 ファイルの指定された行...
-
C言語において、 配列要素をひ...
-
C言語の課題が出たのですが自力...
-
C#で配列が空かを判定するには?
-
構造体のextern方法
-
C言語の配列のコピーについて
-
c言語 構造体
-
C言語 数値の連続入力について
-
MFC - ダイアログボックスのPic...
-
C++DLLからC#へのコールバック...
-
配列のアドレス部
-
要素数・要素の値が未定の配列...
-
C言語についてです 5人のテスト...
-
.NET C++で、構造体の配列をnew...
-
2番目の最大値を求める
おすすめ情報