学校からの課題で、自販機のプログラムを作っています。一応エラーも載せました。ここで詰まっています。助けてください。
仕様の内容はこちらです。
1.販売商品は5種類
2.すべて単価が異なる
3.つり銭はなるべく大きい額で払い出す。
4.つり銭用の金種は一万円、五千円、千円、五百円、百円、五十円、十円
5.投入可能なのは、一万円、五千円、千円、五百円、百円、五十円、十円(7つの繰り返し処理)
6.つり銭が払い戻しできないときはメッセージをだす。
7.売り切れの時はメッセージを出す。
8.商品選択に、取り消し含む。
この仕様で、動く自販機のコードを提供してください。 どれだけ考えてもいい案が出ず、糞詰まってます。 どうかお願いします。
お願いします。
Re: お願いします。
課題の丸投げは禁止です。
よく似た課題があるので、過去ログが参考になるかもしれません。
夏休みの課題
夏休みの課題 流れ図
助けてください
よく似た課題があるので、過去ログが参考になるかもしれません。
夏休みの課題
夏休みの課題 流れ図
助けてください
どこに載せましたか?uy さんが書きました:一応エラーも載せました。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: お願いします。
#include <iostream>
using namespace std;
int main()
{
int a, b, c, d, e;
int shinaban,zaiko,hinmei,tanka,suryo,kingaku,shiharai,oturi,eigiyoushiuriyou;
int shinaban_t[7] = { 0, 1, 2, 3, 4, 5, 9999 };
const char hinmei_t[6] = { "cola","milk","water","tea","orange" };
int tanka_t[6] = { 0,a,b,c,d,e };
int oturikinshu_t[7] = { 10000,5000,1000,500,100,50,10 };
int shiharaikinshu_t[7] = { 10000,5000,1000,500,100,50,10 };
printf("商品番号の入力\n");
scanf("%d", &shinaban);
printf("販売数量の入力\n");
scanf("%d",&suryo);
while (1)
{
//営業終了
for (shinaban = 0; shinaban_t[7] < 9999; shinaban++);
//品物1の計算
if (shinaban == 1)
//品物1の金額=品物1の単価*数量
kingaku = a*suryo;
//品物1の金額=支払
else if (kingaku == shiharai);
//品物1の金額<支払
if (kingaku < shiharai){
cout << "金額を支払ってください\n\n";
}
else{
cout << "金額が足りません\n\n";
}
//おつり=支払-品物1の金額
(oturi = shiharai - kingaku);
//品物2の計算
if ((shinaban == 2));
//金額2の金額=品物2の単価*数量
kingaku = b*suryo;
//品物2の金額=支払
if (kingaku == shiharai);
//品物2の金額<支払
if (kingaku < shiharai) {
cout << "金額を支払ってください\n\n";
}
else{
cout << "金額が足りません\n\n";
}
//おつり=支払-品物2の金額
oturi = shiharai - kingaku;
}
//品物3の計算
if (shinaban == 3) {
//金額3の金額=品物3の単価*数量
kingaku = c*suryo;
//品物3の金額=支払
if (kingaku == shiharai);
//品物3の金額<支払
if (kingaku < shiharai) {
cout << "金額を支払ってください\n\n";
}
else{
cout << "金額が足りません\n\n";
}
//おつり=支払-品物3の金額
oturi = shiharai - kingaku;
}
//品物4の計算
else if (shinaban == 4) {
//品物4の金額=品物4の単価*数量
kingaku = d*suryo;
//品物4の金額=支払
if (kingaku == shiharai);
//品物4の金額<支払
if (kingaku < shiharai) {
cout << "金額を支払ってください\n\n";
}
else{
cout << "金額が足りません\n\n";
}
//おつり=支払-品物4の金額
oturi = shiharai - kingaku;
}
//品物5の計算
else if (shinaban == 5); {
//品物5の金額=品物5の単価*数量
kingaku = e*suryo;
//品物5の金額=支払
if (kingaku == shiharai);
//品物5の金額<支払
if (kingaku < shiharai){
cout << "金額を支払ってください\n\n";
}
else{
cout << "金額が足りません\n\n";
}
//おつり=支払-品物5の金額
oturi = shiharai - kingaku;
}
//注文キャンセル
if (shinaban == 0)
//金額=0
kingaku = 0;
system("pause");
return 0;
}
エラー 1 error C2078: 初期化子の数が多すぎます。
エラー 2 error C2117: 'hinmei_t' : 指定された配列には、初期化子が多すぎます。
申し訳ありませんでした。 これらが自分の今の状況です。無茶苦茶な部分が多いのですが、これを動かせるようにしたいのです。
Re: お願いします。
とりあえず、前のトピックで指摘されたこと(コードの問題及びトピックをむやみに立ててしまうこと)を修正するべきだと思います。
本当は7行にしたかったのですが、残念ながら8行になってしまいました。
cでお金を投入します。「What?」と聞かれたら、投入するお金の金額を入力してください。
bで商品を購入します。「No?」と聞かれたら、購入する商品の番号を入力してください。
eで終了します。
C言語で書いてみました。「7つの繰り返し処理」は「7回回る繰り返し処理」と解釈しました。uy さんが書きました:この仕様で、動く自販機のコードを提供してください。
本当は7行にしたかったのですが、残念ながら8行になってしまいました。
t[]={160,200,100,120,150};z[]={10,10,10,10,10};m[7];c[7];a;b,n;A(){for(b=7;b--;
)for(;m[b]&&n>=c[b];m[b]--,n-=c[b])printf("pay %d\n",c[b]);}i;B(){for(i=-1;++i<
5;printf("No.%d:%d%s\n",i,t[i],z[i]?"":" soldout"));}C(){for(i=-1,b=7;b--;a-c[b
]||(i=b));}main(){for(i=-1,a=10;++i<7;a*=2+i%2*3)c[i]=a;for(;i-101;){for(printf
("money=%d c/b/e?",n);(i=getchar())==10;);i-99?i-98||(B(),puts("No.5:cancel\nN"
"o?"),scanf("%d",&a),0<=a&&a<5&&(n>=t[a]?z[a]?z[a]--,n-=t[a],A(puts("here you "
"are")),n&&puts("change pay failed"):puts("soldout"):puts("insufficient money")
)):(puts("What?"),C(scanf("%d",&a)),~i?n+=a,m[i]++:puts("no such money"));}}
bで商品を購入します。「No?」と聞かれたら、購入する商品の番号を入力してください。
eで終了します。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)