「進数変換」(2005/11/07 (月) 06:24:41) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<dl>
<dt>268 :<a href="mailto:sage"><b>デフォルトの名無しさん</b></a>
:2005/11/04(金) 21:13:46</dt>
<dd>[1] 授業単元:応用プログラミング<br>
[2] 問題文<br>
10進数からn進数へ、n進数から10進数へ変換するプログラムを作成せよ。但し、<br>
nは16以下でn進数の桁数は10桁以下。変換は以下のようなvoid型関数を定義して行え。<br>
これらの関数の引数では10進数はint型変数に入れ、n進数はchar型の配列(string型はダメ)に入れる。<br>
decTon 10進数をn進数に変換する関数。<br>
引数 10進数を渡すint型の値引数。<br>
n進数を入れる(結果)char型の配列。<br>
nの値。<br>
nTondec n進数を10進数に変換する関数。<br>
引数 n進数を渡す、char型の配列。<br>
nの値<br>
10進数(結果)を入れるint型の参照引数。<br>
データは実行例のように、繰り返し読めるようにする。<br>
<br>
注1)char型の配列の文字列を入れる場合、文字列の終わりにはヌル文字を入れる。<br>
注2)n進数でn>10の場合は、11はA、12はBと表示されるがその変換にはASCIIコードの性質を利用すること。<br>
ASCIIコード表<br>
ttp://www.psl.ne.jp/perl/pdojo00b.html<br>
[3] 環境<br>
[3.1] OS: windows<br>
[3.2] コンパイラ名とバージョン: 不明<br>
[3.3] 言語: C++<br>
[4] 期限:05年11月7日13:00まで<br>
[5] その他の制限: #include<iostream>から書き始める<br>
<br>
n進数を10進数にするだけならなんとか出来そうなのですがその逆が出来ませんorz<br>
どなたかご教示を賜りたいです。<br>
<br></dd>
<dt>269 :<a href="mailto:sage"><b>デフォルトの名無しさん</b></a>
:2005/11/04(金) 21:14:41</dt>
<dd>続き 実行例<br>
実行例)<br>
何進数から何進数へ変換しますか?:10 16<br>
10進数値を入力してください:123456<br>
123456は16進数に変換すると1E240<br>
何進数から何進数へ変換しますか?:16 10<br>
16進数値を入力してください:1E240<br>
16進数で1E240は123456<br>
何進数から何進数へ変換しますか?:5 8<br>
どちらかは、10進数にしてください</dd>
<dt>271 :<a href="mailto:sage"><b>デフォルトの名無しさん</b></a>
:2005/11/04(金) 22:35:49</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/268" target=
"_blank">>>268</a>適当に書いてみた<br>
#include<iostream><br>
#include<cctype><br>
using namespace std;<br>
void decTon(int value,char string[],int radix){<br>
if(value<0)*string++ = '-',value = -value;<br>
char*p=string,c;<br>
do *string++ = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[value%radix];while(value
/= radix);<br>
*string-- = '\0';<br>
while(p < string)c = *p,*p++ = *string,*string-- = c;<br>
}<br>
void nTondec(char string[],int radix,int&value){<br>
value=0;<br>
bool sign = *string=='-';<br>
string += sign;<br>
while(char c=tolower(*string++))value =
value*radix+(isdigit(c)?c-'0':c-'a'+10);<br>
if(sign)value=-value;<br>
}<br>
int main(){<br>
char buf[80];<br>
for(int from,to,value;;){<br>
cout << "何進数から何進数へ変換しますか?:";cin
>> from >> to;<br>
if(from==10 || to==10){<br>
cout << from << "進数値を入力してください:"; cin
>> buf;<br>
cout << buf << "は"<< to
<<"進数に変換すると";<br>
nTondec(buf,from,value);decTon(value,buf,to);<br>
cout << buf << endl;<br>
}else cout << "どちらかは、10進数にしてください"
<< endl;<br>
}<br>
}</dd>
<dt>272 :<a href="mailto:sage"><b>デフォルトの名無しさん</b></a>
:2005/11/04(金) 22:39:05</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/268" target=
"_blank">>>268</a><br>
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1041.txt<br>
作ったが、最初のcstringのincludeは要らない・・・手動で削除よろ<br>
それと今読んでるAccelerated
C++に影響されて不変の表明なんて付けてたら<br>
何かやり残した気がしないでもないんだが忘れてしまった<br>
簡単にはテストしたが十分にテストよろ<br>
<br>
それと無限ループで遊んでるが、不味かったら消してくれw</dd>
</dl>
表示オプション
横に並べて表示:
変化行の前後のみ表示: