Создание цикла с циклами, где их количество задается с клавиатуры - C (СИ)
Формулировка задачи:
Добрый вечер!
Сразу к делу...
Человек пишет число (к примеру 7)...
Нужно сделать так чтобы создались 7 циклов (один внутри другого) со своими переменными и т.д. и в результате посчитало суму всех чисел с перебора...
Помогите пожалуйста(
Решение задачи: «Создание цикла с циклами, где их количество задается с клавиатуры»
textual
Листинг программы
/*Функция SumDigits вычисляет сумму цифр числа, переданного ей в качестве аргумента*/
int SumDigits (int number)
{
int sum = 0; /*Переменная в которой будет накапливаться сумма*/
do
{
sum += number % 10; /*Прибавляем к sum остаток от деления number на 10 (т.е. последнюю цифру)*/
}while (number /= 10); /*Делим number на 10, целую часть от деления помещаем в number же. Повторяем все до
тех пор, пока number не станет равным нулю*/
return sum; /*Возвращаем найденную сумму*/
}
int S (int dig)
{
int i, j, count = 0, end = 10; /*Объявляем переменные для счетчика цикла, счетчика найденных чисел
и для верхнего предела цикла*/
if (dig < 1) /*Проверяем разрядность числа, если она меньше единицы возвращаем 0*/
return 0;
/*Последнее число разрядности n будет равно 10^n - 1. В первом цикле находим 10^n, -1 представим во втором
цикле как строгое неравенство i < end*/
for (i = 1; i < dig; i++)
end *= 10;
for (i = 0; i < end; i++)
for (j = 0; j < end; j++)
if ( SumDigits(i) == SumDigits(j))
count++;
return count; /*Возвращаем найденное количество чисел*/
}
Объяснение кода листинга программы
- Первый шаг - ввод числа с клавиатуры, значение которого будет использоваться в функции.
- Функция
SumDigitsпринимает число в качестве аргумента и возвращает сумму его цифр. - Внутри функции используется цикл
do-while, который будет выполняться до тех пор, пока число не станет равным нулю. - Внутри цикла происходит прибавление остатка от деления числа на 10 к переменной
sum. - Затем число делится на 10 и целая часть от деления присваивается обратно в переменную
number. - После выполнения цикла функция возвращает сумму цифр числа.
- Следующая функция
Sпринимает число в качестве аргумента и возвращает количество чисел с заданным количеством цифр. - Внутри функции объявляются переменные
i,j,countиend, которые будут использоваться в циклах. - Затем происходит проверка на разрядность числа. Если разрядность меньше единицы, функция возвращает 0.
- Затем происходит вычисление верхнего предела для второго цикла. Он равен 10 в степени разрядности числа минус 1.
- Первый цикл вычисляет 10 в степени разрядности числа.
- Второй цикл проверяет, есть ли числа с одинаковым количеством цифр.
- Если найдено совпадение, переменная
countувеличивается на 1. - После выполнения второго цикла функция возвращает количество найденных чисел.
- Значение переменной
countбудет использовано в качестве результата выполнения функции.