С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/22: Рейтинг темы: голосов - 22, средняя оценка - 4.73
5 / 5 / 0
Регистрация: 17.10.2009
Сообщений: 11
1

Сортировка,Рекурсия

27.11.2009, 19:36. Показов 4572. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста решить задачки...заранее спасибо!
1)Массив записей содержит фамилии участников соревнования по прыжкам в длину и результаты трех попыток.Расположите записи в порядке занятых спортсменами мест.
P.s В программе должны присутствовать процедуры или функции, и метод сортировки если возможен.
2)Разработайте рекурсивную функцию нахождения максимального элемента данной последовательности

Название: Безымянный.jpg
Просмотров: 323

Размер: 3.1 Кб
P.s Задачу надо решить с помощью рекурсивных процедур и функций
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2009, 19:36
Ответы с готовыми решениями:

Рекурсия: сортировка элементов массива по возрастанию
Помогите не могу понять где ошибка, может что-то не дописал, но массив не сортируется по...

Блок схема.Сортировка «Пузырьком», Сортировка методом «Последовательных перестановок», Сортировка «Вставками»
Помогите, нужны блок схемы Сортировка «Вставками» Program Vstavka; uses dos; Type mass=array ...

1)Бинарный поиск 2)Сортировка включением 3)Шейкерная сортировка 4)Сортировка разделением
1)В заданном массиве К(N) найти индексы элементов, которые кратны минимальному значению элемента...

Рекурсия
Напишите пожалуйста 2 задачи на рекурсию, только как можно проще и если не трудно, распишите...

14
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
27.11.2009, 20:25 2
2.
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
uses crt;
type mas=array[1..50]of integer;
var a:mas;
    n,i:integer;
function Max(n:integer):integer;
var w:integer;
begin
if n>1 then
 begin
  w:=Max(n-1);
  if a[n]<w then Max:=w
  else Max:=a[n]
 end
else Max:=a[1]
end;
 
begin
clrscr;
randomize;
write('Razmer massiva A n=');
readln(n);
writeln('Massiv A:');
for i:=1 to n do
  begin
    a[i]:=random(20);
    write(a[i],' ');
  end;
writeln;
write('max=',Max(n));
readln
end.
2
5 / 5 / 0
Регистрация: 17.10.2009
Сообщений: 11
27.11.2009, 20:35  [ТС] 3
Спасибо огромное! а в первую хотя бы по какому алгоритму решать?..
0
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
27.11.2009, 20:37 4
Cooper Black, По алгоритму быстрой сортировки qwicksort, могу скинуть для числового массива, а для записей сам сделаешь, мне некогда писать программу.
1
5 / 5 / 0
Регистрация: 17.10.2009
Сообщений: 11
27.11.2009, 20:38  [ТС] 5
скинь пожалуйста, я сам попробую..)
0
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
27.11.2009, 20:41 6
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
40
41
42
43
44
45
46
47
uses crt;
type massiv=array [1..5000] of integer;
var
  x:massiv;
  i,n:integer;
procedure sort(l,r:integer);
var
  i,j,x1,y1,m: integer;
begin
  i:=l;
  j:=r;
  m:=round ((l+r)/2);
  x1:=x[m];
  repeat
    while x[i]<x1 do inc(i);
    while x[j]>x1 do dec(j);
    if i<=j then 
     begin
      y1:=x[i];
      x[i]:=x[j];
      x[j]:=y1;
      inc(i);
      dec(j);
     end;
  until i>j;
  if l<j then sort(l,j);
  if i<r then sort(i,r);
end;
 
begin
clrscr;
randomize;
write('Введите размер массива не более 5000 n=');
readln(n);
writeln('Исходный массив:');
for i:=1 to n do
  begin
   x[i]:=random(50)-10;
   write(x[i],' ');
  end;
writeln;
sort(n,1);
writeln('Массив после сортировки: ');
for i:=1 to n do
write(x[i],' ');
readln;
end.
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
27.11.2009, 22:28 7
Puporev, а разве не проще будет пузырьком? Тем более что они этого еще не учили... Тут же не сказано какой именно сортировкой...
1
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
27.11.2009, 22:31 8
Inadequate, А чем быстрая хуже? Разделил пополам и сортируй пузырьком по частям.
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
28.11.2009, 01:58 9
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
40
41
42
43
44
45
46
type
  rec=record
    Sur:string[20];
    P1,P2,P3:real;
    Place:integer;
  end;
var
  a,b:array[1..1000]of rec;
  i,j,max,pl:integer;
begin
  writeln('Ââåäèòå êîëè÷åñòâî ñïîðòñìåíîâ...');
  readln(max);
  for i:=1 to max do
  begin
    write('Ôàìèëèÿ: ');
    readln(a[i].Sur);
    write('Ïåðâàÿ ïîïûòêà: ');
    readln(a[i].P1);
    write('Âòîðàÿ ïîïûòêà: ');
    readln(a[i].P2);
    write('Òðåòüÿ ïîïûòêà: ');
    readln(a[i].P3)
  end;
  {âûïîëíÿåì ñîðòèðîâêó ìàññèâà}
  for i:=1 to max do
    for j:=i to max do
      if (a[i].P1+a[i].P2+a[i].P3)<(a[j].P1+a[j].P2+a[j].P3) then
      begin
        b[i].Sur:=a[i].Sur;
        a[i].Sur:=a[j].Sur;
        a[j].Sur:=b[i].Sur;
        b[i].P1:=a[i].P1;
        a[i].P1:=a[j].P1;
        a[j].P1:=b[i].P1;
        b[i].P2:=a[i].P2;
        a[i].P2:=a[j].P2;
        a[j].P2:=b[i].P2;
        b[i].P3:=a[i].P3;
        a[i].P3:=a[j].P3;
        a[j].P3:=b[i].P3
      end;
  {âûâîäèì âñåõ ñïîðòñìåíîâ}
  writeln('Òàáëèöà ðåêîðäñìåíîâ:');
  for i:=1 to 3 do
    writeln(a[i].Sur,' ',a[i].P1,' ',a[i].P2,' ',a[i].P3,' ',i,' ìåñòî')
end.
1
0 / 0 / 0
Регистрация: 17.10.2009
Сообщений: 46
28.11.2009, 02:14 10
всуну своих пять копеек)):в начале второй прописываем Uses crt; в начале ибо не пашет в абц просто так)
0
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
28.11.2009, 08:06 11
Inadequate, Это у тебя рекурсивная сортировка? Я думал ты знаешь рекурсивный пузырек, аж удивился.

Добавлено через 9 минут
И потом зачем сортировать все поля отдельно? Это же запись.
Да и сумму баллов можно сразу в записи считать.
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
rec=record
    Sur:string[20];
    P1,P2,P3,sm:real;
    Place:integer;
  end;
  .....................
var x:rec;
................  
for i:=1 to max do
  begin
    write('Фамилия: ');
    readln(a[i].Sur);
    write('Первая попытка: ');
    readln(a[i].P1);
    write('Вторая попытка: ');
    readln(a[i].P2);
    write('Третья попытка: ');
    readln(a[i].P3)
    a[i].sm:=a[i].p1+a[].p2+a[i].p3;  
    end;  
......................
for i:=1 to max do
for j:=i to max do
if a[i].sm<a[j].sm then
 begin
  x:=a[i];
  a[i].:=a[j];
  a[j]:=x;
 end;
2
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
28.11.2009, 12:08 12
Цитата Сообщение от Puporev Посмотреть сообщение
Это у тебя рекурсивная сортировка?
а где здесь написано про рекурсию?
1
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
28.11.2009, 12:10 13
Inadequate, Прошу прощения, я так понял, а автору вообще пофиг.
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
28.11.2009, 12:29 14
Цитата Сообщение от Puporev Посмотреть сообщение
И потом зачем сортировать все поля отдельно? Это же запись.
Да и сумму баллов можно сразу в записи считать.
А вот за это действительно не подумал... Спасибо...

Добавлено через 12 минут
посмотрел на ссвоё решение, понял, что написал чушь полную,(зачем то завел второй массив, не сделал проверку, завел лишнюю переменную, лоханулся с записями... да уж бывают тупняки...). Вот так всё должно было выглядеть:
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
40
type
  rec=record
    Sur:string[20];
    P1,P2,P3,res:real;
    Place:integer;
  end;
var
  a:array[1..1000]of rec;
  temp:rec;
  i,j,max:integer;
begin
  writeln('Ââåäèòå êîëè÷åñòâî ñïîðòñìåíîâ...');
  readln(max);
  for i:=1 to max do
  begin
    write('Ôàìèëèÿ: ');
    readln(a[i].Sur);
    write('Ïåðâàÿ ïîïûòêà: ');
    readln(a[i].P1);
    write('Âòîðàÿ ïîïûòêà: ');
    readln(a[i].P2);
    write('Òðåòüÿ ïîïûòêà: ');
    readln(a[i].P3);
    a[i].res:=a[i].P1+a[i].P2+a[i].P3;
  end;
  {âûïîëíÿåì ñîðòèðîâêó ìàññèâà}
  for i:=1 to max do
    for j:=i to max do
      if (a[i].res)<(a[j].res) then
      begin
        temp:=a[i];
        a[i]:=a[j];
        a[j]:=temp
      end;
  {âûâîäèì âñåõ ñïîðòñìåíîâ}
  writeln('Òàáëèöà ðåêîðäñìåíîâ:');
  for i:=1 to 3 do
    if i<=max then
      writeln(a[i].Sur,' ',a[i].P1,' ',a[i].P2,' ',a[i].P3,' ',i,' ìåñòî')
end.
1
5 / 5 / 0
Регистрация: 17.10.2009
Сообщений: 11
28.11.2009, 15:12  [ТС] 15
Цитата Сообщение от Puporev Посмотреть сообщение
Inadequate, Прошу прощения, я так понял, а автору вообще пофиг.
автору не пофиг..он тихо наблюдает за происходящим.и в первой действительно не нужна рекурсия....

Но все равно, спасибо вам обоим что доделали задачу!..
0
28.11.2009, 15:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2009, 15:12
Помогаю со студенческими работами здесь

Рекурсия
Здравствуйте. Такое задание: Даны натуральные числа p, r, k. Получить f(k), где f(x)= { x, если...

Рекурсия
Помогите,пожалуйста,с программой.Вычисляет неправильно,а разобраться не могу,где ошибаюсь.(...

Рекурсия
Помогите пожалуйста написать программу по теме: рекурсия! она в вордовском файлике)

Сортировка массивов. Сортировка выбором
Помогите пожалуйста, я что-то совсем запуталась при составлении данной программы... Сортировка...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru