Сформировать массив X(N) , N-й член которого определяется формулой X(N)=1/N! - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Сформировать массив X(N) , N-й член которого определяется формулой X(N)=1/N!
поможет кто?

Решение задачи: «Сформировать массив X(N) , N-й член которого определяется формулой X(N)=1/N!»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
double * func(double * arr, size_t count) {
    double fact = 1.0;
    size_t i;
    
    for ( i = 0; i < count; ++i ) {
        fact *= i + 1.0;
        arr[i] = 1.0 / fact;
    }
    
    return arr;
}
 
void dump(const double * arr, size_t count, size_t afterpoint) {
    while ( count-- )
        printf("%.*f\n", afterpoint, *arr++);
}
 
int main(void) {
    size_t count;
    
    while ( printf("Number of elements: ") && scanf("%lu", &count) == 1 && count ) {
        double * arr = malloc(sizeof(double) * count);
        if ( ! arr ) {
            fprintf(stderr, "Memory error!\n");
            exit(1);
        }
        dump(func(arr, count), count, count);
        free(arr);
    }
    
    exit(0);
}

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

В этом коде:

  1. func(arr, count) — функция, которая принимает массив arr и количество элементов в массиве count. Использует формулу X(N)=1/N! для заполнения массива arr.
  2. dump(arr, count, afterpoint) — вспомогательная функция, которая выводит элементы массива arr с указанным количеством знаков после запятой afterpoint.
  3. main(void) — главная функция программы, которая считывает количество элементов для массива с помощью функции scanf(). Затем выделяет память под массив с помощью функции malloc(). Вызывает функцию func() для заполнения массива, а затем функцию dump() для его вывода. После вывода массива освобождает память с помощью функции free(). Цикл завершается, когда пользователь вводит ноль. Пожалуйста, обратите внимание, что этот код не обрабатывает некоторые возможные ошибки, такие как ввод пользователем недопустимого значения для count или сбой при выделении памяти.

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

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