- 締切済み
入力値を読む方法
単刀直入に… ちょっと変わった計算機を作っているのですが、その方法がわからないのでお願いします。 既存値に初期値は0です。 ADDA 2(2を既存値に足す) MULA 2(2を既存値に掛ける) これらのインフォメーションをユーザーが入力し、最後にENDPという言葉をいれると プログラムが計算をする。というプログラムを作らないといけないのですが 作ることができません。入力値をどのようにして読むようにするのか、教えてください。 お願いします。 因みに、まだクラスなどは学習していません。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yatokesa
- ベストアンサー率40% (201/496)
補足に対する回答です。 --- switch ? case で比較できるのは "数値" です。 文字列の比較はできません。 例えば switch ("ABC") { case "DEF": ?; } としたとき、比較されるのは "ABC"を格納した領域の先頭アドレスと "DEF" を格納した領域の先頭アドレスとの比較になります。"ABC"は文字配列に置き換えても同じことです。 switch ('A') { case 'B': ?; } とするならば、シングルクォーテーションで囲まれた文字の文字コードとの比較になりますので、[結果的に]文字が比較されることになります。 #C/C++は、文字や文字列を「文字」として認識しません(できません)。全て数値として処理しなければなりません。それでは不便なので文字列処理関数やクラスがあります。 文字列を比較して処理を振り分けたい場合は strcmp (strncmp / strnicomp) 等で比較、if ? else で処理を分けるのが一般的です。
- yatokesa
- ベストアンサー率40% (201/496)
コンソールから文字列を取得する方法は scanf gets cin などです。 これらを調べてみてください。
補足
回答ありがとうございました。 それで、回答と今までのプログラムの経過からもうひとつ質問したいのですが cin でADDAなどを読み込んだ後に CASEで比較しようとすると、CASEで比較できるのは1文字か2文字までと出るんです… 宣言の仕方が悪いのでしょうか?