2019年05月27日一覧

献立決めるプログラム作成④

こんばんは。

前回作成した処理を適用させ、一通りプログラムを完成させました!

 

#include <iostream>
#include <string>
using namespace std;

string Maindish(string&);
string Sidedish(string&);
string Salad (string&);
string Soup(string&);
string Desert(string&);

int main() {
	int buf;
	string maindish;
	string sidedish;
	string salad;
	string soup;
	string desert;

	bool maindishflug = false;	//主菜のフラグ
	bool sidedishflug = false;	//副菜のフラグ
	bool saladflug = false;	//サラダのフラグ
	bool soupflug = false;	//スープのフラグ
	bool desertflug = false;	//デザートのフラグ

	//メインメニュー画面
	cout << "メニューを選択する画面です。" << endl;
	while (1) {
		cout << "選びたいジャンルの値を押してください。" << endl;
		if (maindishflug == false) {
			cout << "1:主菜" << endl;
		}
		else if (maindishflug == true){
			cout << "1:主菜  ->  " << maindish << endl;
		}
		if (sidedishflug == false) {
			cout << "2:副菜" << endl;
		}
		else if (sidedishflug == true) {
			cout << "2:副菜  ->  " << sidedish << endl;
		}
		if (saladflug == false) {
			cout << "3:サラダ" << endl;
		}
		else if (saladflug == true) {
			cout << "3:サラダ  ->  " << salad << endl;
		}
		if (soupflug == false) {
			cout << "4:スープ" << endl;
		}
		else if (soupflug == true) {
			cout << "4:スープ ->  " << soup << endl;
		}
		if (desertflug == false) {
			cout << "5:デザート" << endl;
		}
		else if (desertflug == true) {
			cout << "5:デザート ->  " << desert << endl;
		}
		cout << "----------------" << endl;

		//入力部
		cin >> buf;
		if (buf != 1 && buf != 2 && buf != 3 && buf != 4 && buf != 5) {
			cout << "1~5で再入力してください。" << endl;
		}

		switch (buf) {
		case 1:
			Maindish(maindish);
			maindishflug = true;
		case 2:
			Sidedish(sidedish);
			sidedishflug = true;
		case 3:
			Salad(salad);
			saladflug = true;
		case 4:
			Soup(soup);
			soupflug = true;
		case 5:
			Desert(desert);
			desertflug = true;
		default:
			break;
		}
	}
}

//主菜の選択メニュー
string Maindish(string& maindish) {
	int buf;
	string maindish1 = "肉";
	string maindish2 = "魚";
	string maindish3 = "麺";
	cout << "主菜は何系が良いですか?" << endl;
	while (1) {
		cout << "選びたいメニューの値を押してください。" << endl;
		cout << "1:肉" << endl;
		cout << "2:魚" << endl;
		cout << "3:麺" << endl;
		cout << "----------------" << endl;
		cin >> buf;
		if (buf != 1 && buf != 2 && buf != 3) {
			cout << "1~3で再入力してください。" << endl;
		}

		switch (buf) {
		case 1:
			maindish = maindish1;
			return maindish;
		case 2:
			maindish = maindish2;
			return maindish;
		case 3:
			maindish = maindish3;
			return maindish;
		default:
			break;
		}
	}
}
	//副菜の選択メニュー
	string Sidedish(string& sidedish) {
		int buf;
		string sidedish1 = "ごはん";
		string sidedish2 = "煮物";
		string sidedish3 = "揚げ物";
		cout << "副菜は何系が良いですか?" << endl;
		while (1) {
			cout << "選びたいメニューの値を押してください。" << endl;
			cout << "1:ごはん" << endl;
			cout << "2:煮物" << endl;
			cout << "3:揚げ物" << endl;
			cout << "----------------" << endl;
			cin >> buf;
			if (buf != 1 && buf != 2 && buf != 3) {
				cout << "1~3で再入力してください。" << endl;
			}

			switch (buf) {
			case 1:
				sidedish = sidedish1;
				return sidedish;
			case 2:
				sidedish = sidedish2;
				return sidedish;
			case 3:
				sidedish = sidedish3;
				return sidedish;
			default:
				break;
			}
		}
	}
	//サラダの選択メニュー
	string Salad(string& salad) {
		int buf;
		string salad1 = "野菜盛り合わせ";
		string salad2 = "茹で野菜";
		string salad3 = "野菜スティック";
		cout << "サラダは何系が良いですか?" << endl;
		while (1) {
			cout << "選びたいメニューの値を押してください。" << endl;
			cout << "1:野菜盛り合わせ" << endl;
			cout << "2:茹で野菜" << endl;
			cout << "3:野菜スティック" << endl;
			cout << "----------------" << endl;
			cin >> buf;
			if (buf != 1 && buf != 2 && buf != 3) {
				cout << "1~3で再入力してください。" << endl;
			}

			switch (buf) {
			case 1:
				salad = salad1;
				return salad;
			case 2:
				salad = salad2;
				return salad;
			case 3:
				salad = salad3;
				return salad;
			default:
				break;
			}
		}
	}
	//スープの選択メニュー
	string Soup(string& soup) {
		int buf;
		string soup1 = "みそ汁";
		string soup2 = "コンソメスープ";
		string soup3 = "シチュー";
		cout << "スープは何系が良いですか?" << endl;
		while (1) {
			cout << "選びたいメニューの値を押してください。" << endl;
			cout << "1:みそ汁" << endl;
			cout << "2:コンソメスープ" << endl;
			cout << "3:シチュー" << endl;
			cout << "----------------" << endl;
			cin >> buf;
			if (buf != 1 && buf != 2 && buf != 3) {
				cout << "1~3で再入力してください。" << endl;
			}

			switch (buf) {
			case 1:
				soup = soup1;
				return soup;
			case 2:
				soup = soup2;
				return soup;
			case 3:
				soup = soup3;
				return soup;
			default:
				break;
			}
		}
	}
	//デザートの選択メニュー
	string Desert(string& desert) {
		int buf;
		string desert1 = "アイス";
		string desert2 = "フルーツ";
		string desert3 = "お菓子";
		cout << "デザートは何系が良いですか?" << endl;
		while (1) {
			cout << "選びたいメニューの値を押してください。" << endl;
			cout << "1:アイス" << endl;
			cout << "2:フルーツ" << endl;
			cout << "3:お菓子" << endl;
			cout << "----------------" << endl;
			cin >> buf;
			if (buf != 1 && buf != 2 && buf != 3) {
				cout << "1~3で再入力してください。" << endl;
			}

			switch (buf) {
			case 1:
				desert = desert1;
				return desert;
			case 2:
				desert = desert2;
				return desert;
			case 3:
				desert = desert3;
				return desert;
			default:
				break;
			}
		}
	}

しかし、長い!

そして、なんかダラダラしている!

これいろいろと突っ込みどころありますよね。
現時点で思いついたのが、

  1. クラスを作ったらプログラムが見やすくなる?
  2. 同じような関数ありすぎ。
  3. フラグは配列にすれば、変数の数を抑えられる?
  4. 献立メニューの変更をするのにプログラム書き換え面倒。

他にもありそうですが、上記部分の改善をしていきたいと思います。


スポンサーリンク
広告1
広告1