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

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

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

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


Бывалый
***

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

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


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


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

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

 





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