第17講 10進法をn進法に変換する
第8話 for文で翻訳ソフトを実現!
実行画面
n=16
10進数の428を16進数に翻訳すると、
1AC
です。
翻訳にかかった時間は0.000000秒です。
プロジェクト終了
をfor文で実現するプログラムコード再掲
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
int f(); //データを発生させる社員
void g(int w,int a[1000],int n); //10進数をn進数に翻訳する社員
void h(int w,int a[1000],int n); //結果をコンソールに表示する社員
int main(){
clock_t hj,ow;
int w,a[1000],n;
printf("n=");
fflush(0); //pirntfを先に実行させるためのお呪い
scanf("%d",&n);
srand((unsigned) time(NULL));
w=f();
hj=clock();
g(w,a,n);
ow=clock();
h(w,a,n);
printf("翻訳にかかった時間は%f秒です。\n",(double)(ow - hj) / CLOCKS_PER_SEC);
printf("プロジェクト終了\n");
}
int f(){ //データを発生させる社員
int w;
while(1){
w=rand()%1000;
if(w>0)return(w);
}
}
void g(int w,int a[1000],int n){ //10進数をn進数に翻訳する社員
int i;
i=0;
for(;;){
a[i]=w%n;
w=w/n;
if(w==0){
a[i+1]=-1;
return;
}
i++;
}
}
void h(int w,int a[1000],int n){ //結果をコンソールに表示する社員
int i,ik;
i=0;
while(1){
if(a[i]==-1){
ik=i-1;
break;
}
i++;
}
printf("10進数の%dを%d進数に翻訳すると、\n",w,n);
for(i=ik;i>=0;i--){
if(a[i]<10)printf("%d",a[i]);
if(a[i]==10)printf("A");
if(a[i]==11)printf("B");
if(a[i]==12)printf("C");
if(a[i]==13)printf("D");
if(a[i]==14)printf("E");
if(a[i]==15)printf("F");
}
printf("\nです。\n");
}
翻訳for文で実現するプログラム
なんと、たったの一カ所いじっただけです。
while(1)
for(;;)
結局、while文やdo〜while文で出来ることは、
すべてfor文で出来るのです。
ですから、while文なんて要らないという人もいますが、
私は、
4次元ポケット
(この場合は開発環境という意味ではないですよ)
にはいろいろなツールを入れておくべきだと思います。
引き出しを多くもつ!
これがプログラミング上達のコツです。
さて、10進数のn進数への翻訳を以上にしまして、
次話では、再び魔方陣に戻ります。
第10講の魔方陣自動生成アプリでは、
4次が限界でした。
しかし、工夫を重ねていくと、
作成速度は、
10倍、100倍、10000倍、1億倍、1京倍、・・・
という驚異的な改善を見せていき、
26次魔方陣クラスでも、
1秒で数百の単位で生成できるようになります。
本サイトは、魔方陣の研究から始まったのです。
1日に数アクセスから、
多い日には2万近くのアクセスを頂くようになった原点だったのです。
次話で扱う工夫は、対角線法です。
この改良によって、
6次魔方陣までが作成可能になります。
もちろんすべてではありませんよ。
世界最速のスパコン(スーパコンピュータ)を使ったとしても、
6次魔方陣がいくつあるか解明されていないのですから。
100個程度出来たら探索を打ち切るようにしないと、
宇宙時間が終わるまで、
永遠と6次魔方陣探しを続けてしまうでしょう。
初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