Почему эти циклы while не смешивают числа, которые я им даю? - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь составить простую программу, которая проходит через каждое число, начиная с 2, и проверяет, является ли это число Армстронга или нет. Это значит, что я должен получить совпадение на 153. Однако я пытался заставить эти 2 вложенных цикла работать вместе, но я ничего не вижу.

Я пытался иметь 2 цикла. Я пытался иметь только одну петлю. Я знаю, что было бы проще запросить ввод, но я хочу пройтись по каждому номеру и разорвать цикл, когда найду первое встречающееся число.

#include <stdio.h>
#include <math.h>
#include <stdbool.h>

int main()
{
    int remainder_, cubic_power, sum_, placeholder;

    bool check = true;
    int i=2;
    while(check){
        placeholder = i;
        printf("i is %d and placeholder is %d \n", i, placeholder);
        while(placeholder!=0){
            remainder_ = placeholder%10;
            cubic_power = remainder_*remainder_*remainder_;
            sum_+=cubic_power;

            placeholder = placeholder/10;
            Sleep(1500);
         }
    printf("Number being test %d \n", placeholder);
    printf("Sum is %d \n", sum_);
    if (sum_ == i){
        printf("%d is your number \n");
        bool check=false;
    }
    i++;
    printf("i is %d \n", i);

}

}

Это должно сломаться на 153, но это не так.

1 Ответ

0 голосов
/ 22 октября 2019

Инициализируйте sum_ каждый раз, когда вы начинаете тестировать новый номер.

В bool check=false;, удалите bool. Это определяет новый экземпляр чего-то с именем check, отличающийся от предыдущего элемента с именем check, поэтому он не меняет значение предыдущего check. Удаление типа bool делает его оператором присваивания, который изменяет предыдущий объект, а не определение нового объекта.

В printf("%d is your number \n"); вставьте , i после строки формата и перед закрытиемСкобки.

Включите предупреждения и ошибки компилятора и обратите на них внимание.

...