Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача на строки

Автор: DieZel 14.05.2008 21:41

Вобщем такая задачка :
В заданном предложении заменить все строчные латинские буквы прописными.
Определить ,сколько раз в преобразованном предложении встречается
сочетание символов "А+В" Напечатать исходный и преобразованный тексты,
а также число встретившихся сочетаний.

Возникает сразу 2 вопроса:
-Как перевести строчные в прописные (говорят что както при помощи таблицы ASCII)
и -Как вообще понимать второе предложение?)))

Помогите пожалуйста кто силён?... я в тупике

Автор: klem4 14.05.2008 21:46

Цитата
Как перевести строчные в прописные


если особых указаний нет, пользуемся стандартными средствами языка:

for i := 1 to length(s) do
s[i] := UpCase(s[i]);

Автор: DieZel 14.05.2008 22:00

Благодарю!!! Работает!!))) Ну а как же всётаки быть со вторым вопросом?

Автор: Айра 14.05.2008 22:14

Вот через таблицу, но для латинского алфавита:


for i:=1 to length(s) do if (ord(s[i])>=97) and (ord(s[i])<=122) then s[i]:=chr(ord(s[i])-32);
end.


Цитата
Определить ,сколько раз в преобразованном предложении встречается сочетание символов "А+В"

Во-первых, сочетание AB или именно А+B..
Вообще можно через pos('AB",s).. ищем, если нашли, то увеличили счетчик, а найденное сочетание удалили, и так пока не получится, что подстроки нет.. Правда это не самый лучший вариант.. придется исходную строку копировать в другую переменную, иначе потеряем..

Автор: Гость 14.05.2008 22:27

Вот и именно что с плюсом

Автор: Айра 14.05.2008 22:29

Ну это в целом ничего не меняет.. просто будешь искать pos('A+B',s) и все))
а можно еще так:

if (s[i]='A') and (s[i+1]='+') and (s[i+2]='B') then inc(kol);

Автор: DieZel 14.05.2008 22:37

Ну а что принять в качестве А и В ? любые 2 буквы чтоли?

Автор: Айра 14.05.2008 22:56

Хм.. знаешь, вот я это "А+B" поняла как сочетание трех конкретных символов.. если тебе непонятно задание, то лучше спросить у препода..

Автор: DieZel 14.05.2008 23:00

А! ,всё, допёрло!!))) Айра спасибо! как всё оказывается просто было!)))

Автор: volvo 15.05.2008 3:30

Цитата
Вообще можно через pos('AB",s).. ищем, если нашли, то увеличили счетчик, а найденное сочетание удалили, и так пока не получится, что подстроки нет..

Ай-яй-яй smile.gif Оля, если будем удалять можем нарваться на неприятности... К примеру:
s := 'hello A+B world AA+B+B !!!';
Что получим? Сколько раз 'A+B' встречается в строке? Внимательней с такими вещами...

Автор: мисс_граффити 15.05.2008 4:33

а если удалять не А+В, а весь кусок строки, который заканчивается этим сочетанием?
ну или наоборот - копировать "хвост"...

Автор: Айра 15.05.2008 9:33

Цитата
Внимательней с такими вещами...

ой.. не заметила.. wink.gif
Тогда придется все через индексы делать..

Автор: andriano 15.05.2008 12:08

Цитата(мисс_граффити @ 15.05.2008 1:33) *

а если удалять не А+В, а весь кусок строки, который заканчивается этим сочетанием?
ну или наоборот - копировать "хвост"...

Проще забить найденный кусок "левыми" символами.