Вывести на экран таблицу всех значений суммы, которые не выходят за пределы диапазона типа 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;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с входными-выходными данными и константами.
  2. Объявление константы LIMIT, которая представляет из себя максимально возможное значение для типа long int.
  3. Реализация функции degree, которая принимает целое число и возвращает его удвоенное значение, за исключением случаев, когда число является нечетным - в этом случае функция возвращает число, умноженное на -1.
  4. Реализация функции average, которая принимает три целых числа и возвращает 1, если их сумма не превышает половину значения константы LIMIT, иначе возвращает 0.
  5. Реализация функции value, которая принимает целое число и сумму, затем использует функцию degree для определения максимального значения числа, которое не будет превышать LIMIT. Затем, в цикле, функция проверяет каждое значение, начиная с 1 и до найденного максимального значения, на предмет того, превышает ли сумма чисел значение LIMIT. Если сумма превышает LIMIT, функция возвращает LIMIT - текущая сумма.
  6. В функции main создается переменная sum, которая инициализируется нулем.
  7. Затем в цикле, для каждого числа от 1 до LIMIT, вызывается функция value, результат которой добавляется к переменной sum. После этого число и сумма выводятся на экран.
  8. Цикл продолжается до тех пор, пока значение переменной sum не превысит LIMIT.
  9. Программа заканчивает работу и возвращает 0, что означает успешное выполнение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы