economistlarry Ответов: 3

Могу ли я получить код для этой проблемы на C++?


Ник присоединяется к фальсифицированному турниру "камень-ножницы-бумага". В каждой игре он знает, что его противник собирается играть, и заранее предопределен исход (он выигрывает, проигрывает или рисует). Пожалуйста, помогите ему определить, что он должен играть для каждого хода.

входной формат
Первая строка ввода-n, количество игр. Далее следует список из n строк в виде “C S”. C - это либо "O”, либо “[]”, либо" 8<”, что означает, что противник будет играть в камень, бумагу или ножницы соответственно для этого хода. S-это либо “W”, либо “L”, либо “D”, что означает заранее определенный результат для этого хода-Боб выигрывает, проигрывает или рисует соответственно.

выходной формат
Выведите n строк, либо “O”, либо “[]”, либо “8<”, разделенных запятыми, ход Боба должен играть для этого хода.

Входной Сигнал Образца
n = 5
игры = ["8< W", "[] W", "O D", "8< L", "O W"]
Пример Вывода
O,8<,O,[],[]
Объяснение
В первой игре соперник будет играть ножницами, а Боб должен выиграть, поэтому он играет в рок.
В третьей партии соперник будет играть в рок, а Боб должен сыграть вничью со своим противником, поэтому он тоже играет в рок.
В четвертой партии соперник будет играть ножницами, но Боб должен проиграть, поэтому он играет бумагой.

Что я уже пробовал:

Я попробовал на C++,но это не сработало.
int main()
{
const char* ROCK = "O";
const char* PAPER = "[]";
const char* SCISSORS = "8<";
 
const char* CurrentMove (char C, char S)
{
   const char* Result = 0;
 
   switch (S)     // Outer decision, based upon the desired result
   {
   case 'W':      // Win
      switch (C)  // Inner decision, based upon the opponent's move
      {
      case 'O':   Result = PAPER;      break;   // ROCK[0]
      case '[':   Result = SCISSORS;   break;   // PAPER[0]
      default:    Result = ROCK;                // Must be SCISSORS[0]
      }
   case 'L':      // Lose
      switch (C)  // Inner decision, based upon the opponent's move
      {
      case 'O':   Result = SCISSORS;   break;   // ROCK[0]
      case '[':   Result = ROCK;       break;   // PAPER[0]
      default:    Result = PAPER;               // Must be SCISSORS[0]
      }
   default:       // Must be Draw
      switch (C)  // Inner decision, based upon the opponent's move
      {
      case 'O':   Result = ROCK;       break;   // ROCK[0]
      case '[':   Result = PAPER;      break;   // PAPER[0]
      default:    Result = SCISSORS;            // Must be SCISSORS[0]
      }
   }
   return Result;
}
}

economistlarry

Мой код находится ниже, но я не знаю, почему он не работает.

Patrice T

вашего кода здесь нет.
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.

economistlarry

тап_п()
{
const char* ROCK = "O";
const char* PAPER = "[]";
const char* ножницы = "8<";

const char* CurrentMove (char C, char S)
{
const char* Result = 0;

переключатель (Ы) // внешнее решение, основанное на желаемом результате
{
случай 'W': // Win
switch (C) // внутреннее решение, основанное на движении противника
{
case 'O': Result = PAPER; break; // ROCK[0]
case '[': Result = ножницы; перерыв; // бумага[0]
по умолчанию: Результат = камень; // должны быть ножницы[0]
}
случай 'L': // проигрыш
switch (C) // внутреннее решение, основанное на движении противника
{
case 'O': Result = SCISSORS; break; // ROCK[0]
case '[': Result = ROCK; break; // PAPER[0]
по умолчанию: Результат = бумага; // должны быть ножницы[0]
}
по умолчанию: // должна быть ничья
switch (C) // внутреннее решение, основанное на движении противника
{
case 'O': Result = ROCK; break; // ROCK[0]
case '[': Result = PAPER; break; // PAPER[0]
по умолчанию: Результат = ножницы; // должны быть ножницы[0]
}
}
возвращаемый результат;
}
}

economistlarry

Можете ли вы сказать мне,где что-то не так, мой ввод или код

economistlarry

Я ввожу как это:
n = 5
игры = ["8< W", "[] W", "O D", "8< L", "O W"]

economistlarry

но ничего не появляется в качестве вывода

Andreas Gieriet

1. Вы должны научиться задавать вопросы таким образом, чтобы мы понимали, в чем заключается ваша проблема. Утверждение типа "не работает" слишком расплывчато. Что вы делаете, и какой симптом говорит вам, что это не работает? Каково ожидаемое поведение?

2. Вы не можете ожидать, что кто-то будет компилировать и выполнять ваш код. Предположим, что один только читает ваш код и пытается понять его смысл. См. также пункт 1 выше: мы не знаем, каково ожидаемое поведение...

3. глядя на ваш код, я должен предположить, что ваш код не компилируется: вы определяете функцию *внутри* основной функции. C/C++ этого не допускает.

4. Если код не компилируется, вы не сможете его выполнить и, следовательно, не можете ожидать никаких "результатов" от (не) выполнения программы ;-)

Овации
Энди

3 Ответов

Рейтинг:
1

OriginalGriff

Нет. Мы не делаем домашнее задание: оно задано не просто так. Она существует для того, чтобы вы думали о том, что вам сказали, и пытались понять это. Он также существует для того, чтобы ваш наставник мог определить области, в которых вы слабы, и сосредоточить больше внимания на корректирующих действиях.

Попробуйте сами, возможно, вы обнаружите, что это не так сложно, как вы думаете!

Если вы столкнетесь с конкретной проблемой, то, пожалуйста, спросите об этом, и мы сделаем все возможное, чтобы помочь. Но мы не собираемся делать все это для вас!


Рейтинг:
0

David O'Neil

int main() {
   play(paper);
   play(something);
   play(scissors);
   play(paper);
   return 0;
   }

Надеюсь, это поможет вам начать "язык в щеку" или, может быть, это сделает вас достаточно злым, чтобы попробовать самостоятельно, и показать этой дыре (будучи мной), какой я придурок, добившись успеха. Или, по крайней мере, сделать хороший удар по решению.


Рейтинг:
0

Patrice T

Цитата:
Могу ли я получить код для этой проблемы на C++?
...
Я попробовал на C++,но это не сработало.

Этот сайт предназначен для программистов, поэтому мы помогаем вам исправить ваш код, но не делаем вашу домашнюю работу.
Поэтому покажите свой код и объясните, в чем проблема.
Домашние задания-это упрощенные версии тех задач, которые вам придется решать в реальной жизни. цель это обучение и практикующий.

Мы не делаем вашу домашнюю работу.
Домашнее задание не предназначено для проверки ваших навыков просить других людей сделать вашу работу, оно предназначено для того, чтобы заставить вас думать и помочь вашему учителю проверить ваше понимание курсов, которые вы прошли, а также проблем, которые вы испытываете при их применении.
Любая ваша неудача поможет учителю выявить ваши слабости и наметить меры по исправлению положения.
Любая ваша неудача поможет вам узнать, что работает, а что нет, это называется "методом проб и ошибок".
Так что попробуйте, перечитайте свои уроки и приступайте к работе. Если вы застряли на конкретной проблеме, покажите свой код и объясните эту точную проблему, мы можем помочь.

Как программист, ваша задача-создавать алгоритмы это решает конкретные проблемы, и вы не можете полагаться на кого-то другого, чтобы вечно делать это за вас, поэтому есть время, когда вам придется научиться этому. И чем скорее, тем лучше.
Когда вы просто просите решение, это похоже на попытку научиться водить машину, обучая кого-то другого.
Создание алгоритма - это в основном поиск математики и необходимая адаптация к вашей реальной проблеме.

[Обновление]
- Этот код не работает, потому что это не C++, вы не можете определить функцию внутри другой функции.
- Этот код не работает, потому что он не обрабатывает никакой пользовательский ввод или не отображает результат.
- Этот код не работает, потому что CurrentMove есть вложенные switch и вам тоже нужно это сделать break для наружного применения switch.