Какая строка получится в результате применения приведенной ниже программы к строке состоящей из 68 8

Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w). Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 0527150. Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.
Б) нашлось (v). Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл:

ПОКА условие последовательность команд КОНЕЦ ПОКА

выполняется, пока условие истинно.
В конструкции Если:

ЕСЛИ условие ТО команда1 ИНАЧЕ команда2 КОНЕЦ ЕСЛИ

выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Конкретизация условия для одной из задач этого типа:

ЕГЭ Информатика 2020 ФИПИ Задача 14


Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 68 идущих подряд цифр 8? В ответе запишите полученную строку.

НАЧАЛО ПОКА нашлось (222) ИЛИ нашлось (888) ЕСЛИ нашлось (222) ТО заменить (222, 8) ИНАЧЕ заменить (888, 2) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ

Решение

Несмотря на очевидную простоту, задача не решается тупым перебором за разумное время. Очевидно только, что в конкретном примере длина строки будет уменьшаться и поиск этой закономерности и был заложен авторами в суть этой задачи.

Однако, наличие возможности реализовать Исполнитель в виде программы меняет способ ее решения. Нужно просто написать программу. Единственное, что требуется кроме общих навыков программирования в этом случае, это опыт работы со строками. Тогда могут быть использованы такие программы (Бейсик, Паскаль, С++, С#):

C# (Visual Studio 2019>

// 12 тема. Исполнитель Редактор Общее решение (менять константы только!) using System; namespace ConsoleApp7 < class Program < const int N = 68; // длина строки const string c = «8»; // из какой цифры состоит строка const string sts1 = «222»; // подстрока для 1 поиска const string sts2 = «888»; // подстрока для 1 поиска const string stc1 = «8»; // на что заменяется 1 подстрока const string stc2 = «2»; // на что заменяется 1 подстрока static string s; //исходная строка из N символов //В строке s замена sts на stc static void Change(string sts, string stc) //в строке s замена sts на stc < int k = s.IndexOf(sts); s = s.Remove(k, 3); s = s.Insert(k, stc); >// Поиск s1 в строке s static bool Search(string s1) < string s2; int k; bool result = false; k = s.IndexOf(s1); if ((s.Length >2) (k >= 0)) < s2 = s.Substring(k, 3); if (s2.Equals(s1)) result = true; >return result; > // программа static void Main() < // строка из N одинаковых цифр s = c; for (int i = 1; i < N; i++) s += c; // вывод исходной строки Console.WriteLine(s); // цикл Редактора while (Search(sts1) || Search(sts2)) < if (Search(sts1)) // условие Change(sts1, stc1); else Change(sts2, stc2); >// вывод результата Console.WriteLine(s); > > >

Читайте также:
По программам подготовки специалистов среднего звена это профессии

Результат:

Информатика ЕГЭ. № 12. Выполнение алгоритмов для исполнителей. Исполнитель редактор. № 9365


888888888888888888888888888888888888888888888888888888888888
28

C++ (Visual Studio 2019>

// 12 тема. Исполнитель Редактор. Общее решение. Только менять константы! #include using namespace std; const int N = 68; // длина строки const string c = «8»; // из какой цифры состоит строка const string sts1 = «222»; // подстрока для 1 поиска const string sts2 = «888»; // подстрока для 1 поиска const string stc1 = «8»; // на что заменяется 1 подстрока const string stc2 = «2»; // на что заменяется 1 подстрока static string s; //исходная строка из N символов //В строке s замена sts на stc static void Change(string sts, string stc) //в строке s замена sts на stc < int k = s.find(sts); s = s.erase(k, 3); s = s.insert(k, stc); >// Поиск s1 в строке s static bool Search(string s1) < string s2; int k; bool result = false; k = s.find(s1); if ((s.size() >2) (k >= 0)) < s2 = s.substr(k, 3); if (s2 == s1) result = true; >return result; > // программа int main() < // строка из N одинаковых цифр s = c; for (int i = 1; i < N; i++) s += c; // вывод исходной строки cout // вывод результата cout

Паскаль (Pascal ABC)

// 12 тема. Исполнитель Редактор Общее решение (менять константы только!) const N=68; // длина строки c=’8′; // из какой цифры состоит строка sts1=’222′; // подстрока для 1 поиска sts2=’888′; // подстрока для 1 поиска stc1=’8′; // на что заменяется 1 подстрока stc2=’2′; // на что заменяется 1 подстрока var s: string; //исходная строка из N символов procedure Change(sts:string; stc:string); //в строке s замена sts на stc var k: integer; begin k:=s.IndexOf(sts); s:=s.Remove(k,3); s:=s.Insert(k,stc); end; function Search(s1: string): boolean; // поиск s1 в строке s var s2: string; k:integer; begin result:=false; k:=s.IndexOf(s1); if (s.Length>2) and (k >= 0) then begin s2:=s.Substring(k,3); if s2=s1 then result:=true; end; end; // программа begin // строка из N одинаковых цифр s:=c; for i: integer :=2 to N do s:=s+c; writeln(s); // вывод // цикл while search(sts1) or search(sts2) do begin if search(sts1) // условие then Change(sts1, stc1) else Change(sts2, stc2); end; // вывод результата writeln(s); end.

Бейсик (Visual Studio 2019>

12 тема. Исполнитель Редактор Общее решение (менять константы только!) Module Module1 Dim N As Integer = 60 ‘ длина строки Dim c, sts1, sts2, stc1, stc2, s As String ‘ В строке s замена sts на stc Sub Change(sts As String, stc As String) ‘ в строке s замена sts на stc Dim k As Integer k = s.IndexOf(sts) s = s.Remove(k, 3) s = s.Insert(k, stc) End Sub ‘ Поиск s1 в строке s Function Search(s1 As String) As Boolean Dim s2 As String Dim k As Integer Dim result As Boolean result = False k = s.IndexOf(s1) If s.Length > 2 And k >= 0 Then s2 = s.Substring(k, 3) If (s2.Equals(s1)) Then result = True End If End If Search = result End Function ‘ Основная программа Sub Main() c = «8» ‘ из какой цифры состоит строка sts1 = «222» ‘ подстрока для 1 поиска sts2 = «888» ‘ подстрока для 1 поиска stc1 = «8» ‘ на что заменяется 1 подстрока stc2 = «2» ‘ на что заменяется 1 подстрока ‘ строка из N одинаковых цифр s = c For i As Integer = 2 To N s = s + c Next i ‘ вывод исходной строки Console.WriteLine(s) ‘ цикл Редактора While Search(sts1) Or Search(sts2) If Search(sts1) Then Change(sts1, stc1) Else Change(sts2, stc2) End If End While ‘ вывод результата Console.WriteLine(s) Console.ReadKey() End Sub End Module

Читайте также:
Как изменить код программы exe

Ответ тот же.
Замечание. В VB оператор Print s не поддерживается, заменен на Console.WriteLine(s).

NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.

Источник: c-sharp.pro

Разбор 14 задания ЕГЭ 2016 по информатике из демоверсии

Разбор 14 задания ЕГЭ 2016 года по информатике из демоверсии. Это задание на умение исполнить алгоритм для конкретного исполнителя с фиксированным набором команд (уметь интерпретировать результаты, получаемые в ходе моделирования реальных процессов). Это задание повышенного уровня сложности. Примерное время выполнения задания 6 минут.

Задание 14:

Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды
заменить (111, 27)
преобразует строку 05111150 в строку 0527150.
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v,w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.

Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 68 идущих подряд цифр 8? В ответе запишите полученную строку.

НАЧАЛО
ПОКА нашлось (222) ИЛИ нашлось (888)
ЕСЛИ нашлось (222)
ТО заменить (222, 8)
ИНАЧЕ заменить (888, 2)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Разбор 14 задания ЕГЭ 2016:

Программа работает до тех пор, пока в строке есть цепочка цифр 222 или цепочка цифр 888.

Если встречается 222, то заменяем 8.
Если в строке нет цепочки 222, но встречается цепочка 888, то заменяем ее на 2.

В нашей строке 68 идущих подряд цифр 8.

1) меняем первые 888 на 2 и получаем
2 и (65 цифр 8)

2) меняем следующие 888 на 2 и получаем
22 и (62 цифр 8)

Читайте также:
Как пользоваться программой найти телефон

3) меняем следующие 888 на 2 и получаем
222 и (59 цифр 8)

4) теперь у нас появилась цепочка 222, поэтому мы должны заменить ее на 8
получаем (60 цифр 8)

Получилось следующее, за 4 шага мы заменили 9 восьмерок на 1 (или удалили 8 восьмерок). Становится понятно, что за каждые 4 шага мы будем удалять по 8 восьмерок.

60-8=52
52-8=44
44-8=36
36-8=28
28-8=20
20-8=12
12-8=4 (останется цепочка 8888)

На последнем шаге заменяем первые 3 восьмерки на 2 и получаем 28.

Ответ: 28

Источник: infedu.ru

Е12.16 ниже про­грам­мы к стро­ке, со­сто­я­щей из 68 иду­щих под­ряд цифр 8?

ниже про­грам­мы к стро­ке, со­сто­я­щей из 68 иду­щих под­ряд цифр 8?

Демонстрационный вариант ЕГЭ 2016 г. – задание №14

Ис­пол­ни­тель Ре­дак­тор по­лу­ча­ет на вход стро­ку цифр и пре­об­ра­зо­вы­ва­ет её. Ре­дак­тор может вы­пол­нять две ко­ман­ды, в обеих ко­ман­дах v и w обо­зна­ча­ют це­поч­ки цифр.

А) за­ме­нить (v, w).

Эта ко­ман­да за­ме­ня­ет в стро­ке пер­вое слева вхож­де­ние це­поч­ки v на це­поч­ку w. На­при­мер, вы­пол­не­ние ко­ман­ды

