Помощь - Поиск - Пользователи - Календарь
Полная версия: Разработать алгоритм и программу поиска и сортировки элементов массива на языке Паскаль.
Форум «Всё о Паскале» > 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
Цитата
Хм, не работает что-то


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