2004-gre-cs-practice-book.pdf/Q55 — различия между версиями
Материал из DISCOPAL
StasFomin (обсуждение | вклад) (Новая страница: « == Вопрос: Q55-4c9f66 == <i>Тут вставьте перевод вопроса. Используйте [https://wiki.4intra.net/Help:%D0%A4%D0%BE%D1%80…») |
StasFomin (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | |||
== Вопрос: Q55-4c9f66 == | == Вопрос: Q55-4c9f66 == | ||
− | + | Предположим, что целевой объект ''t'' — это целое число, хранящееся где-то в целочисленном массиве ''x'', отсортированном в неубывающем порядке. | |
− | + | Рассмотрим следующую схему цикла для поиска ''t'' | |
− | + | ||
− | + | ||
− | + | <code-c> | |
− | < | + | <initialization of h and k> |
− | ( | + | while (x[h] != t) |
+ | { | ||
+ | P; | ||
+ | } | ||
+ | </code-c> | ||
− | + | Если '''initialization''' устанавливает инвариант <m>x[h] \le t < x[k]</m>, какое из следующих определений для | |
− | + | блока ''P'', взятое по отдельности, гарантирует, что цикл завершится с <m>x[h]=t</m>, предполагая, | |
− | + | что ''t'' точно есть в массиве? | |
− | + | ||
− | + | ||
− | < | + | # <code-pascal>if x[h] < t then h := h + 1</code-pascal> |
− | [ | + | # <code-pascal>h := h + 1</code-pascal> |
− | + | # <code-pascal>k := k — 1</code-pascal> | |
+ | === Ответы === | ||
+ | * Только 1 | ||
+ | * Только 2 | ||
+ | * Только 3 | ||
+ | * Правильный ответ: 1 и 2 | ||
+ | * 1 и 3 | ||
=== Объяснение === | === Объяснение === | ||
− | + | {{cstest-source|2004-gre-cs-practice-book.pdf|38|55}} | |
− | {{cstest-source|2004-gre-cs-practice-book.pdf| | + | |
+ | Ну тут «k» вообще ни причем, а в остальном — наткнемся. | ||
− | + | {{question-ok|[[Участник:StasFomin|StasFomin]] 23:14, 15 декабря 2024 (UTC)}} | |
− | + | [[Категория:Циклы]] |
Текущая версия на 23:14, 15 декабря 2024
Вопрос: Q55-4c9f66
Предположим, что целевой объект t — это целое число, хранящееся где-то в целочисленном массиве x, отсортированном в неубывающем порядке. Рассмотрим следующую схему цикла для поиска t
<initialization of h and k> while (x[h] != t) { P; }
Если initialization устанавливает инвариант , какое из следующих определений для блока P, взятое по отдельности, гарантирует, что цикл завершится с , предполагая, что t точно есть в массиве?
-
if x[h] < t then h := h + 1
-
h := h + 1
-
k := k — 1
Ответы
- Только 1
- Только 2
- Только 3
- Правильный ответ: 1 и 2
- 1 и 3
Объяснение
Исходники — вопрос 55 на 38 странице книги «2004-gre-cs-practice-book.pdf»
Ну тут «k» вообще ни причем, а в остальном — наткнемся.