Читайте также: |
|
4.1 Пусть даны целое число п, символы S 1, S 2,..., S п. Преобразуйте последовательность S 1, S 2,..., S п, удалив каждый символ звездочки (*) и повторив каждый символ, отличный от звездочки.
4.2 Во входном потоке вводится строка, оканчивающаяся точкой. Требуется напечатать строку, получаемую из исходной по следующим правилам:
— каждую цифру заменить на взятую в круглые скобки последовательность знаков «+» (если цифра четная) или «–» (если цифра нечетная), длина которой равна значению цифры;
— каждую букву «с», следующую за первым вхождением буквы «b», заменить на символ «/»;
— остальные символы без изменения.
Найти также число вхождений буквы «а» в строку.
Например, по исходной строке: a12ca0bfc3ca.
должно быть отпечатано: a(-)(++)ca()bf/(---)/a
и число вхождений буквы «а» равно 3.
Пояснения к программе
Конкретизируя обработку введенного символа, выделим 5 случаев: цифра, буквы ' a ', ' b ', ' c ', все остальные символы.
Признаком окончания ввода строки является точка, поэтому ввод строки посимвольно организован в цикле While, выполняющемся до тех пор, пока вводится символ, отличный от точки. В цикле в первую очередь проверяется, является ли введенный символ цифрой. В составном операторе, обрабатывающем цифру, выполняется переход к значению цифры (целочисленная переменная K), затем это значение проверяется на нечетность с помощью функции ODD, и символ цифры заменяется знаком плюс или минус, последовательность знаков заключается в круглые скобки. Вторая ветвь условного оператора обрабатывает все остальные символы: в операторе варианта они проверяются на совпадение с буквами ' a ', ' b ', ' c ' и для каждой из них выполняется обработка в соответствии с заданием, затем все символы выводятся на экран. В конце цикла вводится очередной символ, и процесс обработки повторяется.
program STROKA (input, output);
Var:
Sim: Char;
literB: Boolean;
K, i, indA: Integer;
Begin
indA:= 0;
literB:= false;
Read (Sim);
{ цикл по всем символом строки }
While Sim <> '.' do
Begin
if (Sim >= '0') AND (Sim <= '9')
Then
{ обработка цифр }
Begin
Write ('(');
K:= ord (Sim) - ord ('0');
if ODD (K)
then Sim:= '-'
else Sim:= '+';
for i:= 1 to K do
Write (Sim);
Write (')')
End
Else
{ обработка остальных символов — не цифр }
Begin
Case Sim of
'a': indA:= indA + 1;
'b': literB:= true;
'c': if literB
then Sim:= '/'
end;
Write (Sim)
end;
Read (Sim)
end {While};
Writeln;
Writeln ('Буква "а" входит ', indA, ' раз')
End.
4.3 Пусть даны целое число п, символы S 1, S 2,..., S п. Удалите из данной последовательности все группы букв, образующих запись аbcd, то есть получите новую последовательность, не содержащую этих групп литер.
4.4 Пусть даны целое число п, символы S 1, S 2,..., S п, среди которых есть двоеточие. Получите все символы, расположенные:
а) до первого двоеточия включительно;
б) между первым и вторым двоеточием; если второго двоеточия нет, то получите все символы, расположенные после имеющегося двоеточия.
4.5 Напечатайте заданный непустой текст, удалив из него все буквы b, непосредственно перед которыми находится буква с.
4.6 Заданный текст распечатайте по строкам, понимая под строкой либо очередные 20 литер, если среди них нет запятой, либо часть текста до запятой включительно.
4.7 Пусть в заданный непустой текст входят только цифры и буквы. Определите, удовлетворяет ли он следующему условию:
а) текст начинается с некоторой ненулевой цифры, за которой следуют только буквы, и их количество равно числовому значению этой цифры;
б) текст начинается с k букв (1 ≤ k ≤ 9), за которыми следует только одна литера — цифра с числовым значением k;
в) сумма числовых значений цифр, входящих в текст, равна длине текста.
4.8 Пусть задан текст, за которым следует точка. Поменяйте все строчные латинские буквы, которые встречаются в тексте, на прописные.
4.9 Пусть дан непустой текст из заглавных латинских букв, за которым следует точка. Определите, упорядочены ли эти буквы по алфавиту.
4.10 Пусть задан текст, состоящий из слов. Под словом понимается последовательность литер, не содержащая пробелов и знаков препинания. Если слово начинается с латинской строчной буквы, замените ее на прописную.
4.11 Пусть вводится последовательность символов, длина которой не больше наперед заданного числа птах. Замените каждую из рядом стоящих групп точек одной точкой. Решите эту задачу в двух вариантах:
а) полученная последовательность просто выводится на печать, а массив, в котором хранится исходная последовательность, не изменяется;
б) преобразованная последовательность должна заместить исходную в массиве.
4.12 Известно, что длина последовательности символов не превышает наперед заданного числа птах. Подсчитайте максимальное количество идущих подряд пробелов.
4.13Пусть вводится последовательность символов, длина которой не превышает 80. Напечатайте те русские буквы (в алфавитном порядке), которые встречаются в заданной последовательности.
4.14 Пусть дан текст из 80 литер. Напечатайте сначала все цифры, входящие в него, а затем все остальные литеры, сохраняя при этом взаимное расположение литер в каждой из этих двух групп.
4.15 Пусть дан текст, содержащий от 1 до 70 букв. Напечатайте буквы текста в обратном порядке.
4.16 Пусть дан непустой текст из прописных русских букв, за которым следует точка. Определите, упорядочены ли эти буквы по алфавиту.
4.17 Пусть дан текст, за которым следует восклицательный знак. Замените все прописные русские буквы, встречающиеся в тексте, строчными.
4.18 Пусть дан текст, состоящий из слов, слова в тексте разделяются запятыми, текст оканчивается точкой. Вывести по алфавиту без повторений слова исходного текста.
Дата добавления: 2015-07-08; просмотров: 662 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Пояснения к программе | | | Пояснения к программе |