Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2012, 19:12   #1
Ev1L
Пользователь
 
Регистрация: 25.11.2010
Сообщений: 39
По умолчанию Оцените

Код:
#include <iostream>
#include "std_lib_facilities.h"
#include <Windows.h>
#include <ctime>

int menu (){
 cout << "Данная программа предлагает вам сыграть в простую игру камень, ножницы, бумага\n" << "Выберите (0) Камень (1) ножницы (2) Бумага (3) выход \n";
 int i;
 cin >> i;
 if( i!=0 && i!=1 && i!=2 && i!=3)
 {
cout << "вы ввели неверное значение<< ' '";
 }else return i;
};
using namespace std;

int main(){
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
while(true){
srand(time(0));
int a = rand() % 2;
int i;
i = menu();
vector<string>game;
game.push_back("Камень");
game.push_back("Ножницы");
game.push_back("Бумага");
if(i == 3){return 0;};
cout <<"Компьютер выбрал" << ' ' <<  game[a] << '\n';
switch(i){
case 0: if(i == a){cout << "Ничья\n";}
		else if(a == 1){cout << "Камень сильнее ножниц:" << ' ' << "вы выйграли\n";}
		else if(a == 2){cout << "Бумага заворачивает камень:" << ' ' << "вы проиграли\n";}break;
case 1:if(i == a){cout << "Ничья\n";}
	   else if(a == 0){cout << "Камень сильнее ножниц:" << ' ' << "вы проиграли\n";}
	   else if(a == 2){cout << "ножницы режут бумагу:" << ' ' << "вы выйграли \n"; }break;
case 2:if(i == a){cout << "Ничья\n";}
	   else if(a == 0){cout << "Бумага заворачивает камень:" << ' ' << "вы выйграли\n";}
	   else if(a == 1){cout << "ножницы режут бумагу:" << ' ' << "вы проиграли \n";}break;}
}
}
Оцените, и подскажите плз с помощью чего можно сократить switch конструкцию.. и в функции меню.. как можно сделать по другому проверку вводимого значения.

Заранее благодарен..

ЗЫ: я только учусь.
Ev1L вне форума Ответить с цитированием
Старый 06.10.2012, 19:19   #2
monolit111
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 95
По умолчанию

как минимум
Код:
if(i == a)
можно вывести из switch'a, проверять один раз, иначе - уже switch...

А вообще создай матрицу 3х3, типа
Цитата:
бумага Ножницы камень
бумага
ножницы
камень
пропиши результаты в нее(благо не много их), и просто возвращай ответ из ячейки этой матрицы..
Нечто типа:
Код:
cout<<Matrix[i][a]<<endl;
PS
А вообще это не совсем тот случай, что нечто, помимо выноса if (...=...), еще заслуживает внимания, как я считаю...

PS
про функцию
Код:
if (i<0 || i>3)
=)
monolit111 вне форума Ответить с цитированием
Старый 06.10.2012, 19:53   #3
Ev1L
Пользователь
 
Регистрация: 25.11.2010
Сообщений: 39
По умолчанию

дело в том что с матрицами я пока что не знаком, вот и интересуюсь как еще можно организовать конструкцию свич
Ev1L вне форума Ответить с цитированием
Старый 06.10.2012, 19:56   #4
monolit111
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 95
По умолчанию

В таком случае
Код:
if(i == a) cout << "Ничья\n";
else {
switch(i){
case 0:
		 if(a == 1){cout << "Камень сильнее ножниц:" << ' ' << "вы выйграли\n";}
		else if(a == 2){cout << "Бумага заворачивает камень:" << ' ' << "вы проиграли\n";}break;
case 1:
	    if(a == 0){cout << "Камень сильнее ножниц:" << ' ' << "вы проиграли\n";}
	   else if(a == 2){cout << "ножницы режут бумагу:" << ' ' << "вы выйграли \n"; }break;
case 2:
	   else if(a == 0){cout << "Бумага заворачивает камень:" << ' ' << "вы выйграли\n";}
	   else if(a == 1){cout << "ножницы режут бумагу:" << ' ' << "вы проиграли \n";}break;}
}
}
будет вполне достаточно...
monolit111 вне форума Ответить с цитированием
Старый 06.10.2012, 20:00   #5
Ev1L
Пользователь
 
Регистрация: 25.11.2010
Сообщений: 39
По умолчанию

спасибо)))
Ev1L вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц