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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2008, 15:52   #1
FLINT
 
Регистрация: 01.04.2008
Сообщений: 3
Вопрос Решите пожалуйста задания на Pascal'e! Темы: Рекурси и списки.

Здраствуйте, не могу решить (точнее незнаю) , а сдавать надо (ну не программист и не кодер я). Добрые программеры помогите...

№1 Рекурси.
const n=40;
type vector=array[1..n] of real;
Описать функцию min(x) для определения минимального элемента вектора x, введя вспомогательную рекурсивную функцию min1(k), находящую минимум среди последних элементов вектора x, начиная с k-го.

№2 Списки.
Описать процедуру или функцию, которая добавляет в конец списка L1 все элементы списка L2.

Надеюсь надежда есть... Можно прокомментировать еще
Спасибо за внимание..

Последний раз редактировалось FLINT; 01.04.2008 в 15:54.
FLINT вне форума Ответить с цитированием
Старый 03.04.2008, 12:43   #2
pil69
Пользователь
 
Регистрация: 03.04.2008
Сообщений: 11
По умолчанию

uses crt;
const n=40;
type vector=array[1..n] of real;
var x:vector;
i:integer;
function min(k:integer):integer;
var min1:integer;
begin
if k=1 then {это условие завершения рекурсии}
{при первом вызове функции k=40}
{при последующих вызовах к уменьшается на 1}
min:=x[1] else
begin min1:=min(k-1);
if x[k]<min1 then min:=x[k]
else min:=min1
end
end;
begin
randomize;clrscr;
for:=1 to 40 do
begin
x[i]:=random(400)-200;
write(x[i]:8)
end;
writeln; writeln('min=',min(40):4)
end.
pil69 вне форума Ответить с цитированием
Старый 03.04.2008, 14:24   #3
FLINT
 
Регистрация: 01.04.2008
Сообщений: 3
По умолчанию

Спасибо, ток не компилирует, кто подскажет...
FLINT вне форума Ответить с цитированием
Старый 03.04.2008, 14:40   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Никто, потому как телепаты отдела распознавания ошибок методом Ктулху сегодня в гостях у друидов. И их сейчас лучше не беспокоить.

А если вообще то вот хотя бы тут есть косяк for:=1 to 40 do без переменной-счетчика не работает
I'm learning to live...

Последний раз редактировалось Stilet; 03.04.2008 в 14:44.
Stilet вне форума Ответить с цитированием
Старый 03.04.2008, 14:44   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

подтверждаю, решение от pil69 верное.
(ну, только тип Integer надо было заменить на real
и в цикле заполнения массива пропущена переменная цикла i

чуть-чуть подправил (чтобы рекурсия проходила среди оставшихся элементов массива (вроде по заданию так более верно)
Код:
uses crt;
const n=40;
type vector=array[1..n] of real;
var x:vector;
i:integer;

function min(k:integer):real;
var min1:real;
begin
  if k=N then {это условие завершения рекурсии}
       {при первом вызове функции k=1}
       {при последующих вызовах K увеличиваем на 1}
    min:=x[N]
  else
  begin
    min1 := min(k+1);
    if x[k]<min1
      then min:=x[k]
      else min:=min1
  end
end;

begin
  randomize;
  clrscr;
  for i:=1 to 40 do
  begin
      x[i]:=random(800);
      write(x[i]:8:2, ' ');
      if (i mod 5) = 0 then {по пять чисел в строчке}
         WriteLn;
  end;
  writeln; writeln('min=',min(1):4:2)
end.
Подчёркиваю - сама идея (алгоритм) (с) pil69
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.04.2008, 16:32   #6
FLINT
 
Регистрация: 01.04.2008
Сообщений: 3
По умолчанию

Ну этот вариант уже компилирует, и выдает результат! Спасибо вам! Йиха!

Извините, а вторую задачку не кто не смотрел??

Последний раз редактировалось Alex21; 06.04.2008 в 22:16.
FLINT вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решите пожалуйста на Паскале Bagsi Помощь студентам 4 30.10.2007 22:36
Решите пожалуйста Bagsi Помощь студентам 1 28.10.2007 20:58
Решите пожалуйста две задачи. Bagsi Помощь студентам 5 26.10.2007 10:46