Userが何度も質問を繰り返せるような,下のようなプログラミングが書きたいのですが、どうしたらいいのわかりません。ちなみに私の書いたものでは、一度しか実行できません。わかる方がいらしゃったら教えてください。
--------------------------------------------------------------------
問題:ユーザーがセールスを入れると、$200+コミッション(セールスの9%)がサラリーとしてもらえる。
-------------------------------------------------------------------
実行例:
Enter Sales(-1to end):
Salary is:
Enter Slaes(1 to End):
-------------------------------------------------------
私の書いたプログラム:
#Include<iostream.h>
int main(){
int x;
float;
cout<<"Enter Sales in Dollars"
cin>>x;
y=200+x*0.09;
return 0;
}
No.4ベストアンサー
- 回答日時:
No.2での補足に書かれたプログラムですが、if文の位置が正しくありませんね。
-1の判定はxの入力の直後にすべきです。
-1が入力されたときはその後の計算や結果表示は不要なのですから。
私はいつもプログラミングするとき、すこし複雑になると何をどこにおいたらいいのかいまいちわかりません。
実行するときにWarnngがでるだけで、たいして大きい問題にならないので、違っているってわかってても、自分で調べるのにも限界があるし、学校の先生は適当にそれをみて点数しかつけないし、いったい何が悪いのかもよくわからないまま終わってしまいます。
Naturalさんのような、位置の違いを指摘して下さるとすごく助かるし、勉強になります。
No.3
- 回答日時:
#2のclow_hです。
warningの理由ですが、ちょいと調べたところ
yをfloat型で宣言しているの原因だと思われます。
なにやら、float型を計算するときはいったんdouble型へ変換し、再びfloat型へ戻すという作業をするらしいので、
float(32bit 符号付き浮動小数点数) < double(64bit 符号付き浮動小数点数)
の図式により、いったんdouble型に変換されて戻すときにDataが失われる可能性があることをコンパイラが警告していると思われます。
実行上では問題ないでしょう。何しろ使用していないと思われるビットで警告を受けているだけなので・・・
もしかしたら、まれにこの領域を使ってしまう可能性がある。というぐらいです。
この警告が出てくるのがいやだったら、yの宣言をdouble型にしましょう。
警告が消えるはずです。
参考URL
http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.4 …
(このページに、float、doubleのことが書いてありました)
下のURLはこのページのトップページです。
参考URL:http://www.pro.or.jp/~fuji/mybooks/cdiag/index.h …
ほんとにWarningきえました! ご丁寧なアドバイスどうもありがとうございました。
URLも細かいことはまだ理解できないのですが、参考になりました。
しかし、プログラミングは本当に少しのことで、いろいろ変わってしまうんですね
No.2
- 回答日時:
こんにちは
蛇足ながら、ご質問(追加のほう)へお答えします。
>なぜwhile (1),if ( x==-1)なのですか? その1とかー1は一体どういう意味なんでしょうか?
本を読めばわかると思いますが、
while文は条件式(カッコの中身)が真(0以外、条件に合う)なら実行し、偽(0、条件に合わない)なら実行しません。
よって、while(1)は条件に合うので{}の中を実行します。もちろんwhile(0)なら実行しません。
>また、Ifのときは、()に文を実行する文を入れるらしいのですが、なぜ(-1)なんですか
if(x==-1)はEnter Sales(-1to end): で指定されているとおり、-1を入力したら終了せよなので、 xの値が-1だったときと言う意味ですね。
x == -1 は xが-1と等しいときなので条件に合っています。
それでは、蛇足でしたが、がんばってください。
この回答への補足
ご回答ありがとうございました。プログラムを書き直すことができました。とりあえず下記のプログラムで実行はできるのですが、コンパイル上でWarningが出てしまいます。いろいろ試してみたのですが、いっこうにWarningが消えません。なぜ、これではDataが失われる可能性があるのでしょうか? 実行上では何の問題もなかったのですが、、、。
--------------------------------------------------------------------
#include <iostream.h>
int main()
{
int x;
float y;
while(1)
{
cout << "Enter Gross Sales in Dollars :";
cin >> x;
y= 200 + x * 0.09;
cout <<" The Commision of "<< x << " is " << y << endl;
if (x==-1
{
break;// Break loop only if x is -1
}
}
return 0;
}
-----------------------------------------------------------------
Compiling...
commision.cpp
A:\commision.cpp(37) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
commision.obj - 0 error(s), 1 warning(s)
No.1
- 回答日時:
ご質問文の様に「永遠に」ということでしたら永久ループを使用すればよいと思います。
但し、実行例には(-1 to end)という但し書きがついていますので、その条件に合致した場合はループを抜けるようにします。
恐らく課題か何かだと思いますのでプログラム全体はあえて記載しませんが、ヒントだけ…。
while(1){
・
・
・
if(x == -1){
break;
}
・
・
・
}
尚、lilnoさんのプログラムは実行例とメッセージ等が微妙に違っていますので御確認下さい。
恐らく写し間違いだと思いますが、floatの後にあるべきyが定義されていないこと、計算後の結果が表示されていないこと(Salary is:に続いて表示される筈)も指摘しておきます。
この回答への補足
naturalさん重大なHintありがとうございました。私はまだプログラミングの超初心者なので、いまいち本を読んでも、実際に自分で書くとかならず行き詰ってしまいます。
すごく基本な質問でごめんなさい。
なぜwhile (1),if ( x==-1)なのですか? その1とかー1は一体どういう意味なんでしょうか?
本にはwhile(0),この場合は条件文が0なのでcoutで始まる文は実行されない。と書いてあります。While(2)とかの場合もあるのですか?
また、Ifのときは、()に文を実行する文を入れるらしいのですが、なぜ(-1)なんですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA、ステップモードと...
-
Excel実行時エラー-2146959355?
-
パソコンに何かが勝手にダウン...
-
VB.NET自動起動について
-
PC版のMinecraftが応答なしにな...
-
VBA コントロールパネルの機能...
-
プログラム実行中に強制停止さ...
-
VB.NETでボタンのクリックイベ...
-
ブラウザはC言語?
-
パソコンのスクリーンセーバー...
-
管理者として実行を毎回すると...
-
A-oneのラベル屋さんについて
-
ラベル屋さんと言うソフトのフ...
-
【至急】サクラエディタのファ...
-
VisualStudioからVScodeへの移植
-
Emacsメニューの日本語化について
-
live2ch
-
フラッシュPlayerのバージョン...
-
Orbitの古いバージョンをダ...
-
XAMPPのインストールについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パソコンに何かが勝手にダウン...
-
Excel実行時エラー-2146959355?
-
PC版のMinecraftが応答なしにな...
-
管理者として実行を毎回すると...
-
VB.NETでボタンのクリックイベ...
-
パソコンのスクリーンセーバー...
-
Windows10 で青鬼を遊びたいの...
-
エクセルVBA、ステップモードと...
-
latexでのエラー
-
プログラム実行中に強制停止さ...
-
eclipseで、「ポート番号が使用...
-
COBOLで集団項目から符号...
-
EXCEL-VBAでコマンド...
-
ATOMは何の略ですか
-
実行中のVBSをタスクバーに非表...
-
起動したアプリケーションを最...
-
VBA コントロールパネルの機能...
-
VBA中断モードの解除
-
chatGPTで次々と質問をしていく...
-
pythonで他のアプリを操作する...
おすすめ情報