Другие языки программирования и технологии

Что не так с программой? Вначале работает нормально, но результат бесконечный, С++

http://pastebin.com/aJJWwzhy
Найти натуральные числа из промежутка от К до L, у которых кол-во делителей превышает заданное М.
Задача про Буратино: Буратино дали 5 яблок. 2 яблока Буратино съел сам, 1 отдал Мальвине. Сколько яблок у Буратино? Думаешь, 2? Нет. Правильный ответ - на 2 больше, чем было у него до начала задачи.
Это я к чему? К тому, что ПЕРЕМЕННЫЕ НАДО ОБНУЛЯТЬ. Особенно в C/C++. Особенно аккумуляторы. А если один сумматор используется несколько раз - то перед каждым использованием. Это все - про переменную d.
И про бесконечный результат - не ври, значение "бесконечность" (+INF) может возникать только у действительных переменных, но никак не у целых.
Да, и вывод числа вынеси из внутреннего цикла, в нем только d должно накапливаться.
ВГ
Вячеслав Губанов
91 753
Лучший ответ
#include <iostream>
#include <string>
using namespace std;
int main() {
    wcout.imbue(locale("rus_rus.866"));
    unsigned k;
    wcout << L"Введите K: "; cin >> k;
    unsigned l;
    bool x;
    do {
        x = true;
        wcout << L"Введите L: "; cin >> l;
        if (l > k) x = false;
        else wcout << L"Вы ошиблись, повторите ввод\n\a";
    } while (x);
    unsigned m;
    wcout << L"Введите заданное M: "; cin >> m;
    unsigned n, count;
    for (n = k; n <= l; n++) {
        count = 0;
        for (unsigned x = 1; x <= n; x++) if (!(n % x)) ++count;
        if (count > m) cout << n << ' ';
    }
    wcout << L"\nКонец! \n";
    cin.get(); cin.get();
    return 0;
}
Rovshan Kerimov
Rovshan Kerimov
98 767
а я пристыжено промолвлю: а уж если не обнулять сумматоры, то глобальными объявлять - обнулит по-умолчанию....