Конспект лекций по программированию для начинающих. Гладков В.П. - 200 стр.

UptoLike

Составители: 

202
Решение. Лишними пробелами называются второй, третий и т.д., следующие за
первым пробелом. Следовательно, чтобы найти лишний пробел, нужно искать два
пробела, стоящие рядом, и удалять второй пробел в каждой найденной паре.
j:=pos(' ',s);
while j<>0 do
begin delete(s,j,1);
j:=pos(' ',s)
end.
Пример 12.5. Строка символов - это любая последовательность символов,
заключенная в апострофы. Задана строка символов, состоящая из слов и строк,
разделенных одним или несколькими пробелами. Нужно удалить из строки все
незначащие пробелы. Незначащими пробелами называются пробелы, не стоящие в
апострофах.
Решение. Запишем формально определение незначащего пробела. Текущий
пробел незначащий, если предыдущий символ является пробелом и этот пробел не
стоит в апострофах. Введем логическую переменную p, которая принимает
значение false, если предыдущий символ не является пробелом, и значение true,
если предыдущий символ - пробел. Введем логическую переменную q, которая
принимает значение false, если пробел находится не в апострофах,
и значение true,
если пробел в апострофах. Тогда формальное определение незначащего пробела
запишется так:
(copy(s,i,1)=' ') and p and not q (текущий символ пробел И предыдущий пробел И не
в апострофах).
Составляем программу:
p:=false;
q:=false;
s1:='';
for i:=1 to length(s) do
begin if not((copy(s,i,1)=' ') and p and not q)
then s1:=s1+copy(s,i,1);
if copy(s,i,1)=' '
then p:=true else p:=false;
if copy(s,i,1)='''' then q:=not q
end;
Пример 12.6. Подсчитать количество гласных русских букв в строке.
Решение. Гласной буквой является такая буква, которая принадлежит
множеству гласных букв. Для решения задачи просматриваем строку посимвольно
и проверяем каждый символ на принадлежность гласным буквам:
k:=0; { количество гласных букв }
for i:=1 to length(s) do
if pos(copy(s,i,1),'аоуэыяёюеи')>0
then k:=k+1;
Пример 12.7. Задано предложение, состоящее из слов, разделенных одним или
несколькими пробелами. Определить самое длинное слово предложения.
Решение. Чтобы выделить окончание слова, нужно анализировать два символа:
первый символ должен быть отличен от пробела, а второй должен быть пробелом.
                                      202

    Решение. Лишними пробелами называются второй, третий и т.д., следующие за
первым пробелом. Следовательно, чтобы найти лишний пробел, нужно искать два
пробела, стоящие рядом, и удалять второй пробел в каждой найденной паре.
    j:=pos(' ',s);
    while j<>0 do
    begin       delete(s,j,1);
                j:=pos(' ',s)
    end.
    Пример 12.5. Строка символов - это любая последовательность символов,
заключенная в апострофы. Задана строка символов, состоящая из слов и строк,
разделенных одним или несколькими пробелами. Нужно удалить из строки все
незначащие пробелы. Незначащими пробелами называются пробелы, не стоящие в
апострофах.
    Решение. Запишем формально определение незначащего пробела. Текущий
пробел незначащий, если предыдущий символ является пробелом и этот пробел не
стоит в апострофах. Введем логическую переменную p, которая принимает
значение false, если предыдущий символ не является пробелом, и значение true,
если предыдущий символ - пробел. Введем логическую переменную q, которая
принимает значение false, если пробел находится не в апострофах, и значение true,
если пробел в апострофах. Тогда формальное определение незначащего пробела
запишется так:
(copy(s,i,1)=' ') and p and not q (текущий символ пробел И предыдущий пробел И не
в апострофах).
    Составляем программу:
    p:=false;
    q:=false;
    s1:='';
    for i:=1 to length(s) do
    begin       if not((copy(s,i,1)=' ') and p and not q)
                then s1:=s1+copy(s,i,1);
                if copy(s,i,1)=' '
                then p:=true else p:=false;
                if copy(s,i,1)='''' then q:=not q
    end;
    Пример 12.6. Подсчитать количество гласных русских букв в строке.
    Решение. Гласной буквой является такая буква, которая принадлежит
множеству гласных букв. Для решения задачи просматриваем строку посимвольно
и проверяем каждый символ на принадлежность гласным буквам:
    k:=0; { количество гласных букв }
    for i:=1 to length(s) do
    if pos(copy(s,i,1),'аоуэыяёюеи')>0
    then k:=k+1;
    Пример 12.7. Задано предложение, состоящее из слов, разделенных одним или
несколькими пробелами. Определить самое длинное слово предложения.
    Решение. Чтобы выделить окончание слова, нужно анализировать два символа:
первый символ должен быть отличен от пробела, а второй должен быть пробелом.