Сформировать массив 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); }
Объяснение кода листинга программы
В этом коде:
- func(arr, count) — функция, которая принимает массив
arr
и количество элементов в массивеcount
. Использует формулуX(N)=1/N!
для заполнения массиваarr
. - dump(arr, count, afterpoint) — вспомогательная функция, которая выводит элементы массива
arr
с указанным количеством знаков после запятойafterpoint
. - main(void) — главная функция программы, которая считывает количество элементов для массива с помощью функции
scanf()
. Затем выделяет память под массив с помощью функцииmalloc()
. Вызывает функциюfunc()
для заполнения массива, а затем функциюdump()
для его вывода. После вывода массива освобождает память с помощью функцииfree()
. Цикл завершается, когда пользователь вводит ноль. Пожалуйста, обратите внимание, что этот код не обрабатывает некоторые возможные ошибки, такие как ввод пользователем недопустимого значения дляcount
или сбой при выделении памяти.