第25講 n進数の演算---その1 加法
第4話 n進数のデータ作成と表示のプログラム例
を実現するプログラム例
#include<iostream>
#include<ctime>
using namespace std;
void f(int* a,int n); //データ作成関数
void h(int* x,int n); //データ表示関数
void main(){
int n,t=0;
while(1){
cout<<"何進数の演算を考えますか?"<<endl;
t=1;
break;
}
if(t==1)scanf("%d",&n);
srand(time(NULL));
int a[10000],b[10000];
f(a,n);
f(b,n);
h(a,n);
h(b,n);
cout<<"プロジェクト終了"<<endl;
}
void f(int* x,,int n){
int i,j=0;
while(j==0){ //桁数が0になることの禁則処理
j=rand()%10;
}
for(i=0;i<j;i++){
x[i]=rand()%n;
if(i==j-1)if(x[i]==0)i--; //最後の桁が0にならないようにする禁則処理
}
x[j]=n; //終わりの印の代入
}
void h(int* x,int n){
int i,j;
for(i=0;;i++){ //終わりの添え字の入っている添え字の取得
if(x[i]==n){
j=i;
break;
}
}
for(i=j-1;i>=0;i--)cout<<x[i]; //逆順での表示
cout<<endl;
}
参考ダウンロード添付ファイル
それでは、いよいよ足し算を実現してください。
プログラムのポイントは
0+0=0
0+1=1
0+2=2
1+0=1
1+1=2
1+2=10
2+0=0
2+1=10
2+2=11
等の計算規則をいかに汎用的に実現するかです。
また、表示は計算結果が正しいかすぐに確認できるように、
上の図のように右揃えにして下さい。
のように左揃えにしてしまうと、
計算が合っているのかは、
紙に書き写して確認しない限り、
正しいのかどうか分かりませんから。
自信のある方は、
次話を見ないでプログラムを組んで頂きたいと思いますが、
次話では考え方を説明しますので、
それを参考にして組んで頂ければと思います。