Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2017, 16:30   #1
ParkerVans
Пользователь
 
Регистрация: 22.10.2017
Сообщений: 25
По умолчанию Описать процедуру Smooth(A, N), выполняющую сглаживание вещественного массива A размера N следующим образом: каждый элемент - PascalABC.NET

Здравствуйте! Проверьте пожалуйста решение задачи (процедуры)
Описать процедуру Smooth(A, N), выполняющую сглаживание вещественного массива A размера N следующим образом: каждый элемент массива, кроме первого и последнего, заменяется на среднее арифметическое двух соседних элементов (при вычислении среднего арифметического используются исходные значения соседних элементов); первый и последний элементы не меняются. Массив A является входным и выходным параметром. С помощью этой процедуры выполнить пятикратное сглаживание данного массива {МA} размера N, выводя результаты каждого сглаживания.
Код:
Program sglashivanie;
type mas=array[1..100] of real;
procedure Smooth(var a:mas;n:byte);
var i:byte;
    x,y,z:real;
begin
i:=2;
x:=a[1];
y:=a[2];
z:=a[3];
repeat//повторять набор действий
a[i]:=(x+y+z)/3;
x:=y;
y:=z;
i:=i+1;
z:=a[i+1];
until i=n;//выполнять до условия
end;
procedure Print(var a:mas;n,k:byte);
var i:byte;
begin
writeln('Сглаживание ',k);
for i:=1 to n do
write(a[i]:0:2,' ');
writeln;
end;
var a:mas;
    n,i:byte;
begin
repeat
write('Введите количество элементов массива N=');
readln(n);
until n in [1..100];//выполнять до условия
writeln('Массив:');
for i:=1 to n do
 begin
  Write(i,' элемент массива=');
   Readln(A[i]);//ввод элементов массива
 end;
writeln;
for i:=1 to 5 do
 begin
  Smooth(a,n);
  Print(a,n,i);
 end;
end.
ParkerVans вне форума Ответить с цитированием
Старый 07.11.2017, 16:55   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

в условии же двух соседних, а не трех
Код:
x:=a[1];
for i:=2 to n-1 do begin
  y:=a[i];
  a[i]:=(x+a[i+1])/2;
  x:=y;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Описать процедуру ShiftLeft3(A, B, C), выполняющую левый циклический сдвиг Rufer Паскаль, Turbo Pascal, PascalABC.NET 1 16.08.2016 21:51
Описать процедуру sort(x), упорядочивающую по неубыванию числа массива x raviti21 C# (си шарп) 0 23.11.2014 11:21
Описать структуру в PascalABC.net serge-first Помощь студентам 1 03.03.2014 12:48
одномерный массив размера n. Найти максимальный элемент массива среди элементов массива,после первого отрицательного (Паскаль) Элиза12345 Паскаль, Turbo Pascal, PascalABC.NET 7 13.11.2012 16:03
Преобразовать массив W следующим образом: положительные элементы i-ой строки массива W умножить на Xi, i =1,2,..N. sev48fire Помощь студентам 0 08.06.2012 13:50