Помощь - Поиск - Пользователи - Календарь
Полная версия: Разработать алгоритм и программу поиска и сортировки элементов массива на языке Паскаль.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Grief
Разработать алгоритм и программу поиска и сортировки элементов массива на языке Паскаль.

Способ получения элементов массива: Ввод с клавиатуры
Алгоритм поиска: Сравнение с выделенной ячейкой (min)
Алгоритм сортировки: Быстрая сортировка (по возрастанию)

Осталась быстрая сортировка, с которой трудности возникают. И в целом проверьте программу, буду благодарен.
program Dz;
uses crt;
const t='SORTIROV.txt';
var f: file of real;
s:real;min:real;
procedure out_fil;
var a:array [1..20] of real;
i, j:integer; s1:string;
 
   begin
               assign(F,t);
 
               i:=1;
               repeat
                     writeln ('Введите число или * (признак конца ввода)');
                     readln (s1);
                     val(s1,s,j);
                            if s1<>'*' then
                                                begin
                                                     a[i]:=s;
                                                     i:=i+1;
                                                end;
               until s1='*';
               rewrite(f);
                for j:=1 to i-1 do
                              write (F,a[j]);
 
               close(f);
          end;
{--------------------------------------------------------------}
procedure input_fil;
          begin
               assign (f,t);
               reset(f);
               read (f,s);
               min:=s;
               repeat
                     read (f,s);
                     if s< min then min:=s;
                     writeln (s:4:2,'  ');
               until EOF(f);
               close(f);
          end;
{----------------------------------------}
begin
clrscr;
gotoxy (15,8);
writeln ('Программу разработал Grief');
gotoxy (10,10);
{out_fil;}
writeln ('Чтение из файла');
clrscr;
input_fil;
writeln('min= ', min:4:0);
gotoxy (10,20);
writeln('Нажмите любую клавишу');
readln;
end.
Unconnected
Про сортировку - загляни в форумный FAQ и поищи по словам "быстрая сортировка".
Grief
Цитата(Unconnected @ 25.05.2010 0:23) *

Про сортировку - загляни в форумный FAQ и поищи по словам "быстрая сортировка".

Я нашел там пример, но не совсем понимаю, как прикрепить его в мою программу, может покажете наглядно?
Unconnected
Type
  arrType = Array[1 .. n] Of Integer;

{ первый вариант : }
Procedure HoarFirst(Var ar: arrType; n: integer);

  Procedure sort(m, l: Integer);
  Var i, j, x, w: Integer;
  Begin

    i := m; j := l;
    x := ar[(m+l) div 2];
    Repeat

      While ar[i] < x Do Inc(i);
      While ar[j] > x Do Dec(j);
      If i <= j Then Begin
        w := ar[i]; ar[i] := ar[j]; ar[j] := w;
        Inc(i); Dec(j)
      End

    Until i > j;
    If m < j Then Sort(m, j);
    If i < l Then Sort(i, l)

  End;

Begin
  sort(1, n)
End;


(это из 5-го поста в этой теме.)
Опиши тип в начале программы, вставь процедуру (так же, как уже делал) и вызови в программе sort(1,n). Ну и ещё константу n надо тебе описать, размер массива предполагаемый.
Grief
Цитата(Unconnected @ 25.05.2010 16:33) *

Type
  arrType = Array[1 .. n] Of Integer;

{ первый вариант : }
Procedure HoarFirst(Var ar: arrType; n: integer);

  Procedure sort(m, l: Integer);
  Var i, j, x, w: Integer;
  Begin

    i := m; j := l;
    x := ar[(m+l) div 2];
    Repeat

      While ar[i] < x Do Inc(i);
      While ar[j] > x Do Dec(j);
      If i <= j Then Begin
        w := ar[i]; ar[i] := ar[j]; ar[j] := w;
        Inc(i); Dec(j)
      End

    Until i > j;
    If m < j Then Sort(m, j);
    If i < l Then Sort(i, l)

  End;

Begin
  sort(1, n)
End;


(это из 5-го поста в этой теме.)
Опиши тип в начале программы, вставь процедуру (так же, как уже делал) и вызови в программе sort(1,n). Ну и ещё константу n надо тебе описать, размер массива предполагаемый.


Хм, не работает что-то =_= Я с этой быстрой сортировкой мозг себе вынесу скоро)

Вот у знакомого взял программу, у него правда метод пузырька и сортировка чисел по убыванию, но как-то все проще намного.

Program puzirek;
uses crt;
var
a: array [1..10] of integer;
i,j,c: integer;
procedure vvod;
begin
writeln('vvedite massiv');
for i:=1 to 10 do
readln (a[i]);
end;
procedure osn_puz;
begin
for i:=1 to 9 do
 begin
  for j:=i+1 to 10 do
   begin
    if (a[j]>a[i]) then
    begin
    c:=a[j];
    a[j]:=a[i];
    a[i]:=c;
    end;
   end;
  end;
 end;
procedure vyvod;
begin
writeln('rezultat');
for i:=1 to 10 do
writeln(a[i]);
end;
begin
clrscr;
vvod;
osn_puz;
vyvod;
readkey;
end.
Unconnected
Цитата
Хм, не работает что-то


А как включала-то?)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.