Не работает программа С++
#include <iostream>
#include <cmath>
#include<iomanip>
using namespace std;
int main()
{
setlocale(LC_ALL, "Ukrainian");
int k, a1, a2, a3,a4, i;
k = 0;
i = 999;
while (i < 10000)
{
do
{
i += 1;
a1 = i / 100;
a2 = i % 100;
} while (a1 != a2);
cout << i <<" "<<k++ << endl;
}
cout << "Кількість чотирьохзначних чисел, що представляють собою повторювані фрагменти послідовності цифр, дорівнює: " << k << endl;
}
Условие: Найти все четырехзначные числа, представляющие собой повторяющиеся фрагменты последовательности цифр (например, 1212, 4545) и их количество.
То есть программа вывводит все нужные числа и номер но не показывает конечный вывод, оно как будто зависает и проводится очень долгая диагностика. Если заменить этот вывод в цикле на простой расчет К++, как мне и нужно, программа вообще не будет ничего выводить.
*я знаю что можно было использовать только if в for, но мне нужно сделать программу именно со вложенным циклом.
Ответы (1 шт):
Во вложенном цикле вы находите последнее число i == 9999, после чего продолжаете работу в том же цикле, но уже с пятизначными числами, а поскольку больше такого числа вы не найдете, цикл будет крутиться до переполнения и прихода к числу 1010 снизу :)
Непонятно, зачем вам вложенный цикл вообще, но если уж так хочется чесать левое ухо правой рукой, проведя ее под левой ногой — то замените } while (a1 != a2); на
} while (a1 != a2 && i < 10000);
и соответствующим образом подправьте следующую за ней строку вывода — выводить только при a1 == a2.