こんばんは。
前回作成した処理を適用させ、一通りプログラムを完成させました!
#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;
}
}
}
しかし、長い!
そして、なんかダラダラしている!
これいろいろと突っ込みどころありますよね。
現時点で思いついたのが、
- クラスを作ったらプログラムが見やすくなる?
- 同じような関数ありすぎ。
- フラグは配列にすれば、変数の数を抑えられる?
- 献立メニューの変更をするのにプログラム書き換え面倒。
他にもありそうですが、上記部分の改善をしていきたいと思います。