Определи значение переменной t после выполнения программы если значение переменной n 6

Сегодня посмотрим 6 задание из ЕГЭ по информатике 2022.

В этом уроке мы будем использовать метод перебора для решения различных задач из 6 задания ЕГЭ по информатике 2022.

Решать задачи будем на языке Python.

Задача (Классическая)

Определите, при каком наименьшем введённом значении переменной s программа выведет число 23. Для Вашего удобства программа представлена на трёх языках программирования.

var s, n: integer; begin readln(s); n := 50; while s > 0 do begin s := s div 2; n := n — 3 end; writeln(n) end.
s = int(input()) n = 50 while s > 0: s = s // 2 n = n — 3 print(n)
#include using namespace std; int main() < int s, n = 50; cin >> s; while (s > 0) < s = s / 2; n = n — 3; > cout endl; return 0; >

Источник задачи: https://kpolyakov.spb.ru/

Решим задачу с помощью перебора.

Будем подставлять каждое число в диапазоне от 1 до 1000 в наш алгоритм с помощью цикла for. Узнаем, при каких значениях на выходе программа будет печатать число 23.

Анализ простой программы. Значение переменной после выполнения цикла while-do (информатика, ЕГЭ)


for i in range(1, 1001): s = i n = 50 while s > 0: s = s // 2 n = n — 3 if n==23: print(i)

Вместо команды input() присваиваем в переменную n очередное число. В конце программы вместо команды print() пишем условие. Печатаем только те значения переменной i, которые приводят к тому, что в переменной n будет нужный результат (число 23).

Программа напечатает следующие числа:

Самое маленькое число, которое подходит, это 256.

Ещё одна задача-ловушка из 6 задания ЕГЭ по информатике 2022.

Задача (С подвохом)

Определите, сколько существует целых положительных значений, подаваемых на вход программе, при которых программа выведет 27.

var s, n: integer; begin readln(s); n := 3; while s*n 243 do begin s := s div 3; n := n * 9 end; writeln(n) end.
s = int(input()) n = 3 while s*n 243: s = s // 3 n = n * 9 print(n)
#include using namespace std; int main() < int s, n = 3; cin >> s; while (s*n 243) < s = s / 3; n = n * 9; > cout endl; return 0; >

В этой программе подвох заключается в том, что, если мы будем перебирать числа от 1 до 1000, то программа зависнет и ничего не напечатает.

В таких случаях можно попробовать перебрать числа с 1000 до 1.

for i in range(1000, 0, -1): s = i n = 3 while s*n if n==27: print(i)

Третий параметр «-1» для цикла for означает, что мы перебираем числа с 1000 до 1 в обратном порядке.

Программа напечатает числа с 80 до 27.

Если проверить на небольших числа, то мы должны прибавить 1 к разнице двух чисел.

Закрепим метод перебора в 6 задании из ЕГЭ по информатике 2022.

Задача (Закрепление)

(А.Г. Минак) Определите, при каком введённом значении переменной s программа выведет число 16.

var s, n: integer; begin readln(s); n := 0; while s*s 101 do begin s := s + 1; n := n + 2 end; writeln(n) end.
s = int(input()) n = 0 while s*s 101: s = s + 1 n = n + 2 print(n)
#include using namespace std; int main() < int s, n = 0; cin >> s; while (s*s 101) < s = s + 1; n = n + 2; > cout endl; return 0; >

Источник задачи: https://kpolyakov.spb.ru/

Здесь справляется стандартный перебор от 1 до 1000.

for i in range(1, 1001): s = i n = 0 while s*s if n==16: print(i)

ЕГЭ по информатике 2021 — Задание 14 (Чемпионская подготовка)

2. Определить значение переменной s после выполнения следующих операторов при n=6, 5, 9

Найдите правильный ответ на вопрос ✅ «2. Определить значение переменной s после выполнения следующих операторов при n=6, 5, 9 read (n) ; s:=4; for i:=0 to n do s:=s+i; write (s) . » по предмету Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.

