![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Katrinka |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Женский Реальное имя: Катя Репутация: ![]() ![]() ![]() |
Задача такая: заменить каждую группу повторяющихся символов в строке одним символом (строка состоит из букв, отсортированных по алфавиту).
я написала так: for i:=1 to ord(s[0]) do if a[i]=a[i+1] then delete (s,i,1) , но почему-то не работает |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ты при Delete изменяешь длину строки, так? А цикл будет продолжаться до той длины строки, которая была ПЕРЕД циклом, так что даже если бы это и работало - доверять результату нельзя; я уж не говорю о том, что Ord(s[0]) вообще для меня не существует, потому что моим компилятором не признается...
|
Malice |
![]()
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Поменяй
if a[i]=a[i+1] then на while (s[i]=s[i+1]) and (I<length(s)) do Должно работать. |
Katrinka |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Женский Реальное имя: Катя Репутация: ![]() ![]() ![]() |
Я так написала, но все равно работает неправильно...
|
Malice |
![]()
Сообщение
#5
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Приведи полный код, что вводишь и что получается.
|
Katrinka |
![]()
Сообщение
#6
|
Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Женский Реальное имя: Катя Репутация: ![]() ![]() ![]() |
procedure delete_char(var s:string);
var i,j,n:integer; s1:string; begin while (a[i]=a[i+1]) and (a[i]<length(s)) then delete(s,i,1) end; Выводится без изменения |
Malice |
![]()
Сообщение
#7
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
А что такое a[i], если строка в s ?! Да и вообще, найди в этих строках отличия:
while (a[i]=a[i+1]) and (a[i]<length(s)) then while (s[i]=s[i+1]) and (I<length(s)) do еще вопросы есть ? |
Katrinka |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Женский Реальное имя: Катя Репутация: ![]() ![]() ![]() |
Это понятно, это я в текстовом редакторе опечаталась.В паскале написано правильно и не работает.
|
Malice |
![]()
Сообщение
#9
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Проблемы с редактором- прикрепи файл.
|
Katrinka |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Женский Реальное имя: Катя Репутация: ![]() ![]() ![]() |
Так выглядит код:
procedure delete_char(var s:string); var i:integer; s1:string; begin while (s[i]=s[i+1])and(s[i]<length(s)) do begin delete(s,i,1); i:=i+1 end; end; |
Michael_Rybak |
![]()
Сообщение
#11
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Во-первых, переменная i ничему не равна в начале. Во-вторых, лучше делать не так; лучше пройтись циклом for, и генерить вторую строку, добавляя в нее символы, отличающиеся от предыдущих (if (i = 1) or (s[i - 1] <> s[i]) then s1 := s1 + s[i]). В-третьих, если уже хочешь так, то просто на бумажке выполни несколько шагов для строки AABBCC и увидишь, что не так.
|
Malice |
![]()
Сообщение
#12
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Издеваешься ?
В своем первом посте я сказал что на что поменять, на всякий случай приведу как оно должно выглядеть: procedure delete_char(var s:string); Если не получится переписать, я могу прикрепить файл, надо ? |
Katrinka |
![]()
Сообщение
#13
|
Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Женский Реальное имя: Катя Репутация: ![]() ![]() ![]() |
Спасибо, заработало. Я изначально так и писала, только в тексте основной программы не запусила процедуру...
|
![]() ![]() |
![]() |
Текстовая версия | 14.02.2025 17:26 |