dポイントプレゼントキャンペーン実施中!

キーボードから10進数6桁の文字を入力し数字の10進数で表示させる。という問いが解りません。この問いには、どのような意味、学習内容が含まれているのでしょうか?サンプルコードを元に説明していただけると助かります。宜しくお願いします。

A 回答 (6件)

★アドバイス(怒)


・自分でちょっとは考えましょう。
>// 2進数→10進数の変換
>decimal = 0;
>for ( i = 0 ; binary[i] != '\0' ; i++ ){
> number = (binary[i] - '0');   // 文字→数値に変換
> decimal = (decimal * 2 + number);  // 最下位の桁から10進数値を作成
>}
 前回の質問でここの部分理解できました?
 ちゃんと理解できていれば『10進数6桁の文字を…』も同じ要領で行えますが…。
 なぜ上記の方法で『2進数→10進数の変換』が行えるかをもう一度考えて下さい。
 そうすれば10進数にするには何処の1箇所を書き換えれば対応できるかも分かります。
>サンプルコードを元に説明していただけると助かります。宜しくお願いします。
 ↑
 前回のサンプルを見直しなさい。(怒)
 http://oshiete1.goo.ne.jp/qa3701336.html→『【続】コマンドライン引数を使って2進数を10進数に変換させたい』
 宿題のようですが、前回は『binary.cpp』をご自分の考えて作成しているでしょ。
 今回も作成しているソースがあれば補足にでも載せて下さい。
>この問いには、どのような意味、学習内容が含まれているのでしょうか?
 ↑
 これはね。
 n進数とか、10進数とかのコンピュータの数値表現をちゃんと理解しているかを問う問題だと思います。
 きちんと理解していれば2進数、10進数以外にも対応できますので。
 mai-07_maiさんはまだ文字列と数値の相互変換を上手く理解していないようです。
 文字列では'0'~'9'の文字コード、数値は0~9の値です。
> number = (binary[i] - '0');   // 文字→数値に変換
> decimal = (decimal * 2 + number);  // 最下位の桁から10進数値を作成
 ↑
 この2行が『2進数→10進数の変換』で重要な部分です。
 だからこの2行の一箇所を書き換えれば『10進数6桁の文字列→10進数表示』も簡単です。
 良く考えてみて下さい。
・以上。すごく参考になったでしょう。ね。

参考URL:http://oshiete1.goo.ne.jp/qa3701336.html
    • good
    • 0
この回答へのお礼

Oh-Orangeさま

mai-07_maiと申します。
いつも親切な、ご説明ありがとうございます。
C言語の勉強を初めて3週間の超初心者です。回りに相談出来る方がいない為、この掲示板をお借りして相談してます。アドバイスしてくれた内容を全て理解は出来ていませんが調べながら地道に学習してます。風邪でダウンしてしまい、お返事が遅くなりまして申し訳ございません。機会があれば是非、今後もアドバイスくださいませ。

お礼日時:2008/02/04 00:50

★例えば、1という《表記のあるキー》を押したとき、同時にコンソールに1と表示されますよね。


 この表示された1は、数字の1(16進で0x01)ではなく、文字の1(同 0x31)です。この対応にはアスキーコードが用いられており、「約束事」です(参考URL)。

★123456と6つのキーを押し(Enter)、プログラムでこれを文字列として取得すると、16進で 0x31,0x32,0x33,0x34,0x35,0x36,(0x00)というコードの連なりが得られます。

☆課題は、この文字列を「数字の10進数」に「変換」だよね。← 関数も用意されているし、・・簡単(サンプルコード略)。

>どのような意味、学習内容が含まれているのでしょうか?

★キーボードからの入力により数値を得る場合、プログラムには《どんなことが考慮されていなければ》を◆考えろということでしょう。

・テンキー以外のキーが押されたときの対応。
・6桁の確認。
・負の数、(実数)への対応。
・(入力終了処理)
・(short は、-32768~32767)

★要は、人間は誤りを犯すので、「正しく入力しろ(誤りを犯すな)」と【しつけ】るのではなく、「誤った入力は受け付けない」【しかけ】をプログラムに施せ、ということです。

☆直接キーボード入力を数値化する入力関数もありますが、これは使わない。← 理由判るよね。

参考URL:http://e-words.jp/p/r-ascii.html
    • good
    • 0

1.エラー処理(「10進数6桁」ではない入力があった場合)について学ぶ。


2.「キーボードからの入力」は「文字列として受け取る」ので「文字列を数値にする方法」を学ぶ。
3.「6桁の10進数」を格納するのに必要な数値型は何型なのかを学ぶ。
4.「数値を表示させる方法」を学ぶ。

>サンプルコードを元に説明していただけると助かります。
サンプルコードの提示は「課題の丸投げに対し、課題の解答を提供する行為」になるので駄目です。
    • good
    • 0

(1)文字を入力させる。


 ↓
(2)入力した文字に数字以外が有ったら、メッセージを表示して(1)に戻る。
 ↓
(3)入力した文字が5文字以下又は7文字以上の場合はメッセージを表示して(1)に戻る。
 ↓
(4)入力した文字を数字に変換する。
(桁あふれに注意する。)
 ↓
(5)変換した数字を表示する。

こんな感じでしょうね…。
    • good
    • 0

背景情報が全く分からないのでいろいろな解釈が可能です。



> キーボードから

「標準入力から」ではないので、環境依存のライブラリ関数を使用するか、ハードウェアを直接制御することを期待している可能性があります。

> 数字の10進数で表示させる。

これも「標準出力」に出力するのではなく「表示させる」ですので、表示デバイスを制御させようとしているのでしょうか。
あるいは、GUIで描画することを期待しているのでしょうか。
    • good
    • 0

問題そのままコードにすると、


char str[256];
scanf("%6s", str);
printf("%s", str);
か。でもこれって意味ないよなぁ…

という感じで、あなた同様、私も問題の日本語の理解に苦しみますが、
おそらく出題者は次のようなことを問いたかったのではないでしょうか?

「キーボードから文字列として6桁の10進数を受け取り、それを表示するときは文字列としてではなく数値として扱いなさい」
要するに、文字列として受け取った後、なんらかの変換処理をして数値データにしろ、ということだと。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!