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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2013, 20:55   #1
Alex Joy
Пользователь
 
Регистрация: 26.05.2013
Сообщений: 13
По умолчанию Процедуры и функции с параметрами массивами. Pascal

Описать процедуру Smooth (A, N), которая заменяет каждый элемент настоящего
массива A размера N на его среднее арифметическое со своими соседями
(«Сглаживания массива»). Массив А - входной и выходной параметр, N -
входной параметр. С помощью этой процедуры выполнить пятикратное
сглаживания этого массива, выводя на экран результаты каждого
сглаживания.
Alex Joy вне форума Ответить с цитированием
Старый 26.05.2013, 21:50   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,318
По умолчанию

Задача слово в слово - http://programmersforum.ru/showthread.php?t=217255.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 26.05.2013, 22:14   #3
Alex Joy
Пользователь
 
Регистрация: 26.05.2013
Сообщений: 13
По умолчанию

Спасибо, брат! А что нужно добавить?
Alex Joy вне форума Ответить с цитированием
Старый 26.05.2013, 22:58   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,318
По умолчанию

Осталось объявить парочку переменных, запросить n и сам массив, вызвать пару раз процедуру и вывести получившийся массив.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 26.05.2013, 23:16   #5
Alex Joy
Пользователь
 
Регистрация: 26.05.2013
Сообщений: 13
По умолчанию

Код:
for i:=1 to n do
Readln(tarray[i]);
Потом его обработать 
for i:=1 to n do
tarray[i]:=smoot(tarray);
Так?

Всё равно не получается.

Последний раз редактировалось Stilet; 27.05.2013 в 08:30.
Alex Joy вне форума Ответить с цитированием
Старый 26.05.2013, 23:36   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,318
По умолчанию

Давайте весь получившийся код.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 26.05.2013, 23:41   #7
Alex Joy
Пользователь
 
Регистрация: 26.05.2013
Сообщений: 13
По умолчанию

  1. Program L16;
  2. const
  3. n = 20;
  4. type
  5. tarray = array[1..n] of real;
  6. procedure smooth(var a: tarray; const n: integer);
  7. var
  8. i: integer;
  9. t, tmp: real;
  10. begin
  11. if n <= 1 then exit;
  12. t := a[1];
  13. a[1] := (a[1] + a[2]) / 2;
  14. for i := 2 to n - 1 do
  15. begin
  16. tmp := (t + a[i] + a[i + 1]) / 3;
  17. t := a[i];
  18. a[i] := tmp;
  19. end;
  20. a[n] := (t + a[n]) / 2;
  21. end;
  22. var i:integer;
  23. A:array [1..n] of real;
  24. begin
  25. for i:=1 to n do
  26. Readln(A[i]);
  27. for i:=1 to n do
  28. A[i]:=smooth(A);
  29. end.

Не получается в конце...((
Alex Joy вне форума Ответить с цитированием
Старый 26.05.2013, 23:47   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,318
По умолчанию

Код:
const
  n = 5;

type
  tarray = array [1 .. n] of real;

procedure smooth(var a: tarray; const n: integer);
var
  i: integer;
  t, tmp: real;
begin
  if n <= 1 then
    exit;
  t := a[1];
  a[1] := (a[1] + a[2]) / 2;
  for i := 2 to n - 1 do
  begin
    tmp := (t + a[i] + a[i + 1]) / 3;
    t := a[i];
    a[i] := tmp;
  end;
  a[n] := (t + a[n]) / 2;
end;

var
  i: integer;
  a: tarray;

begin
  for i := 1 to n do
    Readln(a[i]);
  smooth(a, n);
  for i := 1 to n do
    write(a[i]:0:3, ' ');
  Readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 27.05.2013, 00:02   #9
Alex Joy
Пользователь
 
Регистрация: 26.05.2013
Сообщений: 13
По умолчанию

Спасибо, огромное!

Теперь полностью красивая программка.)
Код:
	
program L16;

{$APPTYPE CONSOLE}

uses
SysUtils;

const
n = 5;

type
tarray = array [1 .. n] of real;

procedure smooth(var a: tarray; const n: integer);
var
i: integer;
t, tmp: real;
begin
if n <= 1 then
exit;
t := a[1];
a[1] := (a[1] + a[2]) / 2;
for i := 2 to n - 1 do
begin
tmp := (t + a[i] + a[i + 1]) / 3;
t := a[i];
a[i] := tmp;
end;
a[n] := (t + a[n]) / 2;
end;

var
i: integer;
a: tarray;

begin
for i := 1 to n do
begin
writeln('Vvedi ', i ,' chislo: ');
Readln(a[i]);
end;
smooth(a, n);
for i := 1 to n do
write(a[i]:0:3, ' ');
Readln;
end.

Последний раз редактировалось Stilet; 27.05.2013 в 08:31.
Alex Joy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедуры и функции с параметрами массивами. Pascal. Мария163 Помощь студентам 6 25.05.2013 23:44
Процедуры и функции с параметрами строками. Pascal Мария163 Помощь студентам 1 25.05.2013 17:56
Функции и процедуры в работе с массивами Qwerty91 Помощь студентам 0 13.12.2009 14:22
Функции с числовыми параметрами(Pascal) TAB Помощь студентам 1 07.05.2008 20:50