Вывести на экран таблицу всех значений суммы, которые не выходят за пределы диапазона типа long int - C (СИ)
Формулировка задачи:
Пользователь вводит целое положительное число n. Найти значение суммы
1^1 + 2^3 + 3^5 + 4^7 + ... + n^(2n-1)
Вывести на экран таблицу всех значений суммы, которые не выходят за пределы
диапазона типа long int. Таблица должна помещаться на экране в нескольких столбцах
так, чтобы при распечатывании она занимала меньше места на бумаге
помогите пожалуйста
Решение задачи: «Вывести на экран таблицу всех значений суммы, которые не выходят за пределы диапазона типа long int»
textual
Листинг программы
#include <stdio.h> #define LIMIT 2147483647 int degree(int number) { return number * 2 - 1; } int average(long int a, long int b, long int c) { if ( (a * b)/2 + c/2 < LIMIT/2 ) { return 1; } return 0; } long int value(int number, long int sum) { int max = degree(number); for ( long int i = 1, temp = number; i < max; i++ ) { if ( average(number, temp, sum) ) { number *= temp; } else { return LIMIT - sum;; } } return number; } int main() { long int sum = 0; for ( int i = 1, sum = 0; sum < LIMIT; i++ ) { sum += value(i, sum); printf("%ld\n", sum); } return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с входными-выходными данными и константами.
- Объявление константы LIMIT, которая представляет из себя максимально возможное значение для типа long int.
- Реализация функции degree, которая принимает целое число и возвращает его удвоенное значение, за исключением случаев, когда число является нечетным - в этом случае функция возвращает число, умноженное на -1.
- Реализация функции average, которая принимает три целых числа и возвращает 1, если их сумма не превышает половину значения константы LIMIT, иначе возвращает 0.
- Реализация функции value, которая принимает целое число и сумму, затем использует функцию degree для определения максимального значения числа, которое не будет превышать LIMIT. Затем, в цикле, функция проверяет каждое значение, начиная с 1 и до найденного максимального значения, на предмет того, превышает ли сумма чисел значение LIMIT. Если сумма превышает LIMIT, функция возвращает LIMIT - текущая сумма.
- В функции main создается переменная sum, которая инициализируется нулем.
- Затем в цикле, для каждого числа от 1 до LIMIT, вызывается функция value, результат которой добавляется к переменной sum. После этого число и сумма выводятся на экран.
- Цикл продолжается до тех пор, пока значение переменной sum не превысит LIMIT.
- Программа заканчивает работу и возвращает 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д