Настя играла в сапёр , Аня играла в Pizza , Саша играл в "Паук" , Иван играл в «Маджонг» , а Артём играл в гонки
Объяснение:
1) Вычёркиваем то, что назвали ребята, ведь все они оказались неправы (см. вложение 1)
2) Так как ребята предполагали, что другие играли в определённые игры, значит они и сами в них не играли (например, Саша думал, что в гонки играет Аня, а это значит, что Саша не играл в гонки), значит у них тоже вычёркиваем те игры, которые они назвали (см. вложение 2)
3) Теперь, у некоторых ребят осталось по одной клетке и сначала мы узнаем, что Саша играл в "Паук", потом нам станет понятно, что Артём играл в гонки, затем мы поймём, что Аня играла в Pizza, после единственным вариантом игры Ивана остаётся Маджонг и в конце мы поймём, что Настя играла в сапёр.
Достоинства языка C++
1)Масштабируемость. На языке C++ разрабатывают программы для самых различных платформ и систем.
2)Возможность работы на низком уровне с памятью, адресами, портами. Что, при неосторожном использовании, может легко превратиться в недостаток.
3)Возможность создания обобщенных алгоритмов для разных типов данных, их специализация, и вычисления на этапе компиляции, используя шаблоны.
Недостатки языка C++
1)Наличие множества возможностей, нарушающих принципы типобезопасности приводит к тому, что в С++-программы может легко закрасться трудноуловимая ошибка.
2)Плохая поддержка модульности. Подключение интерфейса внешнего модуля через препроцессорную вставку заголовочного файла (#include) серьёзно замедляет компиляцию, при подключении большого количества модулей. Для устранения этого недостатка, многие компиляторы реализуют механизм прекомпиляции заголовочных файлов Precompiled Headers.
3)Недостаток информации о типах данных во время компиляции (CTTI).
4)Язык C++ является сложным для изучения и для компиляции.
5)Некоторые преобразования типов неинтуитивны. В частности, операция над беззнаковым и знаковым числами выдаёт беззнаковый результат.
Как-то так:
//fpc 3.0.0
program HelloWorld;
var
str, ps1, zm1, ps2, zm2: string;
errors, i: integer;
begin
// обнуляем ошибки
errors:= 0;
// просим строку
writeln('Enter string: ');
readln(str);
ps1:= 'чя'; // ищем в строке
zm1:= 'ча'; // меням на
ps2:= 'щя'; // ищем в строке
zm2:= 'ща'; // меняем на
// перебираем строку посимвольно
for i:=length(str) downto 1 do
// если нашли нужную подстроку, которая в ps1
if copy(str,i,length(ps1))=ps1 then
begin
inc(errors); // увеличиваем счетчик ошибок
insert(zm1,str,i); // вставояем перед найденой подстрокой нашу новую подстроку из zm1
delete(str,i+length(zm1),length(ps1)); // удаляем старую подстроку
end;
// перебираем строку посимвольно
for i:=length(str) downto 1 do
// если нашли нужную подстроку, которая в ps2
if copy(str,i,length(ps2))=ps2 then
begin
inc(errors); // увеличиваем счетчик ошибок
insert(zm2,str,i); // вставояем перед найденой подстрокой нашу новую подстроку из zm2
delete(str,i+length(zm2),length(ps2)); // удаляем старую подстроку
end;
// выводим
writeln('Количество ошибок = ', errors);
writeln('Исправленная строка: ', str);
end.
Результат работы в приложении. Более читабельную версию кода можно посмотреть и проверить тут: https://rextester.com/OWVV92742