Читайте также:
Что такое программа brutus

Новые вопросы по информатике

Написать программу, которая выводит на экран результаты следующих действий: 27-5= 11+21= 32/2= 2+2*2= (2+2) * 2= Написать программу, которая выводит на экран результаты следующих действий: 21-4= 21+11= 43/3= 3+3*3= (3+3) * 3=

Вариант 2 1. Даны три числа. Найдите сумму второго и третьего числа. Найдите квадрат первого числа. 2. Даны длины сторон прямоугольника. Найдите площадь прямоугольника.

3. Даны длины катетов прямоугольного треугольника. Найдите периметр треугольника.

Почему при А=1, В=1, С=1 ответ АVВ равно 1?

2. Какое значение будет иметь переменная b после выполнения следующих операторов присваивания: a:=3; b:=a+9; b:=a+b; b:=a-b+b/a. 3.

Найдите наиболее точное общее имя каждой группе объектов: з) клавиатура, сканер, мышь

Главная » Информатика » 2. Определить значение переменной s после выполнения следующих операторов при n=6, 5, 9 read (n) ; s:=4; for i:=0 to n do s:=s+i; write (s) ;

Источник: iotvet.com

ЕГЭ по информатике — Задание 19 (Массивы)

Новое 19 задание 2023-ого года можете посмотреть в этой статье.

Сегодня будем тренироваться решать 19 задание из ЕГЭ по информатике.

В девятнадцатом задании ЕГЭ по информатике обычно даются задачи, в которых есть программный код на пяти языках программирования, и нужно показать умение работать с массивами.

Но зачем вообще нужны массивы в программировании ? Давайте об этом немного поговорим!

Зачем нужны массивы ?

Все примеры буду рассматривать на языке программирования Паскаль, который популярен на уроках информатики.

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

var x, y, z, m, n: integer; begin // Первоначальные значения x := 2; y := 3; z := 1; m := 6; n := 8; //Удваиваем значения x := 2 * x; y := 2 * y; z := 2 * z; m := 2 * m; n := 2 * n;

Видим, что приходится каждую переменную умножать отдельно.

Теперь тоже самое сделаем с помощью массива.

const n = 5; var i :integer; A:array[1..n] of integer; begin // Первоначальные значения A[1] := 2; A[2] := 3; A[3] := 1; A[4] := 6; A[5] := 8; //Удваиваем значения for i:=1 to n do A[i] := 2 * A[i];

Обратите внимание, что удвоение во втором случае идёт с помощью двух строчек, когда в первом случае, удвоение получается с помощью пяти строчек. Если бы переменных было 1000, то выигрыш в объёме кода, был бы ещё большим.

Схематично наш массив можно представить так:

ЕГЭ по информатике - задание 19 (Массив)

Это те же 5 переменных, но они объединены общем именем A. К каждому элементу массива можно обратится по индексу A[1], A[2] и т.д.

Здесь мы задали нумерацию элементов массива от 1 до 5. В паскале можно задать нумерацию элементов массива и от нуля. Например A:array[0..24] of integer;

Удобство использования массива заключается в том, что его элементы можно перебирать и обрабатывать с помощью ЦИКЛОВ! Значит, обычно массив и цикл работают в связке.

Не терпится уже разобрать первый пример из предположительных задач ЕГЭ по информатике.

Примеры решения задач 19 задания из ЕГЭ по информатике

В программе используются целочисленный массив A с индексами от 0 до 9. Значения элементов массива равны 4; 5; 4; 7; 6; 3; 9; 11; 7; 8 соответственно, т.е. A[0] = 4; A[1] = 5 и т.д.

Читайте также:
Почему не все отели участвуют в программе кэшбэк

Определите значение переменной k после выполнения следующего фрагмента программы, записанной ниже на разных языках программирования.

