Определите какое число будет напечатано в результате работы следующей программы
Перейти к содержимому

Определите какое число будет напечатано в результате работы следующей программы

Решение задачи 10 ОГЭ 2017 по информатике

Решение задачи 10 ОГЭ по информатике

Задачи типа 10 ОГЭ по информатике относятся к довольно сложным. В подобных задачах проверяется знание учащегося работы с одномерными массивами, а также с циклами.

Рассмотрим решение такой задачи на примере демоверсии ФИПИ по информатике за 2017 год. Напомню, что на сайте уже есть решение подобной задачи.

Условие:

Алгоритмический
язык
Бейсик Паскаль
алг
нач
целтаб Dat[1:10]
цел k, m
Dat[1] := 16
Dat[2] := 20
Dat[3] := 20
Dat[4] := 41
Dat[5] := 14
Dat[6] := 21
Dat[7] := 28
Dat[8] := 12
Dat[9] := 15
Dat[10] := 35
m := 0
нц для k от 1 до 10
если Dat[k]>m то
m := Dat[k]
все
кц
вывод m
кон
DIM Dat(10) AS INTEGER
DIM k,m AS INTEGER
Dat(1) = 16: Dat(2) = 20
Dat(3) = 20: Dat(4) = 41
Dat(5) = 14: Dat(6) = 21
Dat(7) = 28: Dat(8) = 12
Dat(9) = 15:Dat(10) = 35
m = 0
FOR k = 1 TO 10
IF Dat(k)>m THEN
m = Dat(k)
ENDIF
NEXT k
PRINT m
Var k, m: integer;
Dat: array[1..10] of integer;
Begin
Dat[1] := 16; Dat[2] := 20;
Dat[3] := 20; Dat[4] := 41;
Dat[5] := 14; Dat[6] := 21;
Dat[7] := 28; Dat[8] := 12;
Dat[9] := 15; Dat[10] := 35;
m := 0;
for k := 1 to 10 do
if Dat[k]>m then
begin
m := Dat[k]
end;
writeln(m);
End.

Решение:

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

Посмотрим на первые строки:

Var k, m: integer;
Dat: array[1..10] of integer;

В них мы говорим Паскалю, что будем использовать две целочисленные переменные — k и m, а также описываем массив, который называем Dat. Этот массив состоит из 10 элементов, в качестве которых выступают целые числа. Далее начинается блок операторов и самое интересное.

Первое, что мы делаем — заполняем описанный массив Dat значениями. Это происходит в следующих строках:

Dat[1] := 16; Dat[2] := 20;
Dat[3] := 20; Dat[4] := 41;
Dat[5] := 14; Dat[6] := 21;
Dat[7] := 28; Dat[8] := 12;
Dat[9] := 15; Dat[10] := 35;

Думаю, понятно, что в первый элемент массива мы кладем число 16, во второй 20, в третий 20 и так далее. Это можно отобразить более наглядно в виде таблицы (кликните для увеличения).

Задача 10 ОГЭ по информатике

Итак, массив мы заполнили, дальше пойдет самое интересное. Переменной m мы присваиваем значение, равное нулю. А после этого запускаем цикл:

for k := 1 to 10 do
if Dat[k]>m then
begin
m := Dat[k]
end;

Давайте проанализируем, что происходит в этом цикле. По первой строчке (for k := 1 to 10 do) мы видим, что в цикле переменная k меняется от 1 до 10 с шагом 1. Далее условный оператор (if Dat[k]>m then), который сравнивает значение текущего элемента массива и значение переменной m. И если элемент массива больше, то в переменную m записываем значение этого элемента. Давайте попробуем пошагово.

Итак, в переменной m у нас ноль, начинаем выполнение цикла. Значение k равно единице. Подставим в условие значения Dat[1] (а это 16) и m и получим:

if 16>0 then

Как видим, это условие истинно, значит выполним следующее присваивание m := Dat[1] и в переменной m вместо нуля уже окажется число 16. Первый шаг цикла мы отработали. Перейдем ко второму.

На втором шаге переменная k равна 2, а условие примет вид if Dat[2]>m. Подставим значения и получим if 20>16 then. Условие опять истинное, значит выполнив следующий оператор присваивания m := Dat[k] получим в переменной m число 20.

