Программа содержит цикл с предусловием: «нашлось (2222)» или «нашлось (8888)». Значит, тело цикла будет выполняться, если окажется истинным хотя бы одна из них, в противном случае программа останавливается.
Рассмотрим тело цикла:
Если в строке есть подстрока 2222, то происходит ее замена на 8. Иначе (если в строке нет 2222), но есть подстрока 8888, то она заменяется на 2.
Исходная строка имеет 146 идущих подряд цифр 8 (888…8). Значит, условие цикла истинно (нашлось (8888)).
Так как в исходной строке нет подстроки 2222, то выполняется ветвь ИНАЧЕ и происходит замена подстроки 8888 на 2. Таким образом, после одного шага цикла строка будет иметь следующий вид: 2888…8 (цифр 8 теперь на 4 меньше, то есть 142).
Очевидно, после ещё трёх шагов цикла строка примет следующий вид: 2222888…8 (цифр 8 теперь ещё на 12 (4*3) меньше, то есть 130).
На следующем шаге при проверке условия «нашлось (2222)» получаем истину, поэтому выполняется ветвь ЕСЛИ и подстрока 2222 заменяется на 8 (цифр 8 теперь 131).
Не трудно заметить, что за 5 шагов в строке шестнадцать цифр 8 заменяются на одну 8 (т. е. удаляется 15 (146-131) восьмерок).
Выясним, сколько раз в исходной строке встретится по 15 восьмерок и какой будет строка после проведенных преобразований:
146 ÷ 15 = 9 (остаток 11).
Значит, строка имеет следующий вид: 8888 8888 888 (11 восьмерок).
В результате двух последних шагов цикла подстроки 8888 заменяются на двойки и окончательно получаем строку 22888.
--- C# 7.3 ---
using System;
namespace CSLearn
{
class Program
{
struct Point
{
public Point(double x, double y)
{
X = x;
Y = y;
}
public double X { get; set; }
public double Y { get; set; }
}
static void Main(string[] args)
{
Point P = new Point(
int.Parse(Console.ReadLine()),
int.Parse(Console.ReadLine()));
Func<double, double> LinearFunction = x => -x + 6;
if (P.X > 0 && P.Y > 0 && LinearFunction(P.Y) > P.X)
{
Console.WriteLine("Содержит");
}
else
{
Console.WriteLine("Не содержит");
}
Console.ReadKey();
}
}
}
22888
Объяснение:Проанализируем алгоритм:
Программа содержит цикл с предусловием: «нашлось (2222)» или «нашлось (8888)». Значит, тело цикла будет выполняться, если окажется истинным хотя бы одна из них, в противном случае программа останавливается.
Рассмотрим тело цикла:
Если в строке есть подстрока 2222, то происходит ее замена на 8. Иначе (если в строке нет 2222), но есть подстрока 8888, то она заменяется на 2.
Исходная строка имеет 146 идущих подряд цифр 8 (888…8). Значит, условие цикла истинно (нашлось (8888)).
Так как в исходной строке нет подстроки 2222, то выполняется ветвь ИНАЧЕ и происходит замена подстроки 8888 на 2. Таким образом, после одного шага цикла строка будет иметь следующий вид: 2888…8 (цифр 8 теперь на 4 меньше, то есть 142).
Очевидно, после ещё трёх шагов цикла строка примет следующий вид: 2222888…8 (цифр 8 теперь ещё на 12 (4*3) меньше, то есть 130).
На следующем шаге при проверке условия «нашлось (2222)» получаем истину, поэтому выполняется ветвь ЕСЛИ и подстрока 2222 заменяется на 8 (цифр 8 теперь 131).
Не трудно заметить, что за 5 шагов в строке шестнадцать цифр 8 заменяются на одну 8 (т. е. удаляется 15 (146-131) восьмерок).
Выясним, сколько раз в исходной строке встретится по 15 восьмерок и какой будет строка после проведенных преобразований:
146 ÷ 15 = 9 (остаток 11).
Значит, строка имеет следующий вид: 8888 8888 888 (11 восьмерок).
В результате двух последних шагов цикла подстроки 8888 заменяются на двойки и окончательно получаем строку 22888.