Вопрос задан 11.10.2026 в 17:07. Предмет Информатика. Спрашивает Иванов Иван.

С помощью Паскаля решить задачи:
1. Ввести с клавиатуры символьную строку и заменить в ней все буквы "а" на "б" и все буквы "б" на "а" (заглавные на заглавные и строчные на строчные буквы). Пример: ааббАА, а после замены стало: ббааББ.
2. Ввести с клавиатуры символьную строку и определить, сколько в ней слов. Пример: Вася пошел гулять.---- Найдено 3 слова.
3. Ввести с клавиатуры в одну строку фамилию, имя и отчество, разделив их пробелом. Вывести фамилию и инициалы. Пример: Пирожков Петр Васильевич, а стало: П.В. Пирожков.

Перейти к ответам

Ответы на вопрос

Отвечает Дауренов Арнур.

Ниже представлены решения всех трёх задач на языке Паскаль (PascalABC.NET). Для каждой задачи приведены программа, объяснение алгоритма и пример работы.

Задача 1. Замена букв «а» и «б» в строке

Условие: Ввести с клавиатуры символьную строку и заменить в ней все буквы «а» на «б», а все буквы «б» на «а». При этом заглавные буквы должны оставаться заглавными, а строчные — строчными.

Программа на Паскале

pascal
program Zadacha1; var s: string; i: integer; begin Write('Введите строку: '); ReadLn(s); for i := 1 to Length(s) do begin case s[i] of 'а': s[i] := 'б'; 'б': s[i] := 'а'; 'А': s[i] := 'Б'; 'Б': s[i] := 'А'; end; end; WriteLn('После замены: ', s); end.

Пример работы программы

Ввод:

ааббАА

Вывод:

ббааББ

Объяснение

  1. ReadLn(s) — считывает введённую строку.

  2. Length(s) — определяет количество символов в строке.

  3. Цикл for последовательно проверяет каждый символ.

  4. Оператор case выполняет замену:

    • «а» заменяется на «б»;

    • «б» заменяется на «а»;

    • «А» заменяется на «Б»;

    • «Б» заменяется на «А».

  5. WriteLn выводит изменённую строку.

Важно, что все замены выполняются одновременно по смыслу: каждый символ проверяется только один раз. Поэтому уже заменённая буква не изменяется повторно.

Задача 2. Подсчёт количества слов в строке

Условие: Ввести с клавиатуры символьную строку и определить, сколько слов она содержит.

Слова считаются разделёнными пробелами. Программа также правильно работает, если между словами несколько пробелов.

Программа на Паскале

pascal
program Zadacha2; var s: string; i, k: integer; inWord: boolean; begin Write('Введите строку: '); ReadLn(s); k := 0; inWord := False; for i := 1 to Length(s) do begin if (s[i] <> ' ') and (s[i] <> #9) then begin if not inWord then begin k := k + 1; inWord := True; end; end else inWord := False; end; WriteLn('Найдено слов: ', k); end.

Пример работы программы

Ввод:

Вася пошел гулять.

Вывод:

Найдено слов: 3

Объяснение

В программе используются две основные переменные:

  • k — счётчик слов, первоначально равный нулю.

  • inWord — логическая переменная, которая показывает, находится ли программа внутри слова.

Алгоритм работы:

  1. Пользователь вводит строку.

  2. Цикл for перебирает все её символы.

  3. Если встретился символ, отличный от пробела или табуляции, и до этого программа не находилась внутри слова, значит, началось новое слово. Счётчик увеличивается на единицу.

  4. Если встретился пробел или табуляция, переменная inWord становится равной False.

  5. После завершения цикла выводится общее количество слов.

Например, в строке «Вася пошел гулять.» программа найдёт три слова: «Вася», «пошел», «гулять.». Точка в конце последнего слова не влияет на результат.

Задача 3. Преобразование ФИО в инициалы и фамилию

Условие: Ввести с клавиатуры в одну строку фамилию, имя и отчество, разделив их пробелом. Вывести сначала инициалы, а затем фамилию.

Программа на Паскале

pascal
program Zadacha3; var s, fam: string; p1, p2: integer; begin Write('Введите фамилию, имя и отчество: '); ReadLn(s); p1 := Pos(' ', s); p2 := p1 + Pos(' ', Copy(s, p1 + 1, Length(s))); fam := Copy(s, 1, p1 - 1); WriteLn(s[p1 + 1], '.', s[p2 + 1], '. ', fam); end.

Пример работы программы

Ввод:

Пирожков Петр Васильевич

Вывод:

П.В. Пирожков

Объяснение

  1. ReadLn(s) — вводит фамилию, имя и отчество в одну строку.

  2. Pos(' ', s) — находит позицию первого пробела, который отделяет фамилию от имени.

  3. Copy(s, p1 + 1, Length(s)) — получает часть строки после первого пробела.

  4. Выражение p2 := p1 + Pos(...) находит позицию второго пробела, который отделяет имя от отчества.

  5. Copy(s, 1, p1 - 1) — выделяет фамилию.

  6. s[p1 + 1] — первая буква имени.

  7. s[p2 + 1] — первая буква отчества.

  8. WriteLn выводит инициалы с точками, затем пробел и фамилию.

Эта программа рассчитана на ввод фамилии, имени и отчества, разделённых ровно одним пробелом, как указано в условии.

Итог

№

Что делает программа

Пример результата

1

Меняет буквы «а» и «б» местами с сохранением регистра

ааббАА → ббааББ

2

Подсчитывает количество слов в строке

Вася пошел гулять. → 3 слова

3

Преобразует ФИО в инициалы и фамилию

Пирожков Петр Васильевич → П.В. Пирожков

Все три решения используют стандартные возможности языка Паскаль: строки типа string, циклы, условные операторы и функции работы со строками. Каждая программа является самостоятельной, поэтому её нужно запускать отдельно.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос