Задать вопрос
@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;
}
  • Вопрос задан
  • 92 просмотра
Подписаться 1 Простой Комментировать
Решение пользователя Rsa97 К ответам на вопрос (1)
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что автор сей поделки не в состоянии даже грамотно назвать переменные. А о декомпозиции и не слышал.
Тут переписывать надо минимум половину кода. Условия составлены неверно, в конце цикла путаница с присвоением переменных.
А по уму надо написать функцию, которая будет проверять одно число и возвращать true/false - подходит число под условие или нет. Потом просто в цикле эту функцию вызывать и считать количество подходящих чисел.
Ответ написан
Комментировать