за­ме­нить (111, 27)

пре­об­ра­зу­ет стро­ку 05111150 в стро­ку 0527150. Если в стро­ке нет вхож­де­ний це­поч­ки v, то вы­пол­не­ние ко­ман­ды за­ме­нить (v, w) не ме­ня­ет эту стро­ку.

Б) на­шлось (v).

Эта ко­ман­да про­ве­ря­ет, встре­ча­ет­ся ли це­поч­ка v в стро­ке ис­пол­ни­те­ля Ре­дак­тор. Если она встре­ча­ет­ся, то ко­ман­да воз­вра­ща­ет ло­ги­че­ское зна­че­ние «ис­ти­на», в про­тив­ном слу­чае воз­вра­ща­ет зна­че­ние «ложь». Стро­ка ис­пол­ни­те­ля при этом не из­ме­ня­ет­ся.

ПОКА усло­вие
по­сле­до­ва­тель­ность ко­манд
КОНЕЦ ПОКА

вы­пол­ня­ет­ся, пока усло­вие ис­тин­но.

ЕСЛИ усло­вие
ТО ко­ман­да 1
ИНАЧЕ ко­ман­да 2
КОНЕЦ ЕСЛИ

вы­пол­ня­ет­ся ко­ман­да1 (если усло­вие ис­тин­но) или ко­ман­да2 (если усло­вие ложно).

Какая стро­ка по­лу­чит­ся в ре­зуль­та­те при­ме­не­ния при­ведённой ниже про­грам­мы к стро­ке, со­сто­я­щей из 68 иду­щих под­ряд цифр 8? В от­ве­те за­пи­ши­те по­лу­чен­ную стро­ку.

ПОКА на­шлось ( 222 ) ИЛИ на­шлось ( 888 )
ЕСЛИ на­шлось ( 222 )
ТО за­ме­нить ( 222 , 8 )
ИНАЧЕ за­ме­нить ( 888 , 2 )
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА

Решение:

Программа будет работать до тех пор, пока в строке есть цепочка цифр 222 или цепочка цифр 888.

Если в строке встречается 222, то заменяем на 8.
Если в строке нет цепочки 222, но встречается цепочка 888, то заменяем ее на 2.

Наша строка состоит из 68 идущих подряд цифр 8.

1) меняем первые 888 на 2 и получаем
2 и (65 цифр 8)

2) меняем следующие 888 на 2 и получаем
22 и (62 цифр 8)

3) меняем следующие 888 на 2 и получаем

222 и ( 59 цифр 8)

4) теперь у нас появилась цепочка 222, поэтому мы должны заменить ее на 8.
получаем строку состоящую из 60 цифр 8

Анализируем что произошло!

А получилось следующее, за 4 шага мы заменили 9 восьмерок на 1 (или удалили 8 восьмерок из нашей строки).
Становится понятно, что за каждые 4 шага мы будем удалять по 8 восьмерок.

12-8=4 останется строка состоящая из 4 идущих подряд 8 (8888).Так как 888 заменяется на 2, то в итоге мы получаем 28.

Ответ: 28

Источник: informatikaexpert.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru