Форум программистов, компьютерный форум, киберфорум
Наши страницы

Pascal (Паскаль)

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Cooper Black
5 / 5 / 0
Регистрация: 17.10.2009
Сообщений: 11
#1

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

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

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

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

Размер: 3.1 Кб
P.s Задачу надо решить с помощью рекурсивных процедур и функций
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2009, 19:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка,Рекурсия (Pascal):

Блок схема.Сортировка «Пузырьком», Сортировка методом «Последовательных перестановок», Сортировка «Вставками» - Pascal
Помогите, нужны блок схемы Сортировка «Вставками» Program Vstavka; uses dos; Type mass=array of integer; Var i,b,n,j,a:...

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

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

Рекурсия - Pascal
Помогите переписать итеративную подпрограмму в рекурсивную. Задание: Найти номер первого вхождения минимального значения в...

Рекурсия - Pascal
Задание такое: Возвести число А в натуральную степень n за как можно меньшее количество умножений. Я написала программу, она рабочая, но...

рекурсия - Pascal
Написать программу с рекурсивной функцией, вычисляющей

14
Puporev
Модератор
52844 / 40655 / 13908
Регистрация: 18.05.2008
Сообщений: 94,366
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
Cooper Black
5 / 5 / 0
Регистрация: 17.10.2009
Сообщений: 11
27.11.2009, 20:35  [ТС] #3
Спасибо огромное! а в первую хотя бы по какому алгоритму решать?..
0
Puporev
Модератор
52844 / 40655 / 13908
Регистрация: 18.05.2008
Сообщений: 94,366
27.11.2009, 20:37 #4
Cooper Black, По алгоритму быстрой сортировки qwicksort, могу скинуть для числового массива, а для записей сам сделаешь, мне некогда писать программу.
1
Cooper Black
5 / 5 / 0
Регистрация: 17.10.2009
Сообщений: 11
27.11.2009, 20:38  [ТС] #5
скинь пожалуйста, я сам попробую..)
0
Puporev
Модератор
52844 / 40655 / 13908
Регистрация: 18.05.2008
Сообщений: 94,366
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
Inadequate
Retired
7707 / 2540 / 184
Регистрация: 17.10.2009
Сообщений: 5,100
27.11.2009, 22:28 #7
Puporev, а разве не проще будет пузырьком? Тем более что они этого еще не учили... Тут же не сказано какой именно сортировкой...
1
Puporev
Модератор
52844 / 40655 / 13908
Регистрация: 18.05.2008
Сообщений: 94,366
27.11.2009, 22:31 #8
Inadequate, А чем быстрая хуже? Разделил пополам и сортируй пузырьком по частям.
0
Inadequate
Retired
7707 / 2540 / 184
Регистрация: 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
Storm255
0 / 0 / 0
Регистрация: 17.10.2009
Сообщений: 46
28.11.2009, 02:14 #10
всуну своих пять копеек)):в начале второй прописываем Uses crt; в начале ибо не пашет в абц просто так)
0
Puporev
Модератор
52844 / 40655 / 13908
Регистрация: 18.05.2008
Сообщений: 94,366
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
Inadequate
Retired
7707 / 2540 / 184
Регистрация: 17.10.2009
Сообщений: 5,100
28.11.2009, 12:08 #12
Цитата Сообщение от Puporev Посмотреть сообщение
Это у тебя рекурсивная сортировка?
а где здесь написано про рекурсию?
1
Puporev
Модератор
52844 / 40655 / 13908
Регистрация: 18.05.2008
Сообщений: 94,366
28.11.2009, 12:10 #13
Inadequate, Прошу прощения, я так понял, а автору вообще пофиг.
0
Inadequate
Retired
7707 / 2540 / 184
Регистрация: 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
Cooper Black
5 / 5 / 0
Регистрация: 17.10.2009
Сообщений: 11
28.11.2009, 15:12  [ТС] #15
Цитата Сообщение от Puporev Посмотреть сообщение
Inadequate, Прошу прощения, я так понял, а автору вообще пофиг.
автору не пофиг..он тихо наблюдает за происходящим.и в первой действительно не нужна рекурсия....

Но все равно, спасибо вам обоим что доделали задачу!..
0
28.11.2009, 15:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2009, 15:12
Привет! Вот еще темы с ответами:

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

Рекурсия!!! - Pascal
Помогите плиз... Нахождение наибольшего общего делителя двух чисел.

Рекурсия - Pascal
Помогите плиз решить задачу: Написать программу с рекурсивной функцией, вычисляющей произведение цифр заданного натурального числа n.

рекурсия - Pascal
Написать рекурсивную процедуру, которая считывает вводимые с клавиатуры числа до тех пор, пока не будет обнаружен нуль. Затем введенные...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.