На третьем шаге будем сравнивать значение третьего элемента массива (20) и значение переменной m (20). Это условие будет ложным, так как 20 не больше 20, а значит и оператор присваивания мы не выполняем, переходя к четвертому шагу.

На 4 шаге получим, что Dat[4] = 41, а в переменной m число 20. Так как 41 > 20, то в m у нас окажется 41.

Этого уже достаточно, чтобы понять логику программы. Подумайте сами, прежде чем прочитать мой ответ. На самом деле, мы проходим по всем элементам массива и сравниваем его наибольшим предыдущим. И если элемент больше, ты запоминаем его в переменной m и выводим его на экран (writeln(m)). Следовательно, в переменной m в конце выполнения программы у нас будет самый больший элемент массива Dat. А это 41. Это и будет ответом — 41.

Задание 10 ОГЭ информатика

Массив чисел — это последовательность чисел, которые принадлежат одной и той же переменной (называемой «массив») и имеют порядковые номера — индексы. Массив часто именуется таблицей.

DIM A(10) AS INTEGER ‘массив A — целочисленный массив, ‘который состоит из 10 чисел с индексами от 1 до 10 . A(1)=3 ‘элементу массива с индексом 1 присваиваем значение 3 A(2)=8 ‘элементу массива с индексом 2 присваиваем значение 8 A(3)=6 ‘элементу массива с индексом 3 присваиваем значение 6 FOR i = 1 TO 3 PRINT A(i) NEXT i ‘в цикле выводим значения трех элементов массива: ‘A(1), A(2) и A(3) ‘т.е. на экране появятся числа: ‘3 ‘8 ‘6

A=[3, 8, 6, 10, 15, 2, 7, 9, 8, 7] # A — массив, # который состоит из 10 чисел с индексами от 0 до 9 # т.е. A[0]=3 элемент массива с индексом 0 равен значению 3 # A[1]=8 элемент массива с индексом 1 равен значению 8 # A[2]=6 элемент массива с индексом 2 равен значению 6 for i in range (3): print (A[i]) # в цикле выводим значения трех элементов массива: # A[0], A[1] и A[2] # т.е. на экране появятся числа: # 3 # 8 # 6

Разбор 10 задания ОГЭ по информатике

    Подробный видеоразбор по ОГЭ 10 задания:

В таб­ли­це Dat хранятся дан­ные из­ме­ре­ний сред­не­суточной тем­пе­ра­ту­ры за 10 дней в гра­ду­сах ( Dat[1] — дан­ные за пер­вый день, Dat[2] — за вто­рой и т. д.).

Определите, какое число будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты следующей программы.

Текст про­грам­мы приведён на нескольких язы­ках программирования:

Var k, m: integer; Dat: array[1..10] of integer; Begin Dat[1] := 12; Dat[2] := 15; Dat[3] := 17; Dat[4] := 15; Dat[5] := 14; Dat[6] := 12; Dat[7] := 10; Dat[8] := 13; Dat[9] := 14; Dat[10] := 15; m := 0; for k := 1 to 10 do if Dat[k] > m then begin m := Dat[k]; end; writeln(m); End.

DIM Dat(10) AS INTEGER DIM k,m AS INTEGER Dat(1) = 12: Dat(2) = 15 Dat(3) = 17: Dat(4) = 15 Dat(5) = 14: Dat(6) = 12 Dat(7) = 10: Dat(8) = 13 Dat(9) = 14: Dat(10) = 15 m = 0 FOR k = 1 TO 10 IF Dat(k) > m THEN m = Dat(k) ENDIF NEXT k PRINT m

Dat = [12, 15, 17, 15, 14, 12, 10, 13, 14, 15] m = 0 for k in range (10): if Dat[k] > m: m = Dat[k] print (m)

    Рассмотрим алгоритм:

Затем обнуляется переменная m :

Результат: 17

В таблице Dat хранятся данные измерений среднесуточной температуры за 10 дней в градусах ( Dat[1] — данные за первый день, Dat[2] — за второй и т. д.).

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

Текст программы приведён на нескольких языках программирования:

Var k, m: integer; Dat: array[1..10] of integer; Begin Dat[1] := 12; Dat[2] := 15; Dat[3] := 17; Dat[4] := 15; Dat[5] := 14; Dat[6] := 12; Dat[7] := 10; Dat[8] := 13; Dat[9] := 14; Dat[10] := 15; m := 0; for k := 1 to 10 do if Dat[k] > 12 then begin m := m + 1; end; writeln(m); End.

DIM Dat(10) AS INTEGER DIM k,m AS INTEGER Dat(1) = 12: Dat(2) = 15 Dat(3) = 17: Dat(4) = 15 Dat(5) = 14: Dat(6) = 12 Dat(7) = 10: Dat(8) = 13 Dat(9) = 14: Dat(10) = 15 m = 0 FOR k = 1 TO 10 IF Dat(k) > 12 THEN m = m + 1 ENDIF NEXT k PRINT m

Dat = [12, 15, 17, 15, 14, 12, 10, 13, 14, 15] m = 0 for k in range (10): if Dat[k] > 12: m = m + 1 print (m)

#include <iostream> using namespace std; int main() < int Dat[10] = <12, 15, 17, 15, 14, 12, 10, 13, 14, 15>; int m = 0; for (int k = 0; k < 10; k++) if (Dat[k] > 12) m = m + 1; cout << m; return 0; >

    Рассмотрим алгоритм:

Затем обнуляется переменная m :

Результат: 7

В таблице A представлены данные о количестве голосов, поданных за 10 исполнителей народных песен ( A[1] — количество голосов, поданных за первого исполнителя, A[2] — за второго и т. д.).

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

Текст программы приведён на нескольких языках программирования:

var k, m: integer; A: array[1..10] of integer; Begin A[1] := 16; A[2] := 20; A[3] := 20; A[4] := 41; A[5] := 14; A[6] := 21; A[7] := 28; A[8] := 12; A[9] := 15; A[10] := 35; m := 1; for k := 1 to 10 do if A[k] > A[m] then begin m := k; end; writeln(m); End.

DIM A(10) AS INTEGER DIM k,m AS INTEGER A(1) = 16: A(2) = 20 A(3) = 20: A(4) = 41 A(5) = 14: A(6) = 21 A(7) = 28: A(8) = 12 A(9) = 15: A(10) = 35 m = 1 FOR k = 1 TO 10 IF A(k) > A(m) THEN m = k ENDIF NEXT k PRINT m

A= [16, 20, 20, 41, 14, 21, 28, 12, 15, 35] m = 1 for k in range (10): if A[k] > A[m]: m = k print (m)

#include <iostream> using namespace std; int main() < int A[10] = <16, 20, 20, 41, 14, 21, 28, 12, 15, 35>; int m = 1; for (int k = 0; k < 10; k++) if (A[k] > A[m]) m = k; cout << m; return 0; >

    Рассмотрим алгоритм:

Результат: 4

В таблице A представлены данные о количестве голосов, поданных за 10 исполнителей народных песен ( A[1] — количество голосов, поданных за первого исполнителя, A[2] — за второго и т. д.).

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

Текст программы приведён на нескольких языках программирования:

var k, m: integer; A: array[1..10] of integer; Begin A[1] := 20; A[2] := 16; A[3] := 20; A[4] := 36; A[5] := 15; A[6] := 21; A[7] := 28; A[8] := 17; A[9] := 16; A[10] := 35; m := 1; for k := 1 to 10 do if A[k] >= A[m] then begin m := m + 1; end; writeln(m); End.

DIM A(10) AS INTEGER DIM k,m AS INTEGER A(1) = 20: A(2) = 16 A(3) = 20: A(4) = 36 A(5) = 15: A(6) = 21 A(7) = 28: A(8) = 17 A(9) = 16: A(10) = 35 m = 1 FOR k = 1 TO 10 IF A(k) >= A(m) THEN m = m + 1 ENDIF NEXT k PRINT m

A= [20, 16, 20, 36, 15, 21, 28, 17, 16, 35] m = 1 for k in range (10): if A[k] >= A[m]: m = m + 1 print (m)