k=0 FOR i=0 TO 8 IF A(i) > A(i+1) THEN k = k + 1 t = A(i) A(i) = A(i+1) A(i+1) = t END IF NEXT i
k = 0 for i in range(9): if A[i] > A[i+1]: k = k + 1 t = A[i] A[i] = A[i+1] A[i+1] = t

k := 0; for i := 0 to 8 do if A[i] > A[i+1] then begin k := k + 1; t := A[i]; A[i] := A[i + 1]; A[i + 1] := t end;
k := 0 нц для i от 0 до 8 если A[i] > A[i + 1] то k := k + 1 t := A[i] A[i] := A[i + 1] A[i+1] := t все кц
k = 0; for (i = 0; i 8; i++) if (A[i] > A[i + 1]) < k = k + 1 t = A[i]; A[i] = A[i + 1]; A[i + 1] = t; >

Рассмотрим программу на языке Паскаль.

В начале переменная k = 0.

Затем начинается ЦИКЛ. Цикл будет выполнятся, пока переменная i «бежит» от 0 до 8.

При первом проходе ЦИКЛА i = 0, при втором i = 1 и т.д.

Внутри цикла проверяется условие (A[i] > A[i+1]). Если условие ВЕРНО, то программа прибавляет к переменной k единицу, и плюс, меняет значения ячеек массива A[i] и A[i+1] с помощью дополнительной переменной t.

ЕГЭ по информатике - задание 19 (Массивы, разбор программы)

Про замену значений двух переменных у меня на сайте написана целая статья!

Чтобы понять, чему равна переменная k после окончания программы, нужно понять, сколько раз будет верно условие внутри цикла.

Сам массив нам дан! (4; 5; 4; 7; 6; 3; 9; 11; 7; 8).

ЕГЭ по информатике - задание 19 (Массивы, решение задачи)

На рисунке показана каждая итерация ЦИКЛА при всех значениях переменной i. Зелёной галочкой отмечены те итерации, где сработает условие, и, значит, переменная k будет увеличена на 1.

Важно: После первого срабатывания условия, программа меняет значения элементов A[1] и A[2]. И наш массив принимает следующий вид: 4; 4; 5; 7; 6; 3; 9; 11; 7; 8. И при следующем проходе A[2] снова принимает значение «5», а не «4»! И так во всех случаях, когда условие срабатывает!

Таким образом, значение k после выполнения программы равна 5.

Продолжаем подготовку к 19 заданию из ЕГЭ по информатике.

Задача (ЕГЭ по информатике, 2019, Москва)

Представленный ниже фрагмент программы обрабатывает элементы одномерного массива A с индексами от 0 до 9. Перед началом выполнения данного фрагмента эти элементы массива имели значения 2, 3, 5, 6, 10, 4, 8, 6, 12, 9 (т.е. A[0] = 2, A[1] = 3, . , A[9] = 9).

Определите значение переменной s после выполнения фрагмента этой программы (записанной ниже на разных языках программирования)

n = 6 s = 0 FOR i = 0 TO 9 IF A(i) > A(n) THEN s = s + (A(i) MOD A(n)) t = A(i) A(i) = A(n) A(n) = t END IF NEXT i
n = 6 s = 0 for i in range(0, 10): if A[i] > A[n]: s += A[i] % A[n] t = A[i] A[i] = A[n] A[n] = t

n := 6 s := 0 for i:=0 to 9 do begin if A[i] > A[n] then begin s := s + (A[i] mod A[n]); t := A[i]; A[i] := A[n]; A[n] := t; end end;
n = 6; s = 0; for(i = 1; i 9; ++i) < if (A[i] > A[n]) < s += A[i] % A[n]; t = A[i]; A[i] = A[n]; A[n] = t; >>

В начале задаются начальные значения для переменных s и n. Если посмотреть дальше глазами, то видим, что переменная n участвует для указания индекса элемента массива, переменная s — это результат суммы некоторых вычислений.

В ЦИКЛЕ i проходит каждое значение от 0 до 9. В теле Цикла только условие! А в условии проверяется: будет ли элемент массива A с индексом i больше, чем A[n].

