第35講 10進数をn進数に翻訳する△
第6話 n進数翻訳ソフトをさらに改良して、n進数を10進数にも翻訳できるようにする
Form1例
コード例
#pragma once
#include <math.h>
namespace 10進数をn進数に翻訳する {
・
・
・
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^
e) {
int a,n;
a=int::Parse(textBox1->Text);
n=int::Parse(textBox2->Text);
textBox3->Text=f(a,n);
int b,m;
b=int::Parse(textBox4->Text);
m=int::Parse(textBox5->Text);
textBox6->Text=g(b,m);
}
String^ f(int a,int n){
int r;
String^ w=L"";
r=a%n;
String^ v;
r=a%n;
if(r==10)v=L"A";
if(r==11)v=L"B";
if(r==12)v=L"C";
if(r==13)v=L"D";
if(r==14)v=L"E";
if(r==15)v=L"F";
if(r==16)v=L"G";
if(r==17)v=L"H";
if(r==18)v=L"I";
if(r==19)v=L"J";
if(r==20)v=L"K";
if(r==21)v=L"L";
if(r==22)v=L"M";
if(r==23)v=L"N";
if(r==24)v=L"O";
if(r==25)v=L"P";
if(r==26)v=L"Q";
if(r==27)v=L"R";
if(r==28)v=L"S";
if(r==29)v=L"T";
if(r==30)v=L"U";
if(r==31)v=L"W";
if(r==32)v=L"V";
if(r==33)v=L"X";
if(r==34)v=L"Y";
if(r==35)v=L"Z";
if(r<10)v=r.ToString();
a=a/n;
if(a>0){
w+=f(a,n);
}
else{
return(v);
}
return(w+=v);
}
String^ g(int a,int n){
int k,i,w=0;
k=(int)log10((double)a);
for(i=k;i>-1;i--){
if(i==k)w+=((int)(a/pow((double)10,(double)i)))*((int)pow((double)n,(double)i));
if(i<k)w+=(((a%((int)pow((double)10,(double)(i+1))))/((int)pow((double)10,(double)i)))*((int)pow((double)n,(double)i)));
}
return(w.ToString());
}
};
}
実行例
皆さんいろいろ実験して、逆翻訳がうまくいっていることを確認しましょう。
解説は次話で。
VC++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual
Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)