В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения
элементов равны 1,2,3,6,5,0,4,8,9,7 соответственно,т.е. A[0] = 1; A[1] = 2 и т.д. Определите значение переменной c после выполнения следующего фрагмента программы.МОЖНО С ОБЪЯСНЕНИЕМ ПОЖАЛУЙСТАc:=0;for i:=1 to 9 do if A[i]>A[0] then begin c:=c+1; t:=A[i]; A[i]:=A[0]; A[0]:=t; end;Ответы на вопрос
короче больше перемудрили , смотри
у тебя есть массив A
i - это индексы ес что , A[i] эт значения
в чем смысл этой писанины ? цикл for прогоняет все индексы , а соответсна и все значения массива
и сравнивает значения каждого следующего индекса ( типо сначала значение А [1] , потом A [2] и так до 9 индекса ) со значением А[0] , которое сначала по условию 1
потом грубо говоря строки t:=A[i]; и A[0]:=t; можно заменить на A[0]:=A[i]; ( логично ж ) и наш изначальный A[0] будет принимать значение A[i] ( если выполнится if конечно же )
ДАЛЬШЕ ПРОГОНИМ ( это единственная более-менее полезная часть объяснения )
сначала заметь , что индексы идут от 1 до 9 ( а в условии индексы от 0 до 9)
смотрим : значение А [1] > А[0] ? ( т.е. 2 больше 1 ?) - да! , к c прибавляем единичку , a A[0] теперь не 1 , а 2.
аналогичные действия выполняем до 6 ( по значениям смысле) , на этот момент c должно быть равно 3
дальше будут числа меньше ( 5,0 , 4)
а потом по аналогии продолжаем , ведь 8 больше 6 ( опять же, я уже не обращаю внимания на индексы , ведь оно нам и не надо )
8 > 6 ? => c:= c+1 = 3 + 1 = 4 ; A[0]:=8
9> 8 ? => c:= c+1 =4 + 1 = 5; A[0]:= 9
дальше идти не будет ( 7 меньше 9 ) и программа прервется
в ответ улетает 5
Давайте разберем фрагмент программы по шагам и выясним значение переменной c после его выполнения.
Исходный массив
A:A = [1, 2, 3, 6, 5, 0, 4, 8, 9, 7]Инициализация переменных:
c := 0Начало цикла
for i := 1 to 9 do:- Итерация 1 (i = 1):
Сравнение
A[1] > A[0](2 > 1) - истина. Значит, выполняется блокbegin ... end.cувеличивается на 1 (c := c + 1), теперьc = 1.- Значение
tстановится равнымA[1](т.е.,t := 2). A[1]становится равнымA[0](т.е.,A[1] := 1).A[0]становится равнымt(т.е.,A[0] := 2).
Результат после первой итерации:
A = [2, 1, 3, 6, 5, 0, 4, 8, 9, 7]- Итерация 2 (i = 2):
Сравнение
A[2] > A[0](3 > 2) - истина. Выполняется блокbegin ... end.cувеличивается на 1 (c := c + 1), теперьc = 2.- Значение
tстановится равнымA[2](т.е.,t := 3). A[2]становится равнымA[0](т.е.,A[2] := 2).A[0]становится равнымt(т.е.,A[0] := 3).
Результат после второй итерации:
A = [3, 1, 2, 6, 5, 0, 4, 8, 9, 7](Процесс повторяется для всех оставшихся элементов массива)
- Итерация 1 (i = 1):
Сравнение
Итоговое значение переменной
c: После выполнения всех итераций цикла,cувеличивается на 1 за каждую итерацию, гдеA[i] > A[0]. В итоге, значениеcбудет равно количеству элементов массиваA, которые больше первого элементаA[0].В данном случае,
A[0] = 3, и элементы, которые больше 3, это:[6, 5, 4, 8, 9, 7]. Таким образом,c = 6.Итоговый массив
Aпосле выполнения программы:A = [3, 1, 2, 6, 5, 0, 4, 8, 9, 7]Итоговое значение переменной
c:c = 6
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
