Загрузка данных
Вот полный, исправленный и готовый к запуску код для всех заданий из практической работы. Я расписал условия к каждой задаче и привел код в точном соответствии с логикой учебного материала, но с исправлением мелких недочетов, которые были на фото (например, для задачи 4 нужно обязательно выделять память под новую строку).
Также в конце я придумал и решил одно свое задание наподобие данных.
---
Задача 1
Условие: Подсчитать, сколько раз среди символов заданной строки встречается буква "а".
```pascal
program kolbukv_a;
uses crt;
var
s: string;
i, k: integer;
begin
write('Введите строку: ');
readln(s);
k := 0;
for i := 1 to length(s) do
if s[i] = 'а' then k := k + 1;
writeln('Буква "а" встречается ', k, ' раз(а)');
end.
```
Задача 2
Условие: Дано слово. Вывести слово, содержащее те же символы, но расположенные в обратном порядке.
```pascal
program slovaoborot;
uses crt;
var
s: string;
i: integer;
begin
write('Введите слово: ');
readln(s);
write('Слово в обратном порядке: ');
for i := length(s) downto 1 do
write(s[i]);
writeln; // Переход на новую строку для красоты
end.
```
Задача 3
Условие: Заменить все буквы "а" на буквы "б" в заданной строке. Подсчитать, сколько слов в тексте начинается на букву «а» (слова разделены пробелом).
Важно: подсчет слов нужно делать до замены букв, иначе мы потеряем все "а".
```pascal
program zamena_ab;
uses crt;
var
s: string;
i, k: integer;
begin
write('Введите строку: ');
readln(s);
// 1. Подсчет слов, начинающихся на "а"
k := 0;
for i := 1 to length(s) do
begin
// Если это начало строки или предыдущий символ - пробел, И текущий символ 'а'
if (s[i] = 'а') and ((i = 1) or (s[i-1] = ' ')) then
k := k + 1;
end;
writeln('Слов, начинающихся на "а": ', k);
// 2. Замена "а" на "б"
for i := 1 to length(s) do
if s[i] = 'а' then s[i] := 'б';
writeln('Строка после замены: ', s);
end.
```
Задача 4
Условие: Из заданной строки получить новую, повторив каждый символ дважды.
В оригинале на фото была ошибка: не выделялась память под новую строку ns. Здесь это исправлено.
```pascal
program udvsimv;
uses crt;
var
s, ns: string;
i, j, l: integer;
begin
write('Введите строку: ');
readln(s);
l := length(s);
SetLength(ns, 2 * l); // Выделяем память под новую строку (в 2 раза длиннее)
j := 1;
for i := 1 to l do
begin
ns[j] := s[i];
ns[j+1] := s[i];
j := j + 2;
end;
writeln('Результат: ', ns);
end.
```
Задача 5
Условие: Проверить, является ли заданное слово палиндромом.
```pascal
program palindrom;
uses crt;
var
s: string;
i, l, m, k: integer;
begin
write('Введите слово: ');
readln(s);
l := length(s);
m := l div 2; // Делим длину пополам (целочисленно)
k := 0; // Флаг: 0 - палиндром, 1 - не палиндром
for i := 1 to m do
if s[i] <> s[l+1-i] then k := 1;
if k = 1 then
writeln('Слово "', s, '" не палиндром')
else
writeln('Слово "', s, '" палиндром');
end.
```
---
Мое собственное задание (наподобие данных)
Условие: Заменить все пробелы в заданной строке на символ подчеркивания "_". Подсчитать количество заглавных русских букв в строке.
```pascal
program my_task;
uses crt;
var
s: string;
i, k: integer;
begin
write('Введите строку: ');
readln(s);
k := 0;
for i := 1 to length(s) do
begin
// 1. Замена пробелов на подчеркивания
if s[i] = ' ' then
s[i] := '_';
// 2. Подсчет заглавных русских букв (от А до Я)
if s[i] in ['А'..'Я'] then
k := k + 1;
end;
writeln('Строка после замены: ', s);
writeln('Количество заглавных русских букв: ', k);
end.
```