![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?e8efa67)
今、ファイル処理などを使わずに、つり銭があるかどうかを判断するプログラムの勉強をしています。
table[].maisuは、ちゃんと構造体を使っています。
おかしなところがあったら、どんなことでも
よいので教えてください!!
turi = 500 - 150;
do{
if(turi>= 500 && table[0].maisu >0 ){
s = turi - 500;
}
else if(turi >=100 &&
table[1].maisu>0 ){
s = turi - 100;
}
else if(turi >=50 &&
table[2].maisu >0 ){
s = turi - 50;
}
else if(turi >=10 &&
table[3].maisu >0 ){
s = turi - 10;
}
else {
printf("つり銭がない\n");
break;
}
}while(s != 0);
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_04.png?e8efa67)
No.3ベストアンサー
- 回答日時:
全体の構成があまりよくありません。
do
{
if(500円で支払い可能) 500円(1枚で)支払
else if (100円で支払い可能) 100円(1枚で)支払
else if ( 50円で支払い可能) 50円(1枚で)支払
else if ( 10円で支払い可能) 10円(1枚で)支払
else 釣り銭がない
}
while(釣り銭を払いきるまで)
という流れですね。
まず、
if(turi >= 500 && table[0].maisu > 0 ){
という比較は、「構造体がわかりません」と表明しているようなものです。
これは、
if (turi => table[0].kingaku && table[0].maisu > 0) が正解。
もちろん、
turi - 500; も、 turi - table[0].kingaku; です。
こうすると、全体がループになるのが見えてくると思います。
ループにしない場合、おそらく、「カットアンドペースト」でソフトを書くことになると思いますが、直すべきところが直してなかったりということが多発します。
事実、質問のところのソースと、No.1 の方への補足の内容とは、矛盾していますね。
また、処理は、もっと自然に
while(500円で支払い可能){ 500円で支払い; }
while(100円で支払い可能){ 100円で支払い; }
while( 50円で支払い可能){ 50円で支払い; }
while( 10円で支払い可能){ 10円で支払い; }
if(残り != 0) 釣り銭が足りない
とした方がよいでしょう。
実際には、これをループにして、
for(i = 0; i < tableの数; i++)
while(table[i] の内容で支払い可能)
{ table[i] の内容で支払い処理; }
if (残り != 0) 釣り銭が足りない
としたほうがわかりやすいでしょう。
何かいい感じな気がします。ちょっと、やってみます。
どうも、ありがとうございます。
ちなみに、中間あたりで書かれていたことは、わかっております。500と数字を入れたほうがわかりやすいと思ったのですが、違いますよね。今度から、ちゃんと書きます!
No.2
- 回答日時:
> struct MONEY{
> int kingaku;
> int maisu;
> }table[6];
とすると、つり銭の勘定のたびに残数を減らして"いない"んじゃない?
ごもっともです。ただ、それをやらずともお釣りはでるはず(100枚以上とか)なので、試しているところです
お忙しい中、ありがとうございました!!
No.1
- 回答日時:
table[].maisuの意味がわからんのでコメントできません。
この回答への補足
すみません。
#include <stdio.h>
struct GOODS{
char syouhin[20];
int nedan;
int zaiko;
}data[3];
struct MONEY{
int kingaku;
int maisu;
}table[6];
main(){
int menu;
int botan;
int charge_kin = 0;
int kaimono,t;
int turi=0;
int i = 0;
int w = 0;
int a[6];
/*商品名 金額 在庫*/
struct GOODS data[3]= {
{"1.コーラ" ,120, 0},
{"2.ファンタ" ,120, 5},
{"3.オレンジ" ,150,10},
};
/*硬貨の金額 残数 */
struct MONEY table[6]={
{5000, 10},
{1000, 10},
{500, 50},
{100, 50},
{50, 50},
{10, 0},
};
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラムの時、フローチャートはどうなりますか?図でお願いします。 int main(void) { 1 2022/10/01 22:45
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- PHP php エラー 2 2022/10/23 16:43
- C言語・C++・C# C言語 3 2022/11/09 13:27
- JavaScript jsで、配列内の文章を改行する際どのようにすればいいですか。 3 2022/07/05 20:40
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) vba GetAsyncKeyState関数について 1 2023/08/24 12:08
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TABLEのセルの中の文字を行単位...
-
テーブルとテーブルの間隔について
-
tableの位置がIEとその他ブラウ...
-
フォームタグのプルタウンの隙...
-
<th>タグを使っても太字にしな...
-
HTMLのテーブルをExcelにCopy&P...
-
HTML5で、テーブル内tdタグの高...
-
ラインを端から端まで画面いっ...
-
CSS スタイルを子要素の子要素...
-
CSSで特定のテーブルだけに...
-
テーブル内のセル間にスペース...
-
テーブルデータを折り返して表...
-
FC2のHPに「FC2投票」がうまく...
-
つり銭のプログラムについて
-
table表を横に並べる際の間隔指定
-
同じ幅指定のつもりなのに、ブ...
-
CSSを使ってテーブルでセル全体...
-
テーブルの行を折りたたみたい...
-
tableにul,または,olを入れられ...
-
テーブルタグの中にdivを含めて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TABLEのセルの中の文字を行単位...
-
テーブルとテーブルの間隔について
-
<th>タグを使っても太字にしな...
-
CSSで特定のテーブルだけに...
-
table表を横に並べる際の間隔指定
-
HTML5で、テーブル内tdタグの高...
-
HTML tableのセルにtextareaを...
-
(HTML)Tableを任意の位置に置...
-
同じ幅指定のつもりなのに、ブ...
-
<fieldset>タグについて
-
画面幅に合わせてテーブルのカ...
-
tableを縦に続けるとtable間の...
-
html5のテーブル内でdivのタブ...
-
テーブル内のセル間にスペース...
-
ホームページのテキストを折り...
-
TR タグの表示・非表示を一括で...
-
tableの位置がIEとその他ブラウ...
-
textareaの外側の文字が下付き...
-
テーブルの高さを100%にしたけ...
-
ラインを端から端まで画面いっ...
おすすめ情報