@BRA_CHO
Студент 1 курса

Почему не работает счетчик?

На заданном промежутке чисел нужно посчитать количество чисел, которые делятся на каждую из своих цифр (на ноль делить нельзя). За количество таких чисел, которые делятся на каждую из своих цифр, отвечает переменная n. Вопрос: почему n всегда выводит 1?

Вот код программы:

#include <iostream>
using namespace std;
int main()
{
	setlocale(LC_ALL, "rus");
	int a, b, l, g, f = 1, s, n = 0;
	cout << "Введите начало отрезка АВ:" << endl;
	cin >> a;
	s = a;
	cout << "Введите конец отрезка АВ:" << endl;
	cin >> b;
	l = abs(b - a);
	cout << "Длина отрезка АВ: " << l << endl;
	for (int i = 0; i <= l; i++)
	{
		while(f == 1)
		{
			g = s % 10;
			if ((g != 0) || (a % g == 0))
			{
				f = 1;
			}
			if((g == 0) || (a % g != 0))
			{
				f = 0;
			}
			s = s / 10;
			if (s == 0)
			{
				n = n + 1;
				f = 0;
			}

		}
		a = a + 1;
		a = s;
		f = 1;

	}
	cout << n;
	return 0;
}
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что автор сей поделки не в состоянии даже грамотно назвать переменные. А о декомпозиции и не слышал.
Тут переписывать надо минимум половину кода. Условия составлены неверно, в конце цикла путаница с присвоением переменных.
А по уму надо написать функцию, которая будет проверять одно число и возвращать true/false - подходит число под условие или нет. Потом просто в цикле эту функцию вызывать и считать количество подходящих чисел.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы