как я могу сделать вычитание в al oop? - PullRequest
0 голосов
/ 06 августа 2020

Здравствуйте, я изучаю c ++, и я делаю свое первое упражнение, но у меня проблема с l oop Я хочу выполнить вычитание, но оно застряло на том же номере, например, я хочу посоревноваться в этом упражнении, но здоровье всегда застряло на отметке 93. Может кто-нибудь мне с этим помочь?

#include <iostream>

using namespace std;
class fight {
  public:
    int hero, vilian;
  void f(int h) {
    energy = h;
  }
  void k(int a) {
    ch = a;
    if (a == 1) {
      cout << "Fight";
    }
  }
  void f5(int a, int b) {
    int storage, key, p = 5;
    energy = a;
    energy1 = b;
    cout << "\nHero Energy" << a;
    cout << "\nVilian energy" << b;
    cout << "\nPress one to fight";
    do {
      cin >> key;
      storage = hero - energy1;

      cout << "\nVillian health" << storage;

      if (storage == 0) {
        break;
        cout << "\nYou won";
      }

    } while (key == 1);
  }

  private:
    int energy, energy1, ch;
};

int main() {
  fight f3;
  f3.hero = 7;
  f3.vilian = 5;
  f3.k(1);
  f3.f5(100, 100);

}

1 Ответ

0 голосов
/ 06 августа 2020

В вашем l oop вы устанавливаете только переменные key и storage. storage зависит только от hero и energy1, поэтому, учитывая формулу и значения в тесте, вы вычисляете storage как 7 - 100, что равно -93. Значения hero и energy1 никогда не меняются, поэтому storage никогда не меняется. ЕСЛИ я должен был угадать, что вы хотите, вы хотите установить storage как energy1 и истощать его на hero на каждой итерации l oop. Как только это будет ниже нуля, вы закончите игру:

storage = energy1;
do {
  cin >> key;
  storage = storage - hero;

  cout << "\nVillian health" << storage;

  // Note this is an inequality, 7 is not divisible by 100
  // so storage will never be exactly 0.
  if (storage <= 0) { 
    break;
    cout << "\nYou won";
  }

} while (key == 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...