русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Выделение слов из строки


Дата добавления: 2014-11-28; просмотров: 1502; Нарушение авторских прав


Под словами будем понимать последовательности символов разделенных пробелами (кроме, соответственно, первого и последнего слов).

Пусть s='мама мыла раму'. Признаком конца слова можно считать пробел, кроме последнего слова. Чтобы не обрабатывать последнее слово специальным образом, добавим в конец строки оператором S:=s+' ' символ «пробел».

Просмотрим все элементы строки и если символ не пробел, то добавляем его к строке t. Если пробел, то в t уже целое слово. Выдаем его на экран, и начинаем формировать в t новое слово. Перед формированием «очищаем» слово t (t:=''- пустая строка).

 

Var s, r, t: string;

i: integer;

Begin

Readln(s);

s:=s+' '; t:=''; {t пустая строка}

For i:=1 to length(s) do

If s[i]<>' ' then t:=t+s[i]

else Begin

Writeln(t);

t:='';

End;

readln

End.

Используем эту идею для решения более сложной задачи: найти в строке самое длинное слово – палиндром. Для этого формируем как прямое слово t:=t+s[i], так и обратное r:=s[i]+r. Кроме того, последовательно проверяем длины слов и ищем самое длинное.

Var s, r, t, wmax: string;

i, lmax, l: integer;

Begin

Readln(s); s:=s+' ';

r:='';{"обратное" слово-пустая строка}

t:='';{"прямое" слово-пустая строка }

wmax:='';{искомое слово – пустая строка}

For i:=1 to length(s) do

If s[i]<>' ' then {символ не равен пробелу}

Begin

r:=s[i] + r; t:=t + s[i]

End

else Begin

If r = t then

If length(r)>length (wmax)

then wmax:=r;

r:=''; t:=''; {готовимся формировать новые слова}

End;

Write(wmax);

Readln

End.

Теперь представим, что «очень много» символов последовательно записано в текстовом файле (на олимпиадах обычно бывает именно так). Тогда последним символом окажется код #26 (признак конца файла). Но, если при создании файла в конце строки будет нажата клавиша «Enter», то в конце файла могут появиться и символы #13 (CR) или (и) #10 (LF). Не забудьте об этом при участии в соревнованиях, именно из этого символа команда СГАУ на четвертьфинале чемпионата мира сдала программу только с третьей попытки, заработав 40 минут штрафного времени. Обязательно закрывайте выходной файл, иначе результат в нем может не появиться.



Используем стандартные файлы ввода и вывода. Тогда их можно не описывать и не указывать их имена в операторах ввода и вывода

Будем считывать символы из файла последовательно и по алгоритму, изложенному выше, решим задачу.

Var r, t, wmax: string;

ch: char;

Begin

Assign (input, 'input.txt'); Reset(input);

Assign (output, 'output.txt'); Rewrite(output);

r:=''; t:=''; wmax:='';

Repeat

Read (ch);

If (ch<>' ')and(ch<>#26)and(ch<>#10)and(ch<>#13) then

Begin r:=ch+r; t:=t+ch End

else Begin

If r=t then

If length (r)>length (wmax) then wmax:=r;

r:=''; t:='';

End;

Until (ch=#26) or (ch=#10) or (ch=#13);

Write (wmax);

Close (output);

End.



<== предыдущая лекция | следующая лекция ==>
Убрать из строки пробелы в начале строки. | Ввод элементов матрицы.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.046 сек.