Сглаживание вещественного массива - 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;
}

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

  1. Включаются заголовочные файлы stdio.h и stdlib.h
  2. Определяется функция Smooth3, которая принимает два аргумента: массив A и его размер N.
  3. Внутри функции объявляются три переменные: j, m и A[].
  4. Задается цикл, который выполняется пять раз (от m = 1 до m <= 5).
  5. Внутри цикла выводится заголовок Smooth array after m passage: и переменная m.
  6. Задается второй цикл, который выполняется от j = 0 до j < N.
  7. Внутри второго цикла проверяется условие j == 0. Если это так, то значение A[j] заменяется на (A[N - 1] + A[0] + A[1]) / 3.0 и выводится на экран.
  8. Если условие j == N - 1 выполняется, то значение A[j] заменяется на (A[N - 2] + A[N - 1] + A[0]) / 3.0 и выводится на экран.
  9. Если условие j != 0 && j != N - 1 выполняется, то значение A[j] заменяется на (A[j - 1] + A[j] + A[j + 1]) / 3.0 и выводится на экран.
  10. После выполнения второго цикла, выводится символ новой строки.
  11. В функции main() запрашивается размер массива и сохраняется в переменной N.
  12. Массив выделяется с помощью malloc() и сохраняется в переменной p.
  13. Запрашивается ввод значений элементов массива с помощью scanf().
  14. Выводится исходный массив с помощью цикла for и функции printf().
  15. Вызывается функция Smooth3() с аргументами p и N.
  16. Программа возвращает 0, завершая свою работу.

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


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

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

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