お願いします。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
uy

お願いします。

#1

投稿記事 by uy » 11年前

学校からの課題で、自販機のプログラムを作っています。一応エラーも載せました。ここで詰まっています。助けてください。
仕様の内容はこちらです。
1.販売商品は5種類
2.すべて単価が異なる
3.つり銭はなるべく大きい額で払い出す。
4.つり銭用の金種は一万円、五千円、千円、五百円、百円、五十円、十円
5.投入可能なのは、一万円、五千円、千円、五百円、百円、五十円、十円(7つの繰り返し処理)
6.つり銭が払い戻しできないときはメッセージをだす。
7.売り切れの時はメッセージを出す。
8.商品選択に、取り消し含む。

この仕様で、動く自販機のコードを提供してください。 どれだけ考えてもいい案が出ず、糞詰まってます。  どうかお願いします。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: お願いします。

#2

投稿記事 by みけCAT » 11年前

課題の丸投げは禁止です。

よく似た課題があるので、過去ログが参考になるかもしれません。
夏休みの課題
夏休みの課題 流れ図
助けてください
uy さんが書きました:一応エラーも載せました。
どこに載せましたか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

uy

Re: お願いします。

#3

投稿記事 by uy » 11年前

コード:

#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' : 指定された配列には、初期化子が多すぎます。

申し訳ありませんでした。 これらが自分の今の状況です。無茶苦茶な部分が多いのですが、これを動かせるようにしたいのです。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: お願いします。

#4

投稿記事 by みけCAT » 11年前

そのコードはyuさんのパクリですか?
同一人物であれば、名前の統一をお願いします。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

yu

Re: お願いします。

#5

投稿記事 by yu » 11年前

ごめんなさい。名前を打ち間違ってました。 yuさんと同一です。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: お願いします。

#6

投稿記事 by みけCAT » 11年前

とりあえず、前のトピックで指摘されたこと(コードの問題及びトピックをむやみに立ててしまうこと)を修正するべきだと思います。
uy さんが書きました:この仕様で、動く自販機のコードを提供してください。
C言語で書いてみました。「7つの繰り返し処理」は「7回回る繰り返し処理」と解釈しました。
本当は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"));}}
cでお金を投入します。「What?」と聞かれたら、投入するお金の金額を入力してください。
bで商品を購入します。「No?」と聞かれたら、購入する商品の番号を入力してください。
eで終了します。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る