![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
setare |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 152 Пол: Женский Репутация: ![]() ![]() ![]() |
Здравствуйте! Я написала программу сортировки массива букв шейкерной сортировкой! Но у меня программа не компилируется и ошибку выдает на 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. -------------------- Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.
Нима |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
procedure sheiker(var J,L:integer;var a:mas); :no: так нельзя делать... По определению переменной цикла For должна быть локальная переменная... А что у Вас? Переменная, передаваемая по ссылке в процедуру локальной никак быть не может... Но если уж так нужно вернуть значение J в вызывающую программу, я бы сделал так: procedure sheiker(var J,L:integer;var a:mas); |
setare |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 152 Пол: Женский Репутация: ![]() ![]() ![]() |
Спасибо, что помогли!
-------------------- Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.
Нима |
setare |
![]()
Сообщение
#4
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 152 Пол: Женский Репутация: ![]() ![]() ![]() |
Для того, чтобы сделать так, чтобы она сортировала буквы нужно массив сделать стрингом и х сделать также стрингом. Правильно? Я сделала, но она не печатает сортированный массив. Там просто пустое место. Или я очень сильно торможу и ошибка налицо?
-------------------- Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.
Нима |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
setare, смотрите, что я делаю в таких случаях:
program Sheikernaya_sortirovka; Кстати, вызов Sheiker не должен содержать ничего кроме имени самого сортируемого массива - это лишняя информация... ![]() |
setare |
![]()
Сообщение
#6
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 152 Пол: Женский Репутация: ![]() ![]() ![]() |
Спасибо! Но почему у меня при запускнии программы она не сортировала цифру 6?Все отсортировала, но 6 оставила там где она сейчас написана?
-------------------- Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.
Нима |
setare |
![]()
Сообщение
#7
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 152 Пол: Женский Репутация: ![]() ![]() ![]() |
А что я делаю не так. что когда я пишу введите строку и все остальное оставляю также, она мне даже не пытается ее отсортировать? Ведь мне нужно строку ввести! Как здесь
writeln('Vvedite stroku'); readln(s); Или это не правильно? -------------------- Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.
Нима |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата(setare @ 29.04.05 19:04) Но почему у меня при запускнии программы она не сортировала цифру 6? Все отсортировала, но 6 оставила там где она сейчас написана? Не цифру 6, а строку со значением '6' ... Вот что программа выдает: "12 18 42 44 55 6 67 94", то есть с точки зрения сортировки строк все абсолютно правильно... Как сортируются строки? Сначала - по первому символу, потом (если первый символ у обеих строк одинаковый - по второму), и т.д. Так что массив строк отсортирован как положено... :yes: Цитата(setare @ 29.04.05 19:13) Ведь мне нужно строку ввести! Или это не правильно? :no: Не строку, а массив строк !!! Замените основную программу вот на это: { это для проверки работы со строками } |
setare |
![]()
Сообщение
#9
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 152 Пол: Женский Репутация: ![]() ![]() ![]() |
Извините меня пожалуйста, но я по-моему или сошла с ума или совсем торможу. Но где мы вводим саму строку? Программе же нечего сортировать?
-------------------- Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.
Нима |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Это зачем?
for I:=1 to N do |
setare |
![]()
Сообщение
#11
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 152 Пол: Женский Репутация: ![]() ![]() ![]() |
Нет, понимаете! Мы должны ввести например "абмтрплд" и в результате программа должна нам вывести на экран "абдлмпрт", правильно или нет? Или мне нужно написать запрос введения строки и убрать ту строчку или оставить ту строчку и не писать эту?
-------------------- Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.
Нима |
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Цитата(setare @ 29.04.05 18:19) Для того, чтобы сделать так, чтобы она сортировала буквы нужно массив сделать стрингом и х сделать также стрингом. Правильно? Я сделала, но она не печатает сортированный массив. Там просто пустое место. Или я очень сильно торможу и ошибка налицо? тогда здесь неверное определение ![]() ![]() меняем заголовок Shaker: Type TType = Char; и саму основную программу: var Добавлено позже: Или переписать программу вот так: program Sheikernaya_sortirovka; |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:18 |