IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Разработать алгоритм и программу поиска и сортировки элементов массива на языке Паскаль., Помогите доработать и проверьте (:
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


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

Способ получения элементов массива: Ввод с клавиатуры
Алгоритм поиска: Сравнение с выделенной ячейкой (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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


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


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Цитата(Unconnected @ 25.05.2010 0:23) *

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

Я нашел там пример, но не совсем понимаю, как прикрепить его в мою программу, может покажете наглядно?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


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 надо тебе описать, размер массива предполагаемый.

Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Цитата(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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Цитата
Хм, не работает что-то


А как включала-то?)


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.05.2024 23:17
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name