Читайте также:
Вайбер чья программа страна

В первый раз n=6 (A[6] = 8). Напоминаю, что в этой задаче номера индексов массива начинаются с нуля! Но если условие «сработает», то A[n] поменяется.

Если условие выполнится, то значение A[n] станет равно A[i]. Опять присутствует блок, где элементы массива A[n] и A[i] меняются значениями (Найдите этот кусок кода сами!). И, соответственно, сравнивать в условии будем тоже с новым значением.

Так же, если условие выполнится, то мы к тому, что было к переменной s прибавим значение A[i] mod A[n] (mod — это операция, которая показывает остаток от деления).

Причем, сначала происходит суммирование для переменной s, а потом уже замена значения для A[n].

i A[i] A[n] A[i] > A[n] A[i] mod A[n] s
2 8 2 > 8
1 3 8 3 > 8
2 5 8 5 > 8
3 6 8 6 > 8
4 10 8 10 > 8 2 2
5 4 10 4 > 10 2
6 10 10 10 > 10 2
7 6 10 6 > 10 2
8 12 10 12 > 10 2 4
9 9 12 9 > 12 4

Таким образом, по окончании данного фрагмента программы, получится в переменной s значение 4.

Ещё один пример 19 задания из реального экзамена, который был в 2020 году в Москве!

Задача (ЕГЭ по информатике, 2020, Москва)

Представленный ниже фрагмент программы обрабатывает элементы одномерного целочисленного массива A c индексами от 0 до 11. Перед началом выполнения данного фрагмента эти элементы массива имели значения согласно таблице:

1 2 3 4 5 6 7 8 9 10 11
5 43 20 7 13 7 20 13 2 33 15 5

Определите значение переменной s после выполнения фрагмента этой программы (записанного ниже на разных языках программирования).

s = 0 FOR i = 1 TO 11 IF A(i-1) DIV A(i) < 2 THEN s = s + A(i) ELSE A(i) = A(i) * i END IF NEXT i
s = 0 for i in range(1, 12): if A[i-1] // A[i] < 2: s += A[i] else: a[i] = a[i] * i

s := 0; for i:=1 to 11 do begin if A[i-1] div A[i] < 2 then begin s := s + A[i] else A[i] := A[i] * i; end end;
s = 0; for (i = 1; i < 12; ++i ) < if (A[i-1] // A[i] < 2) < s += A[i] >else < A[i] = A[i] * i >>

Цикл «пробегает» весь массив. Здесь переменная i начинает идти с 1, потому что мы внутри тела цикла обращаемся к элементу с индексом i-1. Если бы i пошла с нуля, то получилось бы, что программа обратилась к элементу с индексом -1, и была бы ошибка.

Внутри ЦИКЛА находится одно условие. В условии сразу проверяется меньше ли двух результат от целочисленного деления A[i-1] на A[i] (div — это целочисленное деление, т.е. обычное деление, но дробная часть отбрасывается). Если условие выполнится, то программа к переменной s прибавит элемент A[i]. Если условие не будет выполнено, то элемент A[i] будет умножен на i, и это повлияет на следующую итерацию, ведь массив то изменится.

i A[i-1] A[i] A[i-1] div A[i] 0 43 43 (в конце итерации)
2 43 20 2 43 40 (в конце итерации)
3 40 7 5 43 21 (в конце итерации)
4 21 13 1 56 13 (в конце итерации)
5 13 7 1 63 7 (в конце итерации)
6 7 29 92 29 (в конце итерации)
7 29 13 2 92 91 (в конце итерации)
8 91 2 45 92 16 (в конце итерации)
9 16 33 125 33 (в конце итерации)
10 33 15 2 125 150 (в конце итерации)
11 150 5 30 125 55 (в конце итерации)

Ответ: 125

На этом всё! Счастливого ЕГЭ по информатике!

Источник: code-enjoy.ru

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