Хелпикс

Главная

Контакты

Случайная статья





i := Длина(a). пока i > 0. c := Извлечь(a,i). b := Склеить(b,c). b := Склеить(b,'Т')



i := Длина(a)

k := 2

b := 'А'

пока i > 0

нц

c := Извлечь(a,i)

b := Склеить(b,c)

i := i – k

кц

b := Склеить(b,'Т')

Какое значение будет у переменной b после выполнения вышеприведенного фрагмента алгоритма, если значение переменной a было ‘ПОЕЗД’?

1) ‘АДЕПТ’        2) ‘АДЗЕОП’              3) ‘АДТЕТПТ’       4) ‘АДЗОТ’

Решение:

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

2) заметим, что последняя команда алгоритма, b:=Склеить(b,'Т'), добавляет букву 'Т' в конец строки b, поэтому ответ 2 – явно неверный (строка должна оканчиваться на букву 'Т', а не на 'П')

3) для решения будем использовать ручную прокрутку; здесь пять переменных: a, b, c, i, k, для каждой из них выделим столбец, где будем записывать изменение ее значения

4) перед выполнением заданного фрагмента мы знаем только значение a, остальные неизвестны (обозначим их знаком вопроса):

  a b c i k
  'ПОЕЗД' ? ? ? ?

5) в первой команде длина строки a (она равна 5 символам) записывается в переменную i:

  a b c i k
  'ПОЕЗД' ? ? ? ?
i:=Длина(a)        

6) следующие два оператора записывают начальные значения в k и b:

  a b c i k
  'ПОЕЗД' ? ? ? ?
i:=Длина(a)        
k:=2        
b:='А'   'A'      

7) далее следует цикл пока с проверкой условия i>0 в начале цикла; сейчас i=5>0, то есть,  условие выполняется, цикл начинает работать и выполняются все операторы в теле цикла:

  a b c i k
  'ПОЕЗД' ? ? ? ?
i:=Длина(a)        
k:=2        
b:='А'   'A'      
i > 0?

да

c:=Извлечь(a,i) i:=Длина(a)      
b:=Cклеить(b,c) k:=2        
i:=i–k        

· поскольку i=5, вызов функции Извлечь(a,i) выделяет из строки a символ с номером 5, это 'Д';

· следующей командой этот символ приписывается в «хвост» строки b, теперь в ней хранится цепочка 'АД';

· в команде i:=i-k значение переменной i уменьшается на k (то есть, на 2)

8) далее нужно перейти в начало цикла и снова проверить условие i>0, оно опять истинно, поэтому выполняется следующий шаг цикла, в котором к строке b добавляется 3-й символ строки a, то есть 'Е':

  a b c i k
... 'ПОЕЗД' 'АД'
i > 0?


  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.