#include <iostream> using namespace std; int main() < int A[10] = <20, 16, 20, 36, 15, 21, 28, 17, 16, 35>; int m = 1; for (int k = 0; k < 10; k++) if (A[k] >= A[m]) m = m + 1; cout << m; return 0; >

    Рассмотрим алгоритм:

Результат: 11

В таблице Dat хранятся данные о количестве сделанных заданий учениками ( Dat[1] — заданий сделал первый ученик, Dat[2] — второй и т.д.).

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

Текст программы приведён на нескольких языках программирования:

var k, m, n: integer; Dat: array[1..10] of integer; Begin Dat[1] := 7; Dat[2] := 9; Dat[3] := 10; Dat[4] := 5; Dat[5] := 6; Dat[6] := 7; Dat[7] := 9; Dat[8] := 8; Dat[9] := 6; Dat[10] := 9; m := 10; n := 0; for k := 1 to 10 do if Dat[k] < m then begin m := Dat[k]; n := k; end; writeln(n); End.

DIM Dat(10) AS INTEGER DIM k, m, n AS INTEGER Dat(1) = 7: Dat(2) = 9 Dat(3) = 10: Dat(4) = 5 Dat(5) = 6: Dat(6) = 7 Dat(7) = 9: Dat(8) = 8 Dat(9) = 6: Dat(10) = 9 m = 10; n = 0 FOR k = 1 TO 10 IF Dat(k) < m THEN m = Dat(k) n = k ENDIF NEXT k PRINT n

Dat = [7, 9, 10, 5, 6, 7, 9, 8, 6, 9] m = 10 n = 0 for k in range(0,10): if Dat[k] < m: m = Dat[k] n = k + 1 print (n)

#include <iostream> using namespace std; int main() < int Dat[10] = <7, 9, 10, 5, 6, 7, 9, 8, 6, 9>; int m = 10; int n = 0; for (int k = 0; k < 10; k++) if (Dat[k] < m) < m = Dat[k]; n = k + 1; >cout << n; return 0; >

    Рассмотрим алгоритм:

Ответ: 4

В результате выполнения программы напечатано число 10.
Какое наибольшее значение может иметь переменная S после выполнения программы?

Текст программы приведён на нескольких языках программирования.

Var k, m, S, N: integer; Dat: array[1..100] of integer; Begin N:= 5; m := 0; S := 0; for k := 1 to N do readln(Dat[k]); for k := 1 to N do begin S := S + Dat[k]; if Dat[k]>m then begin m := Dat[k] end end; writeln(m) End.

DIM Dat(100) AS INTEGER DIM N AS INTEGER DIM k, m, S AS INTEGER N = 5 FOR k = 1 TO N INPUT Dat(k) NEXT k m = 0 S = 0 FOR k = 1 TO N S = S + Dat(k) IF Dat(k)>m THEN m = Dat(k) END IF NEXT k PRINT m

Определите какое число будет напечатано в результате работы следующей программы

Задания Д9 № 10

В таблице Dat хранятся данные измерений среднесуточной температуры за 10 дней в градусах (Dat[1] — данные за первый день, Dat[2] — за второй и т. д.). Определите, какое число будет напечатано в результате работы следующей программы. Текст программы приведён на пяти языках программирования.

DIM Dat(10) AS INTEGER

DIM k,m AS INTEGER

Dat(1) = 12: Dat(2) = 15

Dat(3) = 17: Dat(4) = 15

Dat(5) = 14: Dat(6) = 12

Dat(7) = 10: Dat(8) = 13

Dat(9) = 14: Dat(10) = 15

IF Dat(k) = 15 THEN

Dat = [12, 15, 17, 15, 14, 12, 10, 13, 14, 15]

for k in range (10):

Var k, m: integer;

Dat: array[1..10] of integer;

С++

using namespace std;

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

Задания Д9 № 30

В таблице Dat хранятся данные измерений среднесуточной температуры за 10 дней в градусах (Dat[1] — данные за первый день, Dat[2] — за второй и т. д.). Определите, какое число будет напечатано в результате работы следующей программы. Текст программы приведён на пяти языках программирования.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *