Мой цикл истекает и не отображает результат - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь изучить циклы while, и я написал код для добавления всех кратных заданного числа к трем цифрам, поэтому, если вы введете 5, это добавит 5,10,15,20,25 ... и т. Д.И они отображают общее количество этих чисел.Я думаю, что код написан довольно хорошо, но, как упоминается в заголовке, он застрял в цикле и не будет отображать результат.

вот мой код:

#include <iostream>
using namespace std;

double getnum()
{
    double num;
    cout << "What multiples are we adding? ";
    cin >> num;

    return num;
}

double calculate(double num)
{
    double cal;
    while (num < 100) ;
    {
        int cal = num;
        num++;
    }

    return cal;
}

double display(double num, double cal)
{
    cout << "the sum of multiples of " << num << " less than 100 are: "
         << cal << endl;
}

int main()
{

    double num = getnum();
    double cal = calculate(num);

    display(num, cal);

    return 0;
}

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Основная причина, по которой вы застряли в цикле, заключается в том, что вы не должны использовать ; после цикла while.Даже если вы удалили ;, вывод вашего кода не даст ожидаемого результата.Вы можете использовать следующий код в качестве альтернативы коду, предоставленному @ Chris

#include <iostream>
using namespace std;

double getnum()
{
    double num;
    cout << "What multiples are we adding? ";
    cin >> num;
    return num;
}

double calculate(double num)
{
    double cal = 0;
    int inc = num;
    while (num < 100)
    {
        cal += num;
        num += inc;
    }
    return cal;
}

double display(double num, double cal)
{
    cout << "Sum of multiples of " << num << " less than 100 are: ";
    cout << cal << endl;
}

int main()
{
    double num = getnum();
    double cal = calculate(num);
    display(num, cal);
    return 0;
}
0 голосов
/ 25 мая 2018
Цикл

A for намного лучше, чем цикл while в этом случае.Циклы while лучше для «делать что-то, пока не будет выполнено условие», тогда как for лучше для «делать что-то X раз».

В вашем коде есть ошибки, например

double calculate(double num)
{
    double cal; // <--- you return this
    while (num < 100) ; <---- this ; shouldn't be there and causes the loop to never terminate
    {
        int cal = num; <-- you just assign cal here? 
        num++;
    }

    return cal; <--- you return a variable that is never modified
}

Надеюсь, этот фрагмент поможет вам:

#include <iostream>

int main()
{

    int num = 0;
    std::cout << "What multiples are we adding? ";
    std::cin >> num;

    int sum = 0;
    for(int i = 1; i < 100; ++i)
    {
        if( i % num == 0) // modulus division, no remainder
        {
            std::cout << "Adding " << i << std::endl;
            sum += i;
        }
    }

    std::cout << "Sum = " << sum<< std::endl;;
    return 0;
}

Вывод:

./a.out
What multiples are we adding? 5
Adding 5
Adding 10
Adding 15
Adding 20
Adding 25
Adding 30
Adding 35
Adding 40
Adding 45
Adding 50
Adding 55
Adding 60
Adding 65
Adding 70
Adding 75
Adding 80
Adding 85
Adding 90
Adding 95
Sum = 950

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...