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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
setare
сообщение 29.04.2005 18:19
Сообщение #2


Бывалый
***

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

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


Для того, чтобы сделать так, чтобы она сортировала буквы нужно массив сделать стрингом и х сделать также стрингом. Правильно? Я сделала, но она не печатает сортированный массив. Там просто пустое место. Или я очень сильно торможу и ошибка налицо?


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

Нима
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.04.2005 19:53
Сообщение #3


Гость






Цитата(setare @ 29.04.05 18:19)
Для того, чтобы сделать так, чтобы она сортировала буквы нужно массив сделать стрингом и х сделать также стрингом. Правильно? Я сделала, но она не печатает сортированный массив. Там просто пустое место. Или я очень сильно торможу и ошибка налицо?

тогда здесь неверное определение smile.gif для того, чтобы работала сортировка ОДНОЙ строки, нужно представить ее как сортировку СИМВОЛОВ этой строки smile.gif

меняем заголовок Shaker:
Type TType = Char;
procedure sheiker(var a: mas; const n: integer);

и саму основную программу:
var
s: string;
a: mas;
begin
writeln('Vvedite stroku');
readln(s);
for i := 1 to length(s) do
a[i] := s[i];

sheiker(a, length(s));
writeln('Result:');
for I:=1 to length(s) do
write(a[I]);
end.


Добавлено позже:
Или переписать программу вот так:
program Sheikernaya_sortirovka;
type
TType = char;

procedure sheiker(var a: array of TType;
const n: integer);

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-1 downto L-1 do
if a[J-1]>a[J] then begin
swap(a[j], a[j-1]);
K:=J
end;
L:=K+1;
for J:=L-1 to R-1 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
s: string;
begin
writeln('Vvedite stroku');
readln(s);

sheiker(s[1], length(s));
writeln('Result:');
writeln(s);
end.
 К началу страницы 
+ Ответить 

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


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

 



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