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

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

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

> Сортировка массива
setare
сообщение 29.04.2005 18:00
Сообщение #1


Бывалый
***

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

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


Здравствуйте! Я написала программу сортировки массива букв шейкерной сортировкой! Но у меня программа не компилируется и ошибку выдает на for downto. Не могли бы вы сказать в чем дело! Вот код! Заранее благодарю!

Код
program Sheikernaya_sortirovka;
const N=10;
type
 mas=array[0..N] of integer;

procedure sheiker(var J,L:integer;var a:mas);
var
 x,K,R:integer;
begin
 L:=2;
 R:=N;
 K:=N;
 repeat
   for J:=R downto L do
     if a[J-1]>a[J] then begin
       x:=a[J-1];
       a[J-1]:=a[J];
       a[J]:=x;
       K:=J
     end;
   L:=K+1;
   for J:=L to R do
     if a[J-1]>a[J] then begin
       x:=a[J-1];
       a[J-1]:=a[J];
       a[J]:=x;
       K:=J
     end;
   R:=K-1
 until L>R;
end;

var
 J,L,K,R,X,N,I:integer;
 s:string[50];
begin
 writeln('Vvedite stroku'); readln(s);
 for I:=1 to N do read(a[I]);
 sheiker(J,L,a);
 writeln('Result:');
 for I:=1 to N do write(a[I],' ')
end.


--------------------
Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.

Нима
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 29.04.2005 18:50
Сообщение #2


Гость






setare, смотрите, что я делаю в таких случаях:
program Sheikernaya_sortirovka;
const
n = 8;

type
TType = string;
{ теперь для изменения типа сортируемых переменных
достаточно изменить TType... Все остальное изменится само }

{ Вот тут была логическая ошибка: не от 0, а от 1...
Если сделать от 0, сортировка работать перестанет }
mas = array[1 .. n] of TType;

procedure sheiker(var a: mas);

{ Ну, это по желанию, но по-моему проще записать swap,
чем каждый раз писать 3 строки... }
procedure swap(var x, y: TType);
var T: TType;
begin
T := x; x := y; y := T
end;

var
K,R,J,L:integer;
X: TType; { Это будет того типа, что нужно }
begin
L:=2;
R:=N;
K:=N;
repeat
for J:=R downto L do
if a[J-1]>a[J] then begin
swap(a[j], a[j-1]); { 1 строка вместо 3-х... }
K:=J
end;
L:=K+1;
for J:=L to R do
if a[J-1]>a[J] then begin
swap(a[j], a[j-1]); { ... и здесь тоже }
K:=J
end;
R:=K-1
until L>R;
end;

var
i: integer;

{ это для проверки работы со строками }
const
a: mas = ('44', '55', '12', '42', '94', '18', '6', '67');
begin
{
for I:=1 to N do
read(a[I]);
}
sheiker(a);
writeln('Result:');
for I:=1 to N do
write(a[I],' ')
end.



Кстати, вызов Sheiker не должен содержать ничего кроме имени самого сортируемого массива - это лишняя информация... smile.gif
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



- Текстовая версия 21.07.2025 15:13
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"