Загрузка данных


Вот полный, исправленный и готовый к запуску код для всех заданий из практической работы. Я расписал условия к каждой задаче и привел код в точном соответствии с логикой учебного материала, но с исправлением мелких недочетов, которые были на фото (например, для задачи 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.
```