Строка символов, Работа со строками |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Строка символов, Работа со строками |
Гость_Рада |
Сообщение
#1
|
Гость |
Дана строка символов. Изменить строку – во всех словах с четным номером поменять местами первый и последний символы. Слова ограничены одним или несколькими пробелами. Порядок ввода исходных данных: - исходная строка. Порядок вывода результатов: - новая строка.
Преобразовать обработку строки в процедуру (или функцию). Написать к ней тестовую программу. Созданную процедуру использовать для построчной обработки текстового файла (Text). Результат обработки записывается в новый файл того же типа. |
volvo |
Сообщение
#2
|
Гость |
Гость_Рада
А в чем именно возникли трудности? Разбиение строки на слова? Работа со словами? Работа с файлом? Вы вообще начинали делать эту задачу? |
APAL |
Сообщение
#3
|
Смотрю... Группа: Пользователи Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: 6 |
Какие есть свои наработки по этому поводу? Выкладывай сюда.
Надеюсь, Вас не придется учить паскалю с нуля? Ведь у задачи явно "ноги растут" из какого-то курса преподавания... -------------------- |
Гость_Рада |
Сообщение
#4
|
Гость |
Да я икак не могу не понять,как определять номер элемента строки
|
Манго |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: 0 |
Ограничение прбелом untill s[i]:=' ' Да?
А что надо сделать,чтобы потом слова считывались дальше? |
APAL |
Сообщение
#6
|
Смотрю... Группа: Пользователи Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: 6 |
А пробовали поискать на этом форуме? Для чего создан раздел F.A.Q. ?
http://forum.pascal.net.ru/index.php?showtopic=2361 -------------------- |
volvo |
Сообщение
#7
|
Гость |
Попробуйте разобраться в работе этой функции:
Код function getToken(delim: char; var s: string): string; var p: byte; begin getToken := ''; p := pos(delim, s); if p <> 0 then begin getToken := Copy(s, 1, pred(p)); delete(s, 1, p); exit end; getToken := s; s := '' end; const st : string = 'what is your name'; var sTok: string; p: byte; begin repeat p := pos(' ', st); if p > 0 then begin delete(st, p, 1); end; until p = 0; while st <> '' do begin sTok := getToken(' ', st); writeln(sTok); end; end. Как Вы думаете, для чего предназначена функция getToken, что именно она делает? |
APAL |
Сообщение
#8
|
Смотрю... Группа: Пользователи Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: 6 |
Или вот полезно будет посмотреть:
http://pascal.net.ru/forum/index.php?showtopic=3024 -------------------- |
Манго |
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: 0 |
Как работать со словом строки(то,к-ое до прбела)???
Добавлено (17.11.04 12:33): Ну ,в смысле,что надо сделать,чтобы я могла с ним работать? |
volvo |
Сообщение
#10
|
Гость |
Манго
А разобраться в приведенной программе не пробовали? Я по-Вашему это для себя пишу? Сообщение отредактировано: volvo - |
Манго |
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: 0 |
Нет,просто я это сообщение писала до того ,как читала ваше;
так выщло ,не сердитесь rolleyes.gif Добавлено: Я не поняла работу функции getToken |
volvo |
Сообщение
#12
|
Гость |
Манго
Эта функция как раз и занимается тем, что берет из строки следующее слово. А дальше его нужно обработать - попробуйте. Кстати, программу запускали или нет? По ее выходным данным можно однозначно сказать, для чего она предназначена :yes: |
Манго |
Сообщение
#13
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: 0 |
Хорощо,сейчас попрую.
Кстати,программу я написала,но она не работает <_< А программа такая: Код program Stroka; uses crt; var s,s0 : string; f : text; t:char; i,n,d,k,pssl,n0 : integer; begin clrscr; writeln('Vvedite stroku '); readln(s); n:=length(s); for k:=0 to pssl do begin {k-schetchik slov;pssl-poslednee slovo} while s[i] <> ' ' do read(s[i]); if s[i] =' ' then d:=i-1; { d-nomer poslednego elementa} s0:=s[d]; n0:=length(s0); end; if (k mod 2)=0 then begin t:=s0[1];s0[1]:=s0[n0];s0[n0]:=t;end; writeln('Novaja stroka ',s); readkey; end. Код программ заключаем в соответсвующие теги! Сообщение отредактировано: APAL - |
Манго |
Сообщение
#14
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: 0 |
Не подскажите,почему?????????? :p2:
|
volvo |
Сообщение
#15
|
Гость |
Манго
Смотрите, что происходит в программе: Код program Stroka; uses crt; var s,s0 : string; f : text; t:char; i,n,d,k,pssl,n0 : integer; begin clrscr; writeln('Vvedite stroku '); readln(s); n:=length(s); {1. переменная pssl не инициализируется явно (хотя по умолчанию = 0)} for k:=0 to pssl do begin {k-schetchik slov;pssl-poslednee slovo} {2. Попытка считывания С КЛАВИАТУРЫ символов до тех пор, пока не будет введен пробел, а ведь надо читать из строки S} while s[i] <> ' ' do read(s[i]); {3. переменной i тоже явно не присвоено значение (по умолчанию тоже i=0), но ведь в нулевом символе хранится длина строки!} if s[i] =' ' then d:=i-1; { d-nomer poslednego elementa} s0:=s[d]; n0:=length(s0); end; if (k mod 2)=0 then begin t:=s0[1];s0[1]:=s0[n0];s0[n0]:=t;end; writeln('Novaja stroka ',s); readkey; end. |
Манго |
Сообщение
#16
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: 0 |
Цитата {1. переменная pssl не инициализируется явно (хотя по умолчанию = 0)} for k:=0 to pssl do begin {k-schetchik slov;pssl-poslednee slovo} {2. Попытка считывания С КЛАВИАТУРЫ символов до тех пор, пока не будет введен пробел, а ведь надо читать из строки S} 1)Я ,наверно,не так поняла,но разве pssl не будет увеличиваться сам в ходде работы счётчика? 2)Сильно ли влияет на программу считывание с клавиатуры или из строки?Символы то те же,или нет ? |
Guest |
Сообщение
#17
|
Гость |
Цитата разве pssl не будет увеличиваться сам в ходде работы счётчика? Нет!!! В ходе работы цикла Цитата for k=0 to pssl do будет само собой увеличиваться значение переменной к (а вернее, не будет, поскольку по умолчанию pssl получит значение 0, и цикл будет работать, как Цитата for k=0 to 0 do т.е., всего один раз). Лучше все-таки юзайте функцию от Volvo. Или ищите добрую душу, которая сделает все за Вас. Если Вы очень-очень ласково попросите, может, я и разжалоблюсь. :p2: |
volvo |
Сообщение
#18
|
Гость |
Цитата Сильно ли влияет на программу считывание с клавиатуры или из строки? Так нельзя уже считывать с клавиатуры! Строка введена - теперь нужно пользоваться только тем, что уже было введено (тем более, что эта задача будет применяться к работе с файлами) |
Guest |
Сообщение
#19
|
Гость |
Да я не прошу ВСЁ за меня делать,я прошу помочь исправить то,что я уже
сделала так,чтобы программа работала |
Манго |
Сообщение
#20
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: 0 |
:yes: Я исправила программу!!!
Но она всё равно не работает!!! Код var s,s0 : string; f : text; t:char; i,n,d,k,pssl,n0 : integer; begin clrscr; writeln('Vvedite stroku '); readln(s); n:=length(s); for k:=0 to pssl do begin {k-schetchik slov;pssl-poslednee slovo} i:=1;pssl:=n;{!} while s[i] <> ' ' do read(s[i]); if s[i] =' ' then d:=i-1; { d-nomer poslednego elementa} s0:=s[d]; n0:=length(s0); end; if (k mod 2)=0 then begin t:=s0[1];s0[1]:=s0[n0];s0[n0]:=t;end; writeln('Novaja stroka ',s); readkey; end.[QUOTE]var s,s0 : string; f : text; t:char; i,n,d,k,pssl,n0 : integer; begin clrscr; writeln('Vvedite stroku '); readln(s); n:=length(s); for k:=0 to pssl do begin {k-schetchik slov;pssl-poslednee slovo} i:=1;pssl:=n;{!} while s[i] <> ' ' do read(s[i]); if s[i] =' ' then d:=i-1; { d-nomer poslednego elementa} s0:=s[d]; n0:=length(s0); end; if (k mod 2)=0 then begin t:=s0[1];s0[1]:=s0[n0];s0[n0]:=t;end; writeln('Novaja stroka ',s); readkey; end. Что теперь неправильно? Подскажите!!Немнжко же осталось,чтобы она заработала!!! :yes: Сообщение отредактировано: Манго - |
Текстовая версия | 12.01.2025 4:59 |