М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
stazagreen
stazagreen
23.03.2021 04:37 •  Информатика

1. Как вы думаете, что делают эти операторы:

print( A[2] )

A[2] = 5

A[0] = A[1] + 2*A[2]

Индексом может быть также значение целой переменной или арифметического выражения, результат которого – целое число. Например, для массива на Рис. 3.7 программа

i = 1

print( A[i], A[i+1], A[3*i+1], A[i-1] )

выведет то же самое, что и программа

print( A[1], A[2], A[4], A[0] )

2. Определите, что выведет этот фрагмент программы для массива на Рис. 3.7:

i = 1

A[2] = A[i] + 2*A[i-1] + A[3*i]

print( A[2] + A[4] )

3. Найдите ошибки в этом фрагменте программы:

A = [1, 2, 3, 4, 5]

x = 1

print( A[x-3] )

A[x+4] = A[x-1] + A[2*x]

Выход за границы массива – это обращение к элементу с индексом, который не существует в массиве.

Далее везде будем считать, что N – это текущий размер массива A, с которым мы работаем, то есть то значение, которое возвращает вызов функции len(A).

Перебор элементов массива

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

for i in range(N):

... # работаем с A[i]

Здесь вместо многоточия можно добавлять операторы, которые работают с элементом A[i] (в том числе и изменяют его).

4. Какие значения будет принимать переменная i при выполнении этого цикла?

Мы видим, что благодаря использованию массива нам достаточно описать, что делать с одним элементом, а затем поместить эти действия внутрь цикла, перебирающего значения индексов. Если бы мы применяли переменные, то нам пришлось бы описывать необходимые действия для каждого элемента (правда, при этом цикл бы не понадобился).

5. Выполните ручную прокрутку фрагмента программы:

N = 5

A = [0]*N

for i in range(N):

A[i] = i

6. Какие значения будут записаны в массив?

Запишите фрагмент программы, который заполнит массив нулями.

Заполним массив первыми N натуральными числами в обратном порядке: в первый по счёту элемент массива (с индексом

0) должно быть записано число N, во второй – число N – 1, а в последний – единица.

Сначала запишем цикл в развёрнутом виде: операторы, которые должны быть выполнены:

A[0] = N

A[1] = N-1

...

A[N-1] = 1

Теперь запишем цикл, в котором значение, присваиваемое очередному элементу, обозначается через Х:

for i in range(N):

A[i] = X

Однако не всё так величина X должна изменяться при переходе к следующему элементу.

7. Определите, как меняется X: чему равно начальное значение этой переменной, как она изменяется при переходе к следующему элементу?

Можно записать цикл так:

X = N

for i in range(N):

A[i] = X

X -= 1

А можно его значительно у заметив, что при увеличении номера элемента i на единицу значение X уменьшается, причём тоже на единицу. Поэтому сумма i+X остаётся постоянной! Её можно вычислить, зная, что для первого по счёту элемента она равна 0+N.

Выразите X из уравнения i + X = 0 + N.

В элемент с номером i записывается значение N – i, поэтому цикл можно записать так:

for i in range(N):

A[i] = N - i

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

Этот значит, что нужно заменить значение элемента A[i] на A[i]+1:

for i in range(N):

A[i] += 1

8. Определите, какие значения окажутся в массиве после выполнения фрагмента программы:

A = [6, 5, 4, 3, 2]

N = len(A)

for i in range(N):

A[i] += i

9. Запишите фрагмент программы, который умножит все элементы массива на 2.

10. Запишите фрагмент программы, который умножит первый элемент массива на 1, второй – на 2, третий – на 3 и т.д

👇
Открыть все ответы
Ответ:
Настя34565688
Настя34565688
23.03.2021
Чертёж дан во вложении.
Пусть ΔABC - равнобедренный, АВ = с - его основание, АС = ВС = b - боковые стороны. По условию треугольник симметричен относительно горизонтальной оси, так что его основание АВ должно быть перпендикулярно горизонтальной оси и при этом АО = ОВ, а вершина С попадет на горизонтальную ось. Разместим ΔABC так, чтобы основание попало на вертикальную ось.
Окружность, описанная вокруг треугольника, пройдет через все три его вершины. Точка М - центр описанной окружности, - лежит на пересечении перпендикуляров, проведенных из середин сторон треугольника. Поскольку ΔABC равнобедренный, то ОС - его высота и отрезок МС, равный радиусу окружности R, также лежит на горизонтальной оси.
Найдем высоту ОС, обозначив её через h, по теореме Пифагора.
ОС - это катет ΔAOC, AO ⊥ OC.
\displaystyle h= \sqrt{AC^2-AO^2}= \sqrt{b^2-\left(\frac{c}{2}\right)^2}
Площадь ΔABC находим по формуле
\displaystyle S= \frac{1}{2}\cdot AB \cdot OC = \frac{1}{2}hc
Для нахождения радиуса R = MC рассмотрим прямоугольные ΔAOC и ΔMDC, имеющие общий угол АСО = α
\displaystyle \cos \alpha= \frac{OC}{AC}= \frac{CD}{MC} \to MC= \frac{AC\cdot CD}{OC}; \\ R= \frac{b\cdot \displaystyle \frac{b}{2}}{h} = \frac{b^2}{2h}; \qquad OM=h-R
Теперь легко сделать необходимое построение.
Для этого откладываем от начала координат по горизонтальной оси отрезок ОМ и проводим из него, как из центра, окружность радиуса R. Соединяем между собой три точки пересечения окружностью осей координат и получаем треугольник с длинами сторон, равными заданным.

Ниже приводится программа на языке Microsoft QBasic, позволяющая рассчитать длину отрезка ОМ (Mx - координату х точки М) и радиус описанной окружности R по заданной длине основания с и длине боковой стороны b.

INPUT "Основание: ", c
INPUT "Боковая сторона: ", b
h = SQR(b ^ 2 - (c / 2) ^ 2)
R = b ^ 2 / (2 * h)
Mx = h - R
PRINT "Радиус равен "; R, "Координата центра равна "; Mx

Тестовое решение:
Y:\qbasic>QBASIC.EXE
Основание: 6
Боковая сторона: 5
Радиус равен  3.125         Координата центра равна  .875

Чтобы продолжить, нажмите любую клавишу

(qbasic) построить равнобедренный треугольник симметричный относительно горизонтальной оси, задать е
4,6(48 оценок)
Ответ:
yra221111
yra221111
23.03.2021
// PascalABC.NET 3.1, сборка 1230 от 27.04.2016
begin
  var n:=ReadInteger('n=');
  var a:=MatrixRandom(n,n,10,99);
  var s:=0;
  var k:=0;
  for var i:=0 to n-1 do begin
    for var j:=0 to n-1 do Print(a[i,j]);
    Writeln;
    if a[i,i].IsEven then begin s+=a[i,i]; Inc(k) end;
    end;
  if k>0 then Writeln('S=',s/k:0:2)
  else Writeln('На главной диагонали нет четных элементов')
end.

Тестовое решение
n= 8
63 13 33 90 25 21 87 91
88 88 48 13 30 59 81 27
73 23 76 77 52 19 33 97
53 87 13 74 17 35 61 70
77 96 51 61 82 33 63 22
39 88 84 54 88 73 74 69
76 26 69 14 45 80 70 54
80 36 47 38 18 22 84 62
S=75.33
4,5(90 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