C ++: остановка последнего приращения в моей программе Fizz Buzz - PullRequest
0 голосов
/ 02 мая 2020

Таким образом, в рамках задачи по написанию кода я попытался создать программу Fizz Buzz на C ++, не глядя на решение. Для тех из вас, кто не знает, это должно быть al oop, которое заменяет любое число, делимое на 3, на Fizz, любое число, делимое на 5, на Buzz, и любое число, делимое на оба на FizzBuzz:

1
2
Fizz
4
Buzz
6
7
8
Fizz
Buzz
11
Fizz

Я почти там с приведенным ниже кодом, однако, я немного раздражен тем, что хотя я хочу, чтобы l oop полностью остановился на 100, способ, которым я настроил программа означает, что дополнительный 1 добавляется к i после окончания l oop. Есть ли способ остановить мою программу FizzBuzz от 100?

#include <iostream>

using namespace std;

int main () {

for (int i = 1; i < 100; ++i){

if (i % 3 == 0 && i % 5 == 0){
    cout << "FizzBuzz\n";
    i = i + 1;
}

if (i % 3 == 0){
  cout << "Fizz\n";
  i = i + 1;
}

if (i % 5 == 0){
  cout << "Buzz\n";
  i = i + 1;
}

cout << i << "\n";

}

}

Ответы [ 2 ]

2 голосов
/ 02 мая 2020

Поэтому я немного исправил ваш код:

int main()
{
    for (int i = 1; i < 101; ++i)
    {
       if (i % 3 == 0 && i % 5 == 0)
            cout << "FizzBuzz\n";
        else if (i % 3 == 0)
            cout << "Fizz\n";
        else if (i % 5 == 0)
            cout << "Buzz\n";
        else
            cout << i << "\n";

    }

}

Каждый раз, когда вы делаете i = i + 1;, это бесполезно, потому что ваш l oop делает это. Кроме того, я поставил все это if else цепочка, а не if if цепочка. Таким образом, только в заявлении будет выполняться в любой момент времени. Также изменил макс на 101 вместо 100, поскольку для l oop остановится на 101 и не выведет результат 101.

Надеюсь, это поможет:)

0 голосов
/ 02 мая 2020

В c ++ переменные имеют время жизни , называемое их областью действия, и по истечении срока их жизни они удаляются. I, определенный в объявлении l oop, имеет область действия, ограниченную закрывающей скобкой "}" для for l oop. В связи с этим, переменная i не существует после l oop, только во время. Однако в приведенном вами коде проблема заключается в том, что вы увеличиваете i несколько раз. В вашем for для l oop вы увеличиваете i каждый раз, когда выполняется тело для l oop, но в этом теле вы увеличиваете i, когда оно делится на 5 или 3, или на то и другое, или ни на что. Вы можете удалить все из i = i + 1; заявления и удалить большинство ошибок.

...