Сглаживание вещественного массива - C (СИ)
Формулировка задачи:
Описать функцию Smooth3(A, N), выполняющую сглаживание вещественного массива A размера N следующим образом: каждый элемент массива заменяется на его среднее арифметическое с соседними элементами (при вычислении среднего арифметического используются исходные значения соседних элементов). Массив A является входным и выходным параметром. С помощью этой функции выполнить пятикратное сглаживание данного массива A размера N, выводя результаты каждого сглаживания.
Решение задачи: «Сглаживание вещественного массива»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> void Smooth3(double A[], int N) { int j, m; for(m = 1; m <= 5; m++){ printf("\nSmooth array after %d passage:\n", m); for(j = 0; j < N; j++){ if(j == 0){ A[j] = (A[N - 1] + A[0] + A[1]) / 3.0; printf("%g\t", A[j]); } if(j == N - 1){ A[j] = (A[N - 2] + A[N - 1] + A[0]) / 3.0; printf("%g\t", A[j]); } if(j != 0 && j != N - 1){ A[j] = (A[j - 1] + A[j] + A[j + 1]) / 3.0; printf("%g\t", A[j]); } } } } int main() { int N, i; double *p = NULL; puts("Enter array size:"); scanf("%d", &N); p = malloc(N * sizeof(p)); puts("Enter value of elements:"); for(i = 0; i < N && printf("p[%d] = ", i) && 1 == scanf("%lf", &p[i]); i++); puts("Source array:"); for(i = 0; i < N; i++) printf("%g\t", p[i]); Smooth3( p, N); return 0; }
Объяснение кода листинга программы
- Включаются заголовочные файлы stdio.h и stdlib.h
- Определяется функция Smooth3, которая принимает два аргумента: массив A и его размер N.
- Внутри функции объявляются три переменные: j, m и A[].
- Задается цикл, который выполняется пять раз (от m = 1 до m <= 5).
- Внутри цикла выводится заголовок
Smooth array after m passage:
и переменная m. - Задается второй цикл, который выполняется от j = 0 до j < N.
- Внутри второго цикла проверяется условие j == 0. Если это так, то значение A[j] заменяется на (A[N - 1] + A[0] + A[1]) / 3.0 и выводится на экран.
- Если условие j == N - 1 выполняется, то значение A[j] заменяется на (A[N - 2] + A[N - 1] + A[0]) / 3.0 и выводится на экран.
- Если условие j != 0 && j != N - 1 выполняется, то значение A[j] заменяется на (A[j - 1] + A[j] + A[j + 1]) / 3.0 и выводится на экран.
- После выполнения второго цикла, выводится символ новой строки.
- В функции main() запрашивается размер массива и сохраняется в переменной N.
- Массив выделяется с помощью malloc() и сохраняется в переменной p.
- Запрашивается ввод значений элементов массива с помощью scanf().
- Выводится исходный массив с помощью цикла for и функции printf().
- Вызывается функция Smooth3() с аргументами p и N.
- Программа возвращает 0, завершая свою работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д