Помощь - Поиск - Пользователи - Календарь
Полная версия: проверка правописания
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Ex1Le
посмотрел по поиску...вроде такой задачи нету..если я плохо смотрел то сорри (

По правилам пунктуации пробел может стоять после, а не перед каждым из сле-дующих знаков: . , ; : ! ? ) ] } +; перед, а не после знаков: ( [ {. Заданный текст проверить на соблюдение этих правил и при необходимости исправить. Вместо пробела может быть пере-вод строки или знак табуляции.
Дож
Как ты хочешь хранить текст? В виде массива(если да, то пользуйся типом STRING).
volvo
Дож,
и что, это приближает как-то к решению? Не надо постить просто так; ясно, что при работе со строками (или текстом) будет использоваться тип String. А вот что со строкой делать, написАть сможешь? Как определить нарушение правописания и исправить его?
Ex1Le
sad.gif ребята помогите пожалуйста.... чтобы получить автомат ( а на экзамене я явно задачи не решу) мне надо решить эту и еще парочку.... с парочкой думаю разберусь а вот с этой...даже представления не имею как решать...
volvo
Ах, это тебе для автомата... Ну тогда, мил человек, приводи код, который сделал, и задавай по нему конкретные вопросы. ЗА ТЕБЯ (да еще и для получения экзамена автоматом), тебе это никто делать не будет. :no:
Ex1Le
в этом то вся проблема...я не знаю как делать проверку и исправлять это...
Дож
Цитата
ЗА ТЕБЯ (да еще и для получения экзамена автоматом), тебе это никто делать не будет.


Почему? я могу сделать...
volvo
Дож, только (если будешь делать) не выкладывай исходник сразу. Начни с алгоритма, натолкни на мысль, и дай человеку подумать. Все же речь идет об экзамене автоматом.
Дож
:yes: естественно
Ex1Le
жду мыслю smile.gif
volvo
Ну, вот тебе первая подсказка: решение "в лоб" - в строке явно проверяешь при помощи Pos наличие ЗАПРЕЩЕННОЙ комбинации, и если она есть - удаляешь ее (Delete) и вставляешь (Insert) соответствующую ей разрешенную...

Для упрощения работы можно создать массив разрешенных и запрещенных комбинаций символов.
Ex1Le
sad.gif нифига не получается.... приведи пример как функцией Pos пользоваться когда перед и когда после....
volvo
Все просто:
const
n = 2;
zapret: array[1 .. n] of record
_from: string[2]; { Это - запрещенная комбинация }
_to: string[2]; { Это - соответствующая ей разрешенная }
end =
((_from:' .'; _to:'. '),
(_from:' ,'; _to:', '));
var
s: string;
i, p: byte;

begin
s := 'begin .end ,none.';
writeln('before: ', s);
for i := 1 to n do begin
p := pos(zapret[i]._from, s);
if p > 0 then begin
delete(s, p, 2); insert(zapret[i]._to, s, p);
end;
end;
writeln('after: ', s)
end.

это - почти полная программа... Что надо изменить? Сделать проход по строке не 1 раз для каждой запрещенной комбинации, а ПОКА она встречается в строке. И только потом переходить к следующей запрещенной комбинации.
Ex1Le
s := 'begin .end ,none.'; поясни пожалуйста эту строчку....
volvo
Это - строка, В КОТОРОЙ ты проверяешь синтаксис...
Хочешь - напиши
s := 'privet ,privet .privet';

Это тебе больше нравится? И в следующий раз сначала ЗАПУСТИ программу, а потом (если это то, что нужно) спрашивай. А в том, что ты НЕ запускал, я уверен - если бы программа отработала, ты бы увидел результаты ее работы и вопрос отпал бы сам собой.
Ex1Le
запускать то запускал...наверно уже все... это приговор....все спасибо...все доделал....sad.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.