Написать программу, которая определит количество слов в тексте, если между любыми двумя словами ровно один пробел. Предполагается, что в тексте есть хотя бы одно слово.
Программа:
var
st: string;
n, k: integer;
begin
writeln('Введите текст');
readln(st);
n := length(st);
k := 1;
for var i := 1 to n do
begin
if st[i] = ' ' then k := k + 1;
end;
writeln('В тексте ', k, ' слов(-о/-а)');
end.
Тестирование:
Для проверки можно скопировать текст.
Современные текстовые редакторы позволяют получить статистику по символам и словам в документе (пример 9.1). Грамотный набор текста предполагает наличие одного пробела между словами. В таком тексте количество слов будет на 1 больше количества пробелов.
Написать программу, которая определит, каких знаков препинания в тексте больше — точек или запятых.
Программа:
var
St: string;
n, k1, k2: integer;
begin
writeln('Введите текст');
readln(St);
n := length(St);
k1 := 0;k2 := 0;
for var i := 1 to n do
begin
if St[i] = '.' then k1 := k1 + 1;
if St[i] = ',' then k2 := k2 + 1;
end;
if k1 > k2 then writeln('Точек больше')
else
if k2 > k1 then writeln('Запятых больше')
else writeln('Количество запятых равно количеству точек');
end.
Тестирование:
Для проверки можно скопировать текст.
Для книжных стилей и письменной речи характерны сложные предложения, которые позволяют сделать речь более информативной и выразительной. Если текст состоит в основном из простых предложений, то в нем будут преобладать точки. В сложных предложениях, которые содержат несколько грамматических основ, встречаются запятые.
Написать программу, которая выведет в заданном слове согласные буквы синим цветом, а гласные — красным (в слове не встречаются «ь» и «ъ»). Посчитать количество гласных букв во введенном слове.
Программа:
uses GraphABC;
var
s: string;
n, k, p: integer;
const
g = 'ЁУЕЭОАЫЯИЮёуеэоаыяию';
begin
writeln('Введите слово');
readln(s);writeln(s);
n := length(s);
for var i := 1 to n do
begin
p := pos(s[i], g);
if p <> 0 then
begin
SetFontColor(clRed);
k := k + 1;
end
else
SetFontColor(clBlue);
write(s[i]);
end;
writeln;
SetFontColor(clGreen);
writeln('Количество гласных - ', k);
end.
Тестирование.
Ввести слово «Привет». Результат:
Написать программу, которая заменит в строке с вещественными числами запятые на точки. Например, из числа 23,5 должно получиться число 23.5.
Программа:
var st: string; n: integer;
begin
writeln('Введите строку');
readln(st);
n := length(st);
for var i := 1 to n do
if (st[i] = ',') then
st[i] := '.';
writeln('Преобразованная строка:');
writeln(st);
end.
Тестирование
Написать программу, которая заменит в тексте каждую цифру 2 словом «два».
Программа:
var st: string;
i: integer;
begin
writeln('Введите строку');
readln(st);
i := 1;
while i <= length(st) do begin
if (st[i] = '2') then begin
//замена символов
delete(st, i, 1);
insert('два', st, i);
end;
//переход к следующему символу
i := i + 1;
end;
writeln('Преобразованная строка:');
writeln(st);
end.
Тестирование.
Написать программу, которая проверяет правильность расстановки пробелов в тексте и, если между словами более одного пробела, удаляет лишние.
Программа:
var st: string;
i: integer;
begin
writeln('Введите строку');
readln(st);
i := 1;
while i < length(st) do begin
if (st[i] = ' ') and (st[i+1] = ' ')
then delete(st, i, 1)
else i := i + 1;
end;
writeln('Преобразованная строка: ');
writeln(st);
end.
Тестирование. Введите текст
При правильном наборе компьютерного текста между любыми двумя словами должен быть только один пробел.
Результат:
Написать программу, которая проверяет правильность расстановки пробелов вокруг тире. Если пробелы пропущены, то вставляет их. Предполагается, что в тексте нет слов, которые пишутся через дефис, двух знаков «–» подряд и лишних пробелов.
Программа:
var st: string;
i: integer;
begin
writeln('Введите строку');
readln(st);
i := 2;
while i < length(st) do begin
if st[i] = '-' then begin
if st[i+1] <> ' ' then
insert(' ',st, i+1);
if st[i-1] <> ' ' then
begin
insert(' ',st, i);
i := i + 1;
end
end;
i := i + 1;
end;
writeln('Преобразованная строка: ');
writeln(st);
end.
Тестирование. Введите текст
Жизнь прожить–не поле перейти. Родимая сторона– мать, чужая –мачеха. Окончил дело – гуляй смело.
Результат:
Написать программу, которая выведет слова-палиндромы (слова, которые одинаково читаются слева направо и справа налево), входящие в заданный текст. Слова в тексте могут быть разделены одним или несколькими пробелами. Пробелы могут быть в начале и в конце текста.
Программа:
var st, sl: string;
p: boolean; n: integer;
procedure DelSpace(var s: string);
begin
while (s<>'') and (s[1]= ' ') do
delete(s, 1, 1);
end;
function FirstWord(s: string): string;
var i: integer;
begin
i := pos(' ', s);
if i <> 0 then
FirstWord := copy(s, 1, i - 1)
else
FirstWord := s;
end;
function CheckPalindrom(s: string): boolean;
var n: integer; f: boolean;
begin
n := length(s);
f := true;
for var i := 1 to n div 2 do
if s[i] <> s[n-i + 1] then
f := false;
CheckPalindrom := f;
end;
begin
writeln('Введите st ');
readln(st); p := false;
while st <> '' do
begin
DelSpace(st);
sl := FirstWord(st);
if CheckPalindrom(sl) then
begin
writeln(sl); p := true;
end;
n := length(sl);
delete(st, 1, n);
end;
if p = false then
writeln('Нет палидромов');
end.
Тестирование. Введите текст:
На берегу стоит шалаш из камыша. Для трафаретной печати предназначен мимеограф, или ротатор. Пшеничная лепешка наан является блюдом индийской национальной кухни.
Результат:
function FirstWord
procedure DelSpace
function CheckPalindrom
Основная программа
FloatToStr(a) {Число a — вещественное}
IntToStr(a) {Число a — целое)
StrToFloat(s) {Строка s — запись вещественного числа}
StrToInt(s) {Строка s — запись целого числа}
Str(v,s); {Преобразование числа в строку}
Val(s,v,er); {Преобразование строки в число}
Написать программу, которая проверяет, является ли данный текст записью числа. В непустой текст могут входить только цифры или буквы. Если да, то найти сумму цифр данного числа, иначе вывести соответствующее сообщение.
Программа:
var st: string; n, k, s: integer;
begin
writeln('Введите текст');
readln(st);
n := length(st); k := 0; s := 0;
for var i := 1 to n do
begin
if (st[i] >= '0') and (st[i] <= '9') then begin
k := k + 1;
s := s + StrToInt(st[i]);
end;
end;
if k = n then
writeln('Сумма цифр =', s)
else
writeln('Текст не число');
end.
Написать программу, которая раскрывает скобки в числовом выражении и вычисляет его значение. Выражение имеет вид a(b + c) и вводится как строка. Вместо a, b и c — символы цифр, образующие целое число (количество цифр в каждом из них не более девяти). Вывести последовательность преобразований и результат. Например, для выражения 5(7 + 8) должны получить: 5(7 + 8) = 5 * 7 + 5 * 8 = 35 + 40 = 75.
Программа:
var st,sr,s1,s2,s3: string;
a,b,c,n,r,r1,r2,p: integer;
begin
writeln('Введите выражение');
readln(st);
sr := st + '=';
//первое число а
p := pos('(', st);
s1 := copy (st, 1, p-1);
a := StrToInt(s1);
delete(st, 1, p);
sr := sr + s1 + '*';
//второе число b
p := pos('+', st);
s2 := copy (st, 1, p-1);
b := StrToInt(s2);
delete(st, 1, p);
sr := sr + s2 + '+' + s1 +'*';
//третье число c
n := length (st);
s3 := copy (st, 1, n-1);
c := StrToInt(s3);
sr := sr + s3 + '=';
//вычисление произведений
r1 := a * b;
sr := sr+IntToStr(r1)+'+';
r2 := a * c;
sr := sr+IntToStr(r2)+'=';
//вычисление результата
r := r1 + r2;
sr := sr + IntToStr(r);
writeln(sr);
end.
Тестирование.
Введите выражение 5(7 + 8).
Результат:
Введем выражение 12(234 + 802).
Получим следующий результат:
Проверьте свои знания ➠
Напишите программу, которая определит количество предложений в тексте. Предложение заканчивается одним из трех символов: «.», «?», «!». Предполагается, что в тексте есть хотя бы одно предложение (см. пример 9.2).
Напишите программу, которая определит количество слов в тексте, если между любыми двумя словами может быть более одного пробела. Предполагается, что в тексте есть хотя бы одно слово (см. пример 9.2).
Напишите программу, которая определит, каких букв в строке с русским текстом больше: «о» или «O» (см. пример 9.3).
Напишите программу, которая определит, какой процент составляют буквы «a» во введенном тексте (см. пример 9.3).
Напишите программу, которая определит, сколько слов в тексте начинается на букву «а».
*Напишите программу, которая определит, какой процент слов в тексте начинается на букву «к». (Слово может начинаться как с прописной, так и со строчной буквы.)
Дан текст. Напишите программу, которая проверит, правильно ли в нем расставлены круглые скобки. Если нет, то вывести соответствующее сообщение: «Открывающихся скобок больше (меньше), чем закрывающихся»; «Закрывающиеся скобки раньше открывающихся скобок».
В тексте могут встречаться гласные и согласные буквы, а также символы «ь» и «ъ». Измените программу из примера 9.5 так, чтобы символы «ь» и «ъ» выводились желтым цветом.
Дано арифметическое выражение, состоящее из цифр, скобок и знаков арифметических действий. Напишите программу, которая выведет цифры синим цветом, а остальные символы — голубым: например, в выражении 2 + (3 – 5) * 7 – 13 (см. пример 9.5).
Напишите программу для решения задачи. Задана строка цифр. Вывести четные цифры синим цветом, а нечетные — голубым (например, 128235). Сколько в строке нечетных цифр? (См. примеры 9.3 и 9.5.)
*Вводится текст, слова в котором разделены пробелами, после слов могут стоять точки или запятые. Напишите программу, которая выведет синим цветом те буквы «а», которые являются последними буквами слова, остальные символы текста вывести голубым цветом (например, в скороговорке На дворе — трава, на траве — дрова). Какой процент от общего количества слов составляют слова, заканчивающиеся на букву «а»?
Напишите программу, которая заменит в заданном тексте каждую букву «a» символом «*» (см. пример 9.6).
Напишите программу, которая заменит в заданном тексте каждую цифру символом «?» (см. примеры 9.5 и 9.6).
Напишите программу, которая заменит в заданном тексте из латинских букв все вхождения «x» на «ks» (см. пример 9.7).
Напишите программу, которая заменит в заданном тексте из латинских букв все вхождения «ing» на «ed» (см. пример 9.7).
*Напишите программу для решения задачи. В заданном тексте заменить все слова А1 на слова А2 (слова в тексте разделены пробелами, слова А1 и А2 вводятся).
Напишите программу, которая удалит из текста все гласные буквы (см. примеры 9.5 и 9.9).
Напишите программу, которая удалит из текста все знаки «+», непосредственно за которыми стоит не цифра.
Напишите программу, которая в заданном тексте после каждой латинской буквы «q» добавит букву «u» (см. пример 9.10).
Напишите программу, которая в заданном тексте после каждого знака препинания («.», «,», «:», «;») вставит пробел, если его там нет (см. пример 9.10).
Измените функцию CheckPalindrom из примера 9.11 так, чтобы слова, которые начинаются на заглавную букву, тоже считались палиндромами, например «Анна», «Алла».
Добавьте в программу из примера 9.11 подсчет количества выведенных палиндромов.
*Фразы-палиндромы читаются одинаково слева направо и справа налево без учета пробелов и знаков препинания. Например: «Кулинар, храни лук» или «А роза упала на лапу Азора». Напишите программу, которая определит, является ли фраза палиндромом.
Напишите программу, которая проверяет, является ли данный текст записью числа. В непустой текст могут входить только цифры или буквы. Если да, то требуется проверить, делится ли данное число на 4, иначе вывести соответствующее сообщение. Для проверки делимости на 4 использовать признак делимости: число делится на 4, если двузначное число, состоящее из последних двух цифр исходного числа, делится на 4 (см. пример 9.13).
Измените программу из упражнения 20 так, чтобы проверялась делимость на 2, 3, 5, 6, 8, 12 (используйте соответствующие признаки делимости).
Дан текст. Напишите программу, которая проверит, может ли быть этот текст записью вещественного числа.
Напишите программу для решения задачи. Строка представляет собой запись следующего вида: «а ± b». Найти значение выражения. Вместо знака «±» может быть знак «+» или знак «−». Числа a и b являются целыми и состоят не более чем из девяти цифр (см. пример 9.14).
Напишите программу для решения задачи. Строка представляет собой запись следующего вида: «(a + b) / c». Выделить из записи числа и найти целочисленное значение выражения и остаток от деления. Числа, входящие в выражение, являются целыми и состоят не более чем из девяти цифр (см. пример 9.14).