0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 52

Реализовать рекурсивный алгоритм поиска минимального элемента массива

17.04.2015, 13:27. Показов 2498. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Реализовать рекурсивный алгоритм поиска минимального элемента массива.
Приведем сначала функцию, вычисляющую минимум из двух чисел:
Code
1
2
3
4
5
6
алг цел Мин (арг цел а, б)
нач
    если а>б то знач :=б
             иначе знач:=а
    все
кон
Теперь напишем функцию, которая находит минимум среди первых н элементов массива т[1:нтаб]. При этом, если н больше двух, то будем считать результатом минимум из двух чисел - т[н] и минимального числа из первых (н-1) элементов массива (рекурсивный вызов).

Code
1
2
3
4
5
6
7
8
9
алг цел Минимум (арг цел н, цел таб т[1:нтаб])
нач цел i
    если н=2   //н- номер последнего элемента в рассматриваемой
            // части массива
    то знач :=Мин (т[н][1])
    иначе  //рекурсивный вызов функции Минимум
        знач:=Мин(т[н],Минимум(н-1))
    все
кон
Чтобы найти минимум всех элементов массива, надо обратиться к функции Минимум, указав в качестве первого аргумента длину массива нтаб.

Добавлено через 9 минут
пожалуйста помогите с этими двумя задачами
Основной алгоритм:
Code
1
2
3
4
5
6
7
8
9
10
алг Картинка
нач цел н,хс,ус,в, вещ к
    хс:=МаксХ/2; ус:=МаксУ/2
    в:=100         //половина длины базового квадрата
    н:=5; к:=0.4
    поз(хс-в,ус-в) //Точка, в которой начинается рисунок
    Сторона(хс-в,ус-в,хс+в,ус-в,н,к)
    Сторона(хс+в,ус-в,хс+в,ус+в,н,к)
    Сторона(хс-в,ус+в,хс-в,ус-в,н,к)
кон
вторая наверху
заранее спасибо
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.04.2015, 13:27
Ответы с готовыми решениями:

Рекурсивный метод для поиска максимального и минимального элемента массива
Всем привет. Помогите доработать программу: Нужно написать рекурсивный метод для поиска максимального и минимального элемента массива...

Используя алгоритм поиска минимального элемента, выполнить сортировку произвольного массива из 10 элементов
Используя алгоритм поиска минимального элемента, выполнить сортировку произвольного массива из 10 элементов. В процессе выполнения...

Рекурсивный поиск минимального нечетного элемента в массива
Описать рекурсивную функцию min(x,n) (где x - массив, n - размер) поиска минимального нечетного элемента. Помогите решить пожалуйста)

16
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
17.04.2015, 14:59
1.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
program Project2;
 
{$APPTYPE CONSOLE}
 
uses SysUtils;
const nmax=100;
type mas=array[1..nmax] of integer;
function min1(a,b:integer):integer;
begin
if a<b then min1:=a else min1:=b
end;
function min2(n:integer;a:mas):integer;
begin
if n=2 then min2:=min1(a[n],a[1])
else min2:=min1(a[n],min2(n-1,a));
end;
 
var a:mas;
    n,i:byte;
begin
randomize;
repeat
write('n>1  n=');
readln(n);
until n in [2..nmax];
writeln('Massiv');
for i:=1 to n do
 begin
  a[i]:=random(51);
  write(a[i]:4)
 end;
writeln;
write('Minimum=',min2(n,a));
readln
end.
вторую не понял что рисуем.
0
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 52
18.04.2015, 14:20  [ТС]
второй алгоритм это любая картинка которая половина длины базового квадрата и точкой где начинается рисунок

Добавлено через 21 час 16 минут
ну так что поможете или вы непоняли
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
18.04.2015, 15:07
Конечно не понял, как и ты.

Добавлено через 45 секунд
Цитата Сообщение от Dualpower Посмотреть сообщение
ну так что поможете
А ты начни, может и удастся закончить.

Добавлено через 6 минут
Вот написано
Цитата Сообщение от Dualpower Посмотреть сообщение
половина длины базового квадрата
а рисуется только 3 стороны..
А ты пишешь
Цитата Сообщение от Dualpower Посмотреть сообщение
это любая картинка
И чо?

Добавлено через 14 минут
Вот как я понял. Хотя и не врубился зачем это.
Цитата Сообщение от Dualpower Посмотреть сообщение
поз(хс-в,ус-в) //Точка, в которой начинается рисунок
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
uses graph;
const b=100;
      n=5;
      k=0.4;
function storona(xc,yc,b,n:integer;k:real):integer;
begin
if n=0 then storona:=0
else
 begin
  line(xc-b,yc-b,xc+b,yc-b);
  line(xc+b,yc-b,xc+b,yc+b);
  line(xc-b,yc+b,xc-b,yc-b);
  dec(n);
  storona:=storona(xc,yc,round(b*k),n,k);
 end;
end;
var xc,yc:integer;
begin
initgraph(xc,yc,'');
xc:=getmaxX div 2;
yc:=getmaxY div 2;
storona(xc,yc,b,n,k);
readln
end.
Добавлено через 14 минут
А если использовать начальную точку и рисовать квадраты, то так.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
uses graph;
const b=100;
      n=5;
      k=0.4;
function storona(xc,yc,b,n:integer;k:real):integer;
begin
if n=0 then storona:=0
else
 begin
  moveto(xc-b,yc-b);
  lineto(xc+b,yc-b);
  lineto(xc+b,yc+b);
  lineto(xc-b,yc+b);
  lineto(xc-b,yc-b);
  dec(n);
  storona:=storona(xc,yc,round(b*k),n,k);
 end;
end;
var xc,yc:integer;
begin
initgraph(xc,yc,'');
xc:=getmaxX div 2;
yc:=getmaxY div 2;
storona(xc,yc,b,n,k);
readln
end.
0
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 52
18.04.2015, 16:00  [ТС]
кстати а что со второй программой это функция или dll или что? uses graph это системное или надо прописать

извини пожалуйста мой косяк я невнимательно прочитал задание:
Построить рекурсивное изображение, которое подчиняется следующим правилам. На каждой из сторон внутреннего (самого большого) квадрата нарисованы 3 стороны малого квадрата, на каждой из сторон которого также изображены 3 стороны еще меньшего квадрата и т.д. (подобные фигуры называются фракталами). Алгоритм, в котором выполняются соответствующие действия на некотором отрезке (с координатами концов xa,ya,xb,yb), может быть оформлен следующим образом:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
алг Сторона (цел xa,ya,xb,yb,н, вещ к)
нач цел xp,yp,xq,yq,xr,yr,xs,ys,dx,dy
    если н= 0 то линия (xb,yb)
        иначе
            dx:=0.5*(1-k)*(xb-xa)  //к- коэффициент уменьшения
            dy:=0.5*(1-k)*(yb-ya) // размера квадратов
            xp:=xa+xd; yp:=ya+dy
            xs:=xb-dx; ys:=yb-dy
            xq:=xp+(ys-yp); yq:=yp-(xs-xp)
            xr:=xq+(xs-xp); yr:=yq+(ys-yp)
            линия (xp,yp)
            Сторона (xp,yp,xq,yq,н-1,k)
            Сторона (xq,yq,xr,yr,н-1,k)
            Сторона (xr,yr,xs,ys,н-1,k)
            линия (xb,yb)
        все
кон
Основной алгоритм:
Code
1
2
3
4
5
6
7
8
9
10
алг Картинка
нач цел н,хс,ус,в, вещ к
    хс:=МаксХ/2; ус:=МаксУ/2
    в:=100         //половина длины базового квадрата
    н:=5; к:=0.4
    поз(хс-в,ус-в) //Точка, в которой начинается рисунок
    Сторона(хс-в,ус-в,хс+в,ус-в,н,к)
    Сторона(хс+в,ус-в,хс+в,ус+в,н,к)
    Сторона(хс-в,ус+в,хс-в,ус-в,н,к)
кон
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
18.04.2015, 16:07
Цитата Сообщение от Dualpower Посмотреть сообщение
это функция или dll или что? uses graph это системное или надо прописать
Да ты вообще нихрена не знаешь. И кто тебе поверит что ты сам написал эти рекурсии?
Скопируй код в текстовый редактор, например в Блокнот, сохрани в папку BIN с расширением .pas и запучти в Турбо Паскале.
0
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 52
18.04.2015, 16:15  [ТС]
подожди ты а какой программе говоришь? о первой или второй и вообще если честно сложнее всего в програмировании мне дается графика я бы так неспрашивал. А вторую программу я написал потому что не прочитал внимательно
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
18.04.2015, 16:21
Цитата Сообщение от Dualpower Посмотреть сообщение
ты а какой программе говоришь?
Да о любом коде програмы.
0
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 52
18.04.2015, 16:27  [ТС]
давай еще раз разберемся вот то что ты написал где код паскаль это есть на второй алгоритм который я недописал или это что-то другое
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
18.04.2015, 17:16
Это код к твоему первому написанному алгоритму твоего второго задания и его вариант.
Ко последнему варианту я код не выкладывал.

Добавлено через 37 минут
У Вас здесь
поз(хс-в,ус-в) //Точка, в которой начинается рисунок
Сторона(хс-в,ус-в,хс+в,ус-в,н,к)
Сторона(хс+в,ус-в,хс+в,ус+в,н,к)
Сторона(хс-в,ус+в,хс-в,ус-в,н,к)
не хватает одной процедуры Сторона

Добавлено через 3 минуты
Нужно так.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
uses graph;
const b=100;
      n=5;
      k=0.4;
procedure storona(xa,ya,xb,yb,n:integer;k:real);
var xp,yp,xq,yq,xr,yr,xs,ys,dx,dy:integer;
begin
if n=0 then lineto(xb,yb)
else
 begin
  dx:=round(0.5*(1-k)*(xb-xa));
  dy:=round(0.5*(1-k)*(yb-ya));
  xp:=xa+dx;
  yp:=ya+dy;
  xs:=xb-dx;
  ys:=yb-dy;
  xq:=xp+(ys-yp);
  yq:=yp-(xs-xp);
  xr:=xq+(xs-xp);
  yr:=yq+(ys-yp);
  lineto(xp,yp);
  storona(xp,yp,xq,yq,n-1,k);
  storona(xq,yq,xr,yr,n-1,k);
  storona(xr,yr,xs,ys,n-1,k);
  lineto(xb,yb);
 end;
end;
var xc,yc:integer;
begin
initgraph(xc,yc,'');
xc:=getmaxX div 2;
yc:=getmaxY div 2;
moveto(xc-b,yc-b);
storona(xc-b,yc-b,xc+b,yc-b,n,k);
storona(xc+b,yc-b,xc+b,yc+b,n,k);
storona(xc+b,yc+b,xc-b,yc+b,n,k);
storona(xc-b,yc+b,xc-b,yc-b,n,k);
readln
end.
0
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 52
18.04.2015, 17:25  [ТС]
спасибо.Вы неподумаете просто с графикой у меня реально проблемы
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
18.04.2015, 17:28
Цитата Сообщение от Dualpower Посмотреть сообщение
просто с графикой у меня реально проблемы
А с рекурсией проблем нет? А вообще с Паскалем?
0
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 52
18.04.2015, 17:45  [ТС]
с паскалем нету могу скинуть пару кодов
с рекурсией вот с кодом минимума могут быть проблемы
я не пойму как он написан это как код паскаль без формы или как код делфи
или как dll
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
18.04.2015, 17:49
Цитата Сообщение от Dualpower Посмотреть сообщение
это как код паскаль без формы или как код делфи
или как dll
Код для минимума написан для консольного режима Делфи.
А со вторым я попутал разделы и написал для Турбо Паскаля. Переделаю для Делфи.
0
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 52
18.04.2015, 17:55  [ТС]
жду спасибо ещё раз
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
18.04.2015, 18:01
Лучший ответ Сообщение было отмечено BumerangSP как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
 
type
  TForm1 = class(TForm)
   procedure FormPaint(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
//зададим некоторые параметры формы
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.ClientWidth:=500;
Form1.ClientHeight:=500;
Form1.Position:=poScreenCenter;
end;
procedure TForm1.FormPaint(Sender: TObject);
const b=100;
      n=5;
      k=0.4;
procedure storona(xa,ya,xb,yb,n:integer;k:real);
var xp,yp,xq,yq,xr,yr,xs,ys,dx,dy:integer;
begin
if n=0 then Form1.Canvas.LineTo(xb,yb)
else
 begin
  dx:=round(0.5*(1-k)*(xb-xa));
  dy:=round(0.5*(1-k)*(yb-ya));
  xp:=xa+dx;
  yp:=ya+dy;
  xs:=xb-dx;
  ys:=yb-dy;
  xq:=xp+(ys-yp);
  yq:=yp-(xs-xp);
  xr:=xq+(xs-xp);
  yr:=yq+(ys-yp);
  Form1.Canvas.LineTo(xp,yp);
  storona(xp,yp,xq,yq,n-1,k);
  storona(xq,yq,xr,yr,n-1,k);
  storona(xr,yr,xs,ys,n-1,k);
  Form1.Canvas.LineTo(xb,yb);
 end;
end;
var xc,yc:integer;
begin
xc:=Form1.ClientWidth div 2;
yc:=Form1.ClientHeight div 2;
Form1.Canvas.MoveTo(xc-b,yc-b);
storona(xc-b,yc-b,xc+b,yc-b,n,k);
storona(xc+b,yc-b,xc+b,yc+b,n,k);
storona(xc+b,yc+b,xc-b,yc+b,n,k);
storona(xc-b,yc+b,xc-b,yc-b,n,k);
end;
end.
1
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 52
18.04.2015, 18:25  [ТС]
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.04.2015, 18:25
Помогаю со студенческими работами здесь

Составить алгоритм определения суммы минимального элемента и первого элемента массива от 1 до 5 на HTML
Составить алгоритм определения суммы минимального элемента и первого элемента массива от 1 до 5 на HTML

Реализовать алгоритм бинарного поиска заданного элемента в массиве
Ввести кількість елементів масиву. Масив містить цілі двоцифрові числа заданої властивості. Реалізувати алгоритм бінарного пошуку...

Перегруженные функции поиска минимального элемента массива
Написати реализацию перезагруженых функций: long func(long* arr, int length); float func(float* arr, int length); Функция func ищет...

Напишите рекурсивную программу поиска минимального элемента массива
Напишите рекурсивную программу поиска минимального элемента массива. Сдавать надо через 3 часа, а как сделать - ума не приложу.

Сортировка массива StringGrid (методом поиска минимального элемента)
Здравствуйте. У меня есть рандомно-заполняемый StringGrid (цифры от 0 до 99; Англ алфавит и Русс алфавит - все заглавные). Заполнение: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru