Главная /
Программирование
Программирование - ответы на тесты Интуит
Курс механико-математического факультета МГУ им. М.В. Ломоносова предназначен для обучения основам программирования на языках C и C++.
Список вопросов:
- # Какой максимальный адрес машинного слова в 32-разрядной архитектуре?
- # Какой максимальный адрес байта в 32-разрядной архитектуре?
- # Укажите корректные адреса машинных слов в 32-разрядной архитектуре среди перечисленных ниже:
- # В чем главный недостаток языка Ассемблер?
- # Какой из перечисленных языков высокого уровня является наиболее современным?
- # В чем главный недостаток первоначальной версии языка Pascal?
- # В каком случае выполняется тело цикла "while"?
- # Что можно сказать об условии, указанном в заголовке цикла "while", после завершения цикла?
- # Что можно сказать об условии, указанном в заголовке цикла "while", в процессе выполнения тела цикла?
- # Сколько раз будет выполнено тело цикла в приведенной ниже программе? Многоточием обозначен фрагмент, не содержащий переменной x. int x = 0; while (x < 1000) { . . . x = x+1; }
- # Сколько раз будет выполнено тело цикла в приведенной ниже программе? Многоточием обозначен фрагмент, не содержащий переменной x. int x = 100; while (x >= 0) { . . . x = x-1; }
- # Сколько раз будет выполнено тело цикла в приведенной ниже программе? Многоточием обозначен фрагмент, не содержащий переменной x. int x = 0; while (x <= 100) { . . . x = x + 2; }
- # Пусть - некоторое условие, не зависящее от значения переменной x. Укажите, чему может быть равно значение x в результате выполнения следующего фрагмента программы (многоточием обозначен текст, не содержащий переменной x): int x = 1; while () { . . . if () { x = 2; } else { x = 3; } }
- # Пусть a = a(x) - некоторое условие, зависящее только от значения переменной x. Укажите, чему может быть равно значение переменной y в результате выполнения следующего фрагмента программы: int x = 1; int y = 1; while (a(x)) { . . . if (y < 0) { x = 2; y = 10; } else { x = 1; y = 20; } }
- # Укажите, чему может быть равно значение переменной z в результате выполнения следующего фрагмента программы: z := 0; while (x < y) { . . . if (z > 100) { z = 10; x = y; } else { z = 20; x = y - 1; } }
- # Чему равно значение целочисленной переменной x в результате выполнения приведенного ниже фрагмента программы? int x = 1; while (x < 100) x = -(x * 2); }
- # Чему равно значение целочисленной переменной x в результате выполнения приведенного ниже фрагмента программы? int x = 64; while (x*x > 100) { x = -(x / 2); }
- # Чему равно значение целочисленной переменной x в результате выполнения приведенного ниже фрагмента программы? int x = 1; while (x < 11) { x = -2*x + 11; }
- # Завершится ли когда-нибудь выполнение цикла в приведенном ниже фрагменте программы? int x = 1; while (x != 56) { x = (x * 11) % 253; }
- # Завершится ли когда-нибудь выполнение цикла в приведенном ниже фрагменте программы? int x = 1; while (x != 120) { x = (x * 7) % 490; }
- # Завершится ли когда-нибудь выполнение цикла в приведенном ниже фрагменте программы? int x = 1; while (x != 144) { x = (x * 13) % 299; }
- # Алгоритм сортировки называется стабильным, если он сохраняет относительный порядок равных элементов. Среди перечисленных ниже алгоритмов сортировки (имеются в виду их классические варианты) отметьте все стабильные.
- # Алгоритм сортировки называется стабильным, если он сохраняет относительный порядок равных элементов. Среди перечисленных ниже алгоритмов сортировки (имеются в виду их классические варианты) отметьте все стабильные.
- # Алгоритм сортировки называется стабильным, если он сохраняет относительный порядок равных элементов. Среди перечисленных ниже алгоритмов сортировки (имеются в виду их классические варианты) отметьте все стабильные.
- # К трехзначным десятичным числам (строкам длины 3 из десятичных цифр) применяется алгоритм RADIX-сортировки сначала по младшей цифре, затем по средней и в конце по старшей. Исходный массив содержит следующие числа: 122, 232, 171, 198, 401, 035, 077, 201, 199, 400. Каким будет содержимое массива после выполнения первых двух шагов сортировки (т.е. после сортировки по младшей и средней цифрам)?
- # К трехзначным десятичным числам (строкам длины 3 из десятичных цифр) применяется алгоритм RADIX-сортировки сначала по младшей цифре, затем по средней и в конце по старшей. Исходный массив содержит следующие числа: 232, 102, 307, 901, 835, 215, 105, 301, 323, 811. Каким будет содержимое массива после выполнения первых двух шагов сортировки (т.е. после сортировки по младшей и средней цифрам)?
- # К трехзначным десятичным числам (строкам длины 3 из десятичных цифр) применяется алгоритм RADIX-сортировки сначала по младшей цифре, затем по средней и в конце по старшей. Исходный массив содержит следующие числа: 102, 232, 307, 901, 835, 215, 105, 301, 335, 811. Каким будет содержимое массива после выполнения первых двух шагов сортировки (т.е. после сортировки по младшей и средней цифрам)?
- # RADIX-сортировка применяется к составным ключам длины k, длина сортируемого массива равна n. Какова асимптотическая оценка времени работы алгоритма?
- # Сортируемый массив содержит составные ключи из 20 десятичных цифр (например, идентификаторы банковских счетов). Массив имеет длину 1000. Надо выбрать один из двух алгоритмов сортировки: сортировку кучей HeapSort или RADIX-сортировку. Какой из двух алгоритмов будет в среднем работать быстрее в данной ситуации?
- # Сортируемый массив содержит составные ключи из 10 десятичных цифр. Массив имеет длину 1000000 (миллион). Надо выбрать один из двух алгоритмов сортировки: сортировку кучей HeapSort или RADIX-сортировку. Какой из двух алгоритмов будет в среднем работать быстрее в данной ситуации?
- # Функция merge слияния двух упорядоченных массивов применяется к двум массивам длины 10 и 20. Может ли в процессе ее выполнения быть сделано ровно 28 сравнений?
- # Функция merge слияния двух упорядоченных массивов применяется к двум массивам длины 100 и 1000. Какое максимальное число сравнений может быть сделано при выполнении этой функции?
- # Функция merge слияния двух упорядоченных массивов применяется к двум массивам длины 100 и 1000. Какое минимальное число сравнений может быть сделано при выполнении этой функции?
- # Рассмотрим алгоритм сортировки слиянием с использованием дополнительной памяти. Используется нисходящая (рекурсивная) схема реализации алгоритма. Алгоритм применяется к массиву длины 1000000 (миллион). Какова максимально возможная глубина рекурсии? Дайте наиболее точную оценку.
- # Рассмотрим алгоритм сортировки слиянием с использованием дополнительной памяти. Используется восходящая схема реализации алгоритма. Алгоритм применяется к массиву длины 100. На каждом шаге сливаются пары соседних упорядоченных подмассивов длины не больше k и получаются упорядоченные подмассивы длины не больше 2k; первый шаг выполняется при k=1. Сколько всего шагов будет выполнено?
- # Рассмотрим алгоритм сортировки слиянием с использованием дополнительной памяти. Используется нисходящая (рекурсивная) схема реализации алгоритма. Алгоритм применяется к массиву длины 1000. Какова максимально возможная глубина рекурсии? Дайте наиболее точную оценку среди приведенных ниже.
- # К массиву a длины 64 применяется восходящая схема двунаправленного алгоритма сортировки слиянием с использованием дополнительной памяти — массива b такого же размера. В каком из этих массивов мы получим результат после окончательного шага слияния, т.е. будет ли вызвана функция copyArray, чтобы скопировать результат из вспомогательного массива b в массив a?
- # К массиву a длины 50 применяется восходящая схема двунаправленного алгоритма сортировки слиянием с использованием дополнительной памяти — массива b такого же размера. В каком из этих массивов мы получим результат после окончательного шага слияния, т.е. будет ли вызвана функция copyArray, чтобы скопировать результат из вспомогательного массива b в массив a?
- # К массиву a длины 28 применяется восходящая схема двунаправленного алгоритма сортировки слиянием с использованием дополнительной памяти — массива b такого же размера. В каком из этих массивов мы получим результат после окончательного шага слияния, т.е. будет ли вызвана функция copyArray, чтобы скопировать результат из вспомогательного массива b в массив a?
- # К массиву a длины 30 применяется восходящая схема двунаправленного алгоритма сортировки слиянием с использованием дополнительной памяти. В процессе выполнения алгоритма многократно вызывается функция merge слияния двух упорядоченных массивов длины n и m. Каковы длины массивов, которые сливаются при самом последнем вызове функции merge?
- # К массиву a длины 12 применяется восходящая схема двунаправленного алгоритма сортировки слиянием с использованием дополнительной памяти. В процессе выполнения алгоритма многократно вызывается функция merge слияния двух упорядоченных массивов длины n и m. Каковы длины массивов, которые сливаются при самом последнем вызове функции merge?
- # К массиву a длины 20 применяется восходящая схема двунаправленного алгоритма сортировки слиянием с использованием дополнительной памяти. В процессе выполнения алгоритма многократно вызывается функция merge слияния двух упорядоченных массивов длины n и m. Каковы длины массивов, которые сливаются при самом последнем вызове функции merge?
- # К массиву a длины 10 применяется восходящая схема двунаправленного алгоритма сортировки слиянием с использованием дополнительной памяти такого же размера. Сколько раз будет вызвана функция слияния двух упорядоченных массивов merge?
- # К массиву a длины 12 применяется восходящая схема двунаправленного алгоритма сортировки слиянием с использованием дополнительной памяти такого же размера. Сколько раз будет вызвана функция слияния двух упорядоченных массивов merge?
- # К массиву a длины 11 применяется восходящая схема двунаправленного алгоритма сортировки слиянием с использованием дополнительной памяти такого же размера. Сколько раз будет вызвана функция слияния двух упорядоченных массивов merge?
- # В алгоритме сортировки слиянием "In Place Merge Sort", не использующем дополнительной памяти, применяется функция mergeBlocks слияния двух упорядоченных блоков, т.е. подмассивов длины m и n, реализованная рекурсивно. За какое время работает эта функция?
- # В алгоритме сортировки слиянием "In Place Merge Sort", не использующем дополнительной памяти, применяется функция mergeBlocks слияния двух упорядоченных блоков, т.е. подмассивов длины m и n, реализованная рекурсивно. Пусть сумма длин блоков m+n=1000. Какой может быть максимальная суммарная длина блоков при рекурсивном вызове функции mergeBlocks на первом шаге?
- # В алгоритме сортировки слиянием "In Place Merge Sort", не использующем дополнительной памяти, применяется функция mergeBlocks слияния двух упорядоченных блоков, т.е. подмассивов длины m и n, реализованная рекурсивно. Пусть сумма длин блоков m+n=512. При реализации функции mergeBlocks вызывается функция перестановки двух блоков swapBlocks. Какой может быть максимальная суммарная длина блоков переставляемых блоков?
- # Дан массив длины n, требуется циклически сдвинуть его элементы вправо на одну позицию. Какое минимальное число операций копирования выполняется в любом алгоритме, решающем данную задачу? Имеются в виду операции копирования одного элемента массива в другой, элемента массива в простую переменную, одной простой переменной в другую.
- # Дан массив длины 11, требуется циклически сдвинуть его элементы вправо на 3 позиции. Какое минимальное число операций копирования выполняется в любом алгоритме, решающем данную задачу? Имеются в виду операции копирования одного элемента массива в другой, элемента массива в простую переменную, одной простой переменной в другую.
- # Дан массив длины 12, требуется циклически сдвинуть его элементы влево на 5 позиций. Какое минимальное число операций копирования выполняется в любом алгоритме, решающем данную задачу? Имеются в виду операции копирования одного элемента массива в другой, элемента массива в простую переменную, одной простой переменной в другую.
- # Дан массив длины 21, требуется циклически сдвинуть его элементы вправо на 6 позиций. Существует ли алгоритм, который решает эту задачу, выполняя 22 операции копирования? Имеются в виду операции копирования одного элемента массива в другой, элемента массива в простую переменную, одной простой переменной в другую.
- # Дан массив длины 26, требуется циклически сдвинуть его элементы вправо на 6 позиций. Существует ли алгоритм, который решает эту задачу, выполняя 28 операций копирования? Имеются в виду операции копирования одного элемента массива в другой, элемента массива в простую переменную, одной простой переменной в другую.
- # Дан массив длины 15, требуется циклически сдвинуть его элементы вправо на 6 позиций. Существует ли алгоритм, который решает эту задачу, выполняя 18 операций копирования? Имеются в виду операции копирования одного элемента массива в другой, элемента массива в простую переменную, одной простой переменной в другую.
- # Дан массив длины n, содержащий элементы некоторого упорядоченного типа (их можно сравнивать между собой, определяя, какой из них больше или их равенство). Рассмотрим задачу нахождения множества различных элементов, содержащихся в массиве. Приведите асимптотическую оценку времени работы наилучшего алгоритма, решающего данную задачу.
- # Дан массив длины n, содержащий элементы некоторого упорядоченного типа (их можно сравнивать между собой, определяя, какой из них больше или их равенство). Требуется удалить из массива повторяющиеся элементы так, чтобы каждый элемент содержался в массиве ровно 1 раз (при этом n может уменьшиться). Приведите асимптотическую оценку времени работы наилучшего алгоритма, решающего данную задачу.
- # Дан массив длины n, содержащий элементы некоторого упорядоченного типа (их можно сравнивать между собой, определяя, какой из них больше или их равенство). Требуется определить, сколько различных элементов содержится в массиве. Приведите асимптотическую оценку времени работы наилучшего алгоритма, решающего данную задачу.
- # На 3 вакансии имеется 10 претендентов. Сколько способов выбора возможно?
- # Из восьми человек надо выбрать четверых. Сколько способов выбора возможно?
- # При вычислении (x+y)7 раскрываются скобки и приводятся подобные члены. Чему будет равен коэффициент при x3y4?
- # Сколько единиц в двоичной записи числа 10?
- # Сколько единиц в двоичной записи числа 13?
- # Сколько единиц в двоичной записи числа 11?
- # Для записи n-значных чисел в системе счисления с основанием b требуется n разрядов, каждый из которых может находиться в b состояниях. Таким образом, суммарное число состояний равно произведению n*b. Рассмотрим двоичную (b=2), восьмеричную (b=8) и шестнадцатеричную (b=16) системы счисления. Какая из них наиболее экономна по суммарному числу состояний для записи чисел в диапазоне 0..N, где N - некоторое достаточно большое число?
- # Для записи n-значных чисел в системе счисления с основанием b требуется n разрядов, каждый из которых может находиться в b состояниях. Таким образом, суммарное число состояний равно произведению n*b. Рассмотрим двоичную (b=2), троичную (b=3) и десятичную (b=10) системы счисления. Какая из них наиболее экономна по суммарному числу состояний для записи чисел в диапазоне 0..N, где N - некоторое достаточно большое число?
- # Для записи n-значных чисел в системе счисления с основанием b требуется n разрядов, каждый из которых может находиться в b состояниях. Таким образом, суммарное число состояний равно произведению n*b. Рассмотрим восьмеричную (b=8), десятичную (b=10) и шестнадцатеричную (b=16) системы счисления. Какая из них наиболее экономна по суммарному числу состояний для записи чисел в диапазоне 0..N, где N - некоторое достаточно большое число?
- # В алгоритме получения записи числа n в системе счисления с основанием b мы вычисляем цифры числа справа налево, начиная с последней цифры. На очередном шаге мы делим n с остатком на b, получая частное q и остаток r; остаток представляет очередную цифру числа в порядке справа налево. Затем мы переменной n присваиваем значение частного q, и процесс повторяется, пока n не станет равным нулю. Сколько раз будет выполнена операция деления при переводе числа 1000000 (миллион) в шестнадцатеричную систему счисления?
- # В алгоритме получения записи числа n в системе счисления с основанием b мы вычисляем цифры числа справа налево, начиная с последней цифры. На очередном шаге мы делим n с остатком на b, получая частное q и остаток r; остаток представляет очередную цифру числа в порядке справа налево. Затем мы переменной n присваиваем значение частного q, и процесс повторяется, пока n не станет равным нулю. Сколько раз будет выполнена операция деления при переводе числа 2000000 (два миллиона) в восьмеричную систему счисления?
- # В алгоритме получения записи числа n в системе счисления с основанием b мы вычисляем цифры числа справа налево, начиная с последней цифры. На очередном шаге мы делим n с остатком на b, получая частное q и остаток r; остаток представляет очередную цифру числа в порядке справа налево. Затем мы переменной n присваиваем значение частного q, и процесс повторяется, пока n не станет равным нулю. Сколько раз будет выполнена операция деления при переводе числа 1000 (тысяча) в троичную систему счисления?
- # Рассмотрим следующую запись числа в двоичной системе счисления (для удобства запись разбита запятыми на триады): 100,001,010,110,111,101,011. Укажите восьмеричную запись этого числа.
- # Рассмотрим следующую запись числа в двоичной системе счисления (для удобства запись разбита запятыми на четверки): 1000,1010,0010,0110,1111,0101,0011. Укажите шестнадцатеричную запись этого числа.
- # Рассмотрим следующую запись числа в троичной системе счисления (для удобства запись разбита запятыми на четверки): 1201,1122,2111,2010. Укажите запись этого числа в системе счисления с основанием 9.
- # Рассмотрим максимальное по абсолютной величине целое число, которое в языке C/C++ представимо типом int. Положительное оно или отрицательное?
- # Рассмотрим максимальное по абсолютной величине целое число, которое в языке C/C++ представимо типом signed char. Чему оно равно?
- # Рассмотрим максимальное по абсолютной величине целое число, которое в языке C/C++ представимо типом short. Четное оно или нечетное?
- # Какой двоичный код представляет число -10 для типа signed char?
- # Какой двоичный код представляет число -31 для типа short? (Для удобства двоичная запись разбита запятыми на четверки.)
- # Какой двоичный код представляет число -14 для типа signed char?
- # Пусть n - переменная типа unsigned char. Укажите значение n после выполнения оператора n = (((3 << 4) | 3) & 0xF2);
- # Пусть n - переменная типа unsigned char. Укажите значение n после выполнения оператора n = ((127 >> 2) & (15 << 2));
- # Пусть n - переменная типа unsigned char. Укажите значение n после выполнения оператора n = ((16 << 3) | (1 << 4) | (3 << 2));
- # При представлении целых чисел в формате Big Endian байты внутри слова нумеруются слева направо, в формате Little Endian - справа налево. Укажите, в каких случаях из перечисленных ниже используется формат Big Endian.
- # При представлении целых чисел в формате Big Endian байты внутри слова нумеруются слева направо, в формате Little Endian - справа налево. Пусть компьютер использует архитектуру Big Endian. Укажите, чему будет равно значение переменной n в результате выполнения следующего фрагмента программы: int k = (-2); int n; signed char *p = (signed char *) &k; n = *p;
- # При представлении целых чисел в формате Big Endian байты внутри слова нумеруются слева направо, в формате Little Endian - справа налево. Пусть компьютер использует архитектуру Big Endian. Укажите, чему будет равно значение переменной n в результате выполнения следующего фрагмента программы: int k = (-256); int n; signed char *p = (signed char *) &k; n = *p;
- # Пусть для представления вещественных чисел мы используем десятичные целые числа с фиксированной позицией десятичной точки, отделяющей ровно 3 знака дробной части. Например, целое число 2718 представляет вещественное число 2.718. Рассмотрим два числа с фиксированной точкой, представленные целыми числами 10500 и 1010. Каким числом будет представлено их произведение?
- # Пусть для представления вещественных чисел мы используем десятичные целые числа с фиксированной позицией десятичной точки, отделяющей ровно 2 знака дробной части. Например, целое число 314 представляет вещественное число 3.14. Рассмотрим два числа с фиксированной точкой, представленные целыми числами 240 и 20001. Каким числом будет представлено их произведение?
- # Пусть для представления вещественных чисел мы используем десятичные целые числа с фиксированной позицией десятичной точки, отделяющей ровно 3 знака дробной части. Например, целое число 1414 представляет вещественное число 1.414. Рассмотрим два числа с фиксированной точкой, представленные целыми числами 100001 и 20050. Каким числом будет представлено их произведение?
- # При представлении вещественных чисел в плавающей форме мы выражаем вещественное число x в виде x = s 2e m, где s - знак числа, принимающий значение плюс или минус единица, e - порядок, представляющий собой целое число (положительное, 0 или отрицательное), m - мантисса, представляющая собой вещественное число в диапазоне 1 m < 2. Чему равны порядок и мантисса для числа 12?
- # При представлении вещественных чисел в плавающей форме мы выражаем вещественное число x в виде x = s 2e m, где s - знак числа, принимающий значение плюс или минус единица, e - порядок, представляющий собой целое число (положительное, 0 или отрицательное), m - мантисса, представляющая собой вещественное число в диапазоне 1 m < 2. Чему равны порядок и мантисса для числа 20?
- # При представлении вещественных чисел в плавающей форме мы выражаем вещественное число x в виде x = s 2e m, где s - знак числа, принимающий значение плюс или минус единица, e - порядок, представляющий собой целое число (положительное, 0 или отрицательное), m - мантисса, представляющая собой вещественное число в диапазоне 1 m < 2. Чему равны порядок и мантисса для числа 0.1?
- # Двоичный код, представляющий число типа float, хранит знак, смещенный порядок и дробную часть двоичного представления мантиссы. Сколько битов отводится под каждый элемент представления?
- # Двоичный код, представляющий число типа double, хранит знак, смещенный порядок и дробную часть двоичного представления мантиссы. Сколько битов отводится под каждый элемент представления?
- # Можно ли сохранить целое число типа int (4 байта) в переменной типа double без потери точности? То есть, если мы имеем целочисленную переменную n типа int, то она не изменит своего значения в результе выполнения следующего фрагмента программы: int n; . . . double x = (double) n; n = (int) x;
- # Двоичный код, представляющий число типа double, хранит знак, смещенный порядок и дробную часть двоичного представления мантиссы. Чему равен смещенный порядок в представлении числа 6.0?
- # Двоичный код, представляющий число типа float, хранит знак, смещенный порядок и дробную часть двоичного представления мантиссы. Чему равен смещенный порядок в представлении числа 9.0?
- # Двоичный код, представляющий число типа double, хранит знак, смещенный порядок и дробную часть двоичного представления мантиссы. Чему равен смещенный порядок в представлении числа 0.3?
- # Двоичный код, представляющий число типа double, хранит знак, смещенный порядок и дробную часть двоичного представления мантиссы. Сколько единичных битов в двоичном представлении дробной части мантиссы для числа 10.0?
- # Двоичный код, представляющий число типа double, хранит знак, смещенный порядок и дробную часть двоичного представления мантиссы. Сколько единичных битов в двоичном представлении дробной части мантиссы для числа 0.125?
- # Двоичный код, представляющий число типа double, хранит знак, смещенный порядок и дробную часть двоичного представления мантиссы. Сколько единичных битов в двоичном представлении дробной части мантиссы для числа 15.0?
- # Можно ли сохранить целое число 123456789012345678 в переменной типа double без потери точности?
- # Можно ли сохранить целое число 123456789012345 в переменной типа double без потери точности?
- # Можно ли сохранить целое число 1,000,000,000 (миллиард) в переменной типа float без потери точности?
- # Рассмотрим следующий фрагмент программы на C/C++: double x = 1.0; double y = 1e-20; double z = -x + x + y; double t = x + y - x; Равны ли значения переменных z и t после его выполнения?
- # Рассмотрим следующий фрагмент программы на C/C++: double x = 1.0; double y = 1e-20; double z = x + y - x; double t = x - x + y; Равны ли значения переменных z и t после его выполнения?
- # Рассмотрим следующий фрагмент программы на C/C++: double x = 1.0; double y = 1e-20; double z = y - x + x; double t = x - x + y; Равны ли значения переменных z и t после его выполнения?
- # Рассмотрим 8 байтов, в которых записан некоторый двочный код. Всегда ли он представляет вещественное число, записанное в плавающей форме, т.е. значение типа double?
- # Рассмотрим следующую программу на C/C++: #include <stdio.h> #include <math.h> int main() { double x = pow(2., 1024.); double y = x / 2.; double z = pow(2., 1023.); if (y == z) { printf("y == z\n"); } else { printf("y != z\n"); } return 0; } (Функция pow(a, b) возводит число a в степень b.) Что будет напечатано в результате ее выполнения?
- # Рассмотрим следующую программу на C/C++: #include <stdio.h> #include <math.h> int main() { double x = pow(2., 1022.)*2.; double y = pow(2., 1024.)/2.; if (x == y) { printf("x == y\n"); } else { printf("x != y\n"); } return 0; } (Функция pow(a, b) возводит число a в степень b.) Что будет напечатано в результате ее выполнения?
- # Функция arctg(x) раскладывается в ряд Тейлора следующим образом: arctg(x) = x - x3/3 + x5/5 - x7/7 + ... Рассмотрим реализованную на C/C++ функцию myAtan(x), вычисляющую значение arctg(x) с точностью до одной миллионной: static const double EPS = 1e-6; double myAtan(double x) { double s = 0.; double p = x; double n = 1.; double a = x; while (fabs(a) > EPS) { s += a; p = (-p*x*x); n += 2.; a = p/n; } return s; } Для каких значений x ее можно применять? Укажите все правильные ответы из числа перечисленных ниже.
- # Функция ln(z) (натуральный логарифм z) представляется в виде степенного ряда следующим образом: ln(1+x) = x - x2/2 + x3/3 - x4/4 + ... (мы обозначили z=1+x). Рассмотрим реализованную на C/C++ функцию myLog(z), вычисляющую значение логарифма с точностью до одной миллионной: static const double EPS = 1e-6; double myLog(double z) { double x = z - 1.; double s = 0.; double p = x; double n = 1.; double a = x; while (fabs(a) > EPS) { s += a; p = (-p*x); n += 1.; a = p/n; } return s; } Для каких значений z ее можно применять так, чтобы функция завершала работу за разумное время и ошибка вычисления результата была бы не более 0.0001? Укажите все правильные ответы из числа перечисленных ниже.
- # Формула Бинома Ньютона дает следующее разложение в ряд для функции "квадратный корень из z": (1+x)0.5 = sqrt(1+x) = 1 + 0.5 x + 0.5(-0.5)/2! x2 + 0.5(-0.5)(-1.5)/3! x3 + 0.5(-0.5)(-1.5)(-2.5)/4! x4 + ... (мы обозначили z=1+x). Рассмотрим реализованную на C/C++ функцию mySqrt(z), вычисляющую значение квадратного корня с точностью до одной миллионной: static const double EPS = 1e-6; double mySqrt(double z) { double x = z - 1.; double s = 1; double k = 0.5; double n = 1.; double a = k*x; while (fabs(a) > eps) { s += a; k -= 1.; n += 1.; a *= (k/n)*x; } return s; } Для каких значений z ее можно применять так, чтобы функция завершала работу за разумное время и ошибка вычисления результата была бы не более 0.0001? Укажите все правильные ответы из числа перечисленных ниже.
- # Функция ln(z) (натуральный логарифм z) представляется в виде степенного ряда следующим образом: ln(1+x) = x - x2/2 + x3/3 - x4/4 + ... (мы обозначили z=1+x). Этот ряд сходится лишь для значений x, по абсолютной величине не превосходящих 1, а эффективно вычислять его сумму можно только для еще более узкого интервала значений x. Какими свойствами функции ln(z) удобнее всего воспользоваться, чтобы свести ее вычисление к суммированию ряда?
- # Формула Бинома Ньютона дает следующее разложение в ряд для функции "квадратный корень из z": (1+x)0.5 = sqrt(1+x) = 1 + 0.5 x + 0.5(-0.5)/2! x2 + 0.5(-0.5)(-1.5)/3! x3 + 0.5(-0.5)(-1.5)(-2.5)/4! x4 + ... (мы обозначили z=1+x). Этот ряд сходится лишь для значений x, по абсолютной величине не превосходящих 1, а эффективно вычислять его сумму можно только для еще более узкого интервала значений x. Каким свойством функции sqrt(z) удобнее всего воспользоваться, чтобы свести ее вычисление к суммированию ряда?
- # Формула Бинома Ньютона дает следующее разложение в ряд для функции "кубический корень из z" (обозначим ее croot(z)): (1+x)1/3 = croot(1+x) = 1 + (1/3)x + (1/3)(-2/3)/2! x2 + (1/3)(-2/3)(-5/3)/3! x3 + (1/3)(-2/3)(-5/3)(-8/3)/4! x4 + ... (мы сделали замену z=1+x). Этот ряд сходится лишь для значений x, по абсолютной величине не превосходящих 1, а эффективно вычислять его сумму можно только для еще более узкого интервала значений x. Каким свойством функции croot(z)=z1/3 удобнее всего воспользоваться, чтобы свести ее вычисление для положительных значений z к суммированию ряда?
- # Функция arctg(x) (ее также обозначают arctg или atan) представляется рядом Тейлора: arctg(x) = x - x3/3 + x5/5 - x7/7 + ... Этот ряд сходится лишь для значений x, по модулю не превосходящих единицы, а эффективно вычислять его можно лишь для x, по модулю существенно меньших единицы - например, |x|<0.5. Чтобы свести задачу вычисления функции arctg(x) к суммированию ряда для малых значений x, можно воспользоваться формулой arctg(x) = 2*arctg(y), где y = x/(1 + sqrt(1 + x*x)), заменив вычисление ряда для x вычислением для y. Например, arctg(1)=2*arctg(1/(1+sqrt(2))). При этом нам придется воспользоваться функцией sqrt, вычисляющей квадратный корень. Какое максимальное число раз ее придется вызвать, чтобы свести вычисление arctg(x) для произвольного x к суммированию ряда для x в интервале |x|<0.5?
- # Функция arcsin(x) представляется рядом Тейлора: arcsin(x) = x +(1/2)x3/3 + (1/2)(3/4)x5/5 + (1/2)(3/4)(5/6)x7/7 + ... Этот ряд сходится лишь для значений x, по модулю меньших единицы, причем вблизи единицы сходится очень медленно и точность его вычисления низка. Поэтому эффективно вычислять сумму ряда можно лишь для x, по модулю существенно меньших единицы - например, |x|<0.75. Каким свойством функции arcsin можно воспользоваться, чтобы свести ее вычисление к суммированию ряда для значеий x в интервале |x|<0.75? Укажите все возможные правильные решения из числа перечисленных ниже. (Предполагается, что мы умеем быстро и точно вычислять квадратный корень sqrt(z), а также знаем константу pi.)
- # Функция arctg(x) (ее также обозначают arctan или atan) представляется рядом Тейлора: arctg(x) = x - x3/3 + x5/5 - x7/7 + ... Этот ряд сходится лишь для значений x, по модулю не превосходящих единицы, а эффективно вычислять его можно лишь для x, по модулю существенно меньших единицы - например, |x|<0.5. (Для значений x, по модулю близких к единице и не превосходящих единицу, ряд сходится, но очень медленно, а точность вычисления его суммы невысока.) Какие способы вычисления функции arctan(x) для "плохих" значений x возможны? Укажите все разумные способы из числа перечисленных ниже. (Предполагается, что мы умеем быстро и точно вычислять квадратный корень sqrt(z), а также знаем константу pi.)
- # Какие из из перечисленных ниже объектно-ориентированных языков программирования продолжают линию языка С, используя близкий синтаксис?
- # Какие из перечисленных ниже объектно-ориентированных языков программирования поддерживаются фирмой Microsoft?
- # Какой самый первый объектно-ориентированный язык программирования?
- # Какая из конструкций цикла потенциально безопаснее?
- # Какую из конструкций цикла в языке C удобнее всего использовать для реализации арифметического цикла, в котором тело цикла последовательно выполняется для всех значений переменной цикла, представляющих арифметическую прогрессию?
- # Отметьте, в каких из трех конструкций цикла языка C тело цикла может ни разу не выполняться.
- # Где следует описывать прототипы функций?
- # Где описан прототип функции sqrt(x), вычисляющий квадратный корень вещественного числа x?
- # Где описан прототип функции printf, используемой для печати различных значений по заданному формату?
- # Цель - реализовать функцию fallTime, вычисляющую время падения камня с высоты h. Какой из приведенных ниже фрагментов кода правильно решает задачу?
- # Камень, отпущенный с высоты 6-го этажа, падает на землю примерно за 2 сек. За какое примерно время упадет камень с высоты 12-го этажа (в 2 раза большей)? Сопротивлением воздуха пренебречь.
- # Прыгун в длину совершает прыжок на 7 метров, при этом время полетной фазы составляет 0.7 сек, а высота траектории 60 см. До какого примерно значения нужно увеличить высоту траектории прыжка, чтобы при той же горизонтальной скорости достичь результата 8 метров?
- # Функция с прототипом double root(double a, double b, double eps); находит корень фиксированной функции double f(double x); на отрезке [a, b] методом деления отрезка пополам с точностью eps. Сколько примерно раз будет выполнено тело цикла при поиске корня, когда используется следующий вызов: double x = root(1., 2., 0.001);
- # Функция с прототипом double root(double a, double b, double eps); находит корень фиксированной функции double f(double x); на отрезке [a, b] методом деления отрезка пополам с точностью eps. Пусть функция f(x) определена следующим образом: double f(double x) { return sin(x); } Каким будет приблизительное значение переменной x в результате выполнения следующего фрагмента программы: double x = root(-1., 9., 0.000001);
- # Функция с прототипом double root(double a, double b, double eps); находит корень фиксированной функции double f(double x); на отрезке [a, b] методом деления отрезка пополам с точностью eps. Пусть функция f(x) определена следующим образом: double f(double x) { double p = 1.; double r = 1.; while (r < 5.5) { p *= (x - r); r += 1.; } return p; } Каким будет приблизительное значение переменной x в результате выполнения следующего фрагмента программы: double x = root(0., 5.9, 0.000001);
- # Рассмотрим следующий фрагмент программы на C++: int a[2][3]; const int *p = (const int *) a; int n; for (int i = 0; i < 2; ++i) { for (int j = 0; j < 3; ++j) { a[i][j] = 10*i + j; } } n = p[4]; Чему равно значение n после выполнения этого фрагмента?
- # Рассмотрим следующий фрагмент программы на C++: double a[5][3]; const double *p = &(a[0][0]); const double *q = &(a[2][2]); int n = q - p; Чему равно значение n после выполнения этого фрагмента?
- # Рассмотрим следующий фрагмент программы на C++: int a[3][5]; const int *p = &(a[1][1]); int n; for (int i = 0; i < 3; ++i) { for (int j = 0; j < 5; ++j) { a[i][j] = 10*i + j; } } n = p[6]; Чему равно значение n после выполнения этого фрагмента?
- # Рассмотрим реализацию матрицы вещественных чисел, размеры которой определяются в процессе работы программы, через массив указателей на начала строк, захватываемый в динамической памяти. Каждая строка также представляет собой отдельный массив в динамической памяти: typedef double* doubleptr; int m, n; // Размеры матрицы: число строк, столбцов . . . doubleptr* a = new doubleptr[m]; for (int i = 0; i < m; ++i) { a[i] = new double[n]; } // a[i][j] -- элемент i-й строки и j-го столбца Сколько обращений к памяти необходимо сделать, чтобы прочесть элемент матрицы в i-й строке и j-м столбце (считая, что значения i и j уже находятся в регистрах процессора)?
- # Рассмотрим реализацию матрицы вещественных чисел, размеры которой определяются в процессе работы программы, через массив указателей на начала строк, захватываемый в динамической памяти. Каждая строка также представляет собой отдельный массив в динамической памяти: typedef double* doubleptr; int m, n; // Размеры матрицы: число строк, столбцов . . . doubleptr* a = new doubleptr[m]; for (int i = 0; i < m; ++i) { a[i] = new double[n]; } // a[i][j] -- элемент i-й строки и j-го столбца Сколько памяти требуется для хранения прямоугольной матрицы размером в 10 строк и 20 столбцов в 32-разрядной архитектуре (без учета памяти, используемой под описатели фрагментов кучи)?
- # Рассмотрим реализацию матрицы целых чисел, размеры которой определяются в процессе работы программы, через массив указателей на начало строк, захватываемый в динамической памяти. Каждая строка также представляет собой отдельный массив в динамической памяти: typedef int* intptr; int m, n; // Размеры матрицы: число строк, столбцов . . . intptr* a = new intptr[m]; for (int i = 0; i < m; ++i) { a[i] = new int[n]; } // a[i][j] -- элемент i-й строки и j-го столбца Сколько памяти требуется для хранения прямоугольной матрицы размером в 10 строк и 20 столбцов в 64-разрядной архитектуре (без учета памяти, используемой под описатели фрагментов кучи; предполагаем, что размер элемента типа int равен 4)?
- # Рассмотрим реализацию матрицы вещественных чисел размера m строк на n столбцов при помощи линейного массива, в котором хранятся сначала элементы нулевой строки матрицы, затем первой, второй и т.д., в конце - элементы (m-1)-й строки: int m, n; // Размеры матрицы: число строк, столбцов . . . double* a = new double[m*n]; // a[i*n + j] -- элемент i-й строки и j-го столбца Правильно ли работает следующая функция транспонирования матрицы, при выполнении которой строки матрицы должны стать столбцами, столбцы - строками, а матрица размера m на n превратиться в матрицу размера n на m? void transp(double* a, int m, int n) { for (int i = 0; i < m; ++i) { for (int j = 0; j < n; ++j) { int idx0 = i*n + j; int idx1 = j*m + i; if (idx0 < idx1) { // Меняем местами 2 элемента double tmp = a[idx0]; a[idx0] = a[idx1]; a[idx1] = tmp; } } } }
- # Рассмотрим реализацию матрицы вещественных чисел размера m строк на n столбцов при помощи линейного массива, в котором хранятся сначала элементы нулевой строки матрицы, затем первой, второй и т.д., в конце - элементы (m-1)-й строки: int m, n; // Размеры матрицы: число строк, столбцов . . . double* a = new double[m*n]; // a[i*n + j] -- элемент i-й строки и j-го столбца Пусть функция с прототипом void transp(double* a, int m, int n); реализует транспонирование матрицы, при выполнении которого строки матрицы становятся столбцами, столбцы - строками, а матрица размера m на n превращается в матрицу размера n на m Пусть эта функция применяется к прямоугольной матрице, содержащей 2 строки и 4 столбца, элементы которой хранятся в линейном массиве a Сколько элементов массива a при этом останутся на своем месте?
- # Рассмотрим реализацию матрицы вещественных чисел размера m строк на n столбцов при помощи линейного массива, в котором хранятся сначала элементы нулевой строки матрицы, затем первой и т.д., в конце - элементы (m-1)-й строки: int m, n; // Размеры матрицы: число строк, столбцов . . . double* a = new double[m*n]; // a[i*n + j] -- элемент i-й строки и j-го столбца Пусть функция с прототипом void transp(double* a, int m, int n); реализует транспонирование матрицы, при выполнении которого строки матрицы становятся столбцами, столбцы - строками, а матрица размера m на n превращается в матрицу размера n на m Пусть эта функция применяется к прямоугольной матрице, содержащей 3 строки и 5 столбцов, элементы которой хранятся в линейном массиве a. Сколько элементов массива a при этом останутся на своем месте?
- # Чему равен ранг следующей матрицы: 1 2 3 4 5 6 7 8 9 10 11 12
- # Чему равен ранг следующей матрицы: 1 1 1 1 1 -1 1 -1 1 1 -1 -1
- # Чему равен ранг следующей матрицы: 0 1 1 1 1 1 1 1 1 1 1 0
- # Какова асимптотическая оценка времени работы алгоритма Гаусса приведения матрицы к ступенчатому виду для случая квадратной матрицы размера n?
- # Какое максимальное число операций деления может быть выполнено в алгоритме Гаусса в процессе приведения к ступенчатому виду квадратной матрицы размера 4?
- # Какое максимальное число операций деления может быть выполнено в алгоритме Гаусса в процессе приведения к ступенчатому виду прямоугольной матрицы, содержащей 3 строки и 4 столбца?
- # Сколько раз в алгоритме Гаусса будет выполнена операция перестановки местами двух строк (с изменением знака одной из них) при приведении к ступенчатому виду следующей матрицы: 1 2 3 4 0 1 2 3 2 5 8 11
- # Сколько раз в алгоритме Гаусса будет выполнена операция перестановки местами двух строк (с изменением знака одной из них) при приведении к ступенчатому виду следующей матрицы: 1 2 3 4 0 1 2 3 2 7 10 14
- # Сколько раз в алгоритме Гаусса будет выполнена операция перестановки местами двух строк (с изменением знака одной из них) при приведении к ступенчатому виду следующей матрицы: 0 1 2 3 4 5 6 7 1 2 3 4
- # Какова степень интерполяционного многочлена, построенного по трем узлам x0, x1, x2, принимающего в этих узлах значения y0, y1, y2?
- # Какова степень интерполяционного многочлена, построенного по четырем узлам x0, x1, x2, x3, принимающего в этих узлах значения y0, y1, y2, y3?
- # Пусть 2 многочлена p(x) и q(x) степени 4 принимают в четырех попарно различных узлах x0, x1, x2, x3 одни и те же значения y0, y1, y2, y3. Следует ли из этого, что многочлены p(x) и q(x) равны?
- # Интерполяционный многочлен в форме Ньютона, построенный по узлам x0, x1, ..., xn, представляется формулой pn(x) = a0 + a1(x-x0) + a1(x-x0)(x-x1) + ... + an(x-x0)(x-x1)...(x-xn-1) Сколько действий необходимо выполнить, чтобы вычислить его значение в некоторой точке x=t?
- # Интерполяционный многочлен в форме Ньютона, построенный по узлам x0, x1, ..., xn и принимающий в этих узлах значения y0, y1, ..., yn, представляется формулой pn(x) = a0 + a1(x-x0) + a1(x-x0)(x-x1) + ... + an(x-x0)(x-x1)...(x-xn-1) Сколько действий нужно выполнить, чтобы вычислить все его коэффициенты a0, a1, ..., an?
- # Интерполяционный многочлен в форме Ньютона, построенный по узлам x0, x1, ..., xn и принимающий в этих узлах значения y0, y1, ..., yn, представляется формулой pn(x) = a0 + a1(x-x0) + a1(x-x0)(x-x1) + ... + an(x-x0)(x-x1)...(x-xn-1) Пусть коэффициенты a0, a1, ..., an многочлена pn(x) уже вычислены. Мы добавляем новый узел xn+1, значение в котором должно быть равно yn+1, и строим новый многочлен Ньютона pn+1(x) на единицу большей степени по узлам x0, x1, ..., xn, xn+1 и значениям y0, y1, ..., yn, yn+1. Сколько действий нужно выполнить, чтобы вычислить все коэффициенты нового многочлена?
- # Для приближения функции, заданной на отрезке [a, b], применяется сплайн-интерполяция. Для этого отрезок разбивается на n частей точками x0, x1, x2, ..., xn, в которых заданы значения функции y0, y1, y2, ..., yn, На каждом из этих маленьких отрезков [xi, xi+1] функция приближается многочленом степени d, который на концах отрезка принимает заданные значения. Пусть, помимо значений функции в узлах интерполяции yi, заданы также и значения ее производной y'i в узлах; производная каждого интерполяционного многочлена также должна принимать заданные значения на концах отрезка [xi, xi+1]. Чему должна быть равна степень d интерполяционных многочленов, из которых составляется искомый сплайн?
- # Пусть неизвестная функция определена на отрезке [a, b], причем на концах отрезка заданы ее значения y0=f(a), y1=f(b), а также значения ее производной y'0=f'(a), y'1=f'(b). Нужно приблизить функцию многочленом так, чтобы на концах отрезка его значения, а также значения его производной совпадали со значениями и производной функции. Какой должна быть степень такого многочлена? (Укажите минимальную степень, достаточную для решения этой задачи.)
- # Пусть неизвестная функция определена на отрезке [a, b], причем на концах отрезка заданы ее значения y0=f(a), y1=f(b), а также значения ее производной y'0=f'(a), y'1=f'(b). Всегда ли существует многочлен степени 2 такой, что на концах отрезка его значения и значения его производной совпадают со значениями и производной функции?
- # Пусть f(x) - гладкая функция, заданная на отрезке [a, b], производная которой по абсолютной величине не превышает некоторой константы. Для приближенного вычисления интеграла от этой функции мы применяем формулу прямоугольников, разбивая отрезок [a, b] на n равных частей. Какова точность вычисления интеграла в зависимости от n?
- # Пусть f(x) - гладкая функция, заданная на отрезке [a, b], вторая производная которой по абсолютной величине не превышает некоторой константы. Для приближенного вычисления интеграла от этой функции мы применяем формулу трапеций, разбивая отрезок [a, b] на n равных частей. Какова точность вычисления интеграла в зависимости от n?
- # Пусть f(x) - гладкая функция, заданная на отрезке [a, b], третья производная которой по абсолютной величине не превышает некоторой константы. Для приближенного вычисления интеграла от этой функции мы применяем формулу Симпсона (парабол), разбивая отрезок [a, b] на 2*n равных частей. Какова точность вычисления интеграла в зависимости от n?
- # Пусть функция f(x) = p*x2 + q*x + r (многочлен степени 2), заданная на отрезке [a, b], принимает значения y0, y1, y2 в точках a, (a+b)/2, b (на концах и в середине отрезка). Чему равен интеграл от этой функции по отрезку [a, b]?
- # Пусть функция f(x) = p*x2 + q*x + r (многочлен степени 2) задана на отрезке [a, b]. Пусть отрезок [a, b] разделен на 4 равных части; обозначим концы этих отрезков через x0, x1, x2, x3, x4: h = (b-a)/4, xi = a+i*h, i = 0,1,2,3,4. Обозначим yi = f(xi). Чему равен интеграл функции f(x) по отрезку [a, b]? Отметьте все правильные ответы.
- # Приближенное значение интеграла по отрезку [a, b] от функции y = f(x) вычисляется по формуле 1/6 * (y0 + 4*y1 + y2) * (b - a). где y0 = f(a), y1 = f((a+b)/2), y2 = f(b). Пусть f(x) - многочлен некоторой степени. Какова максимальная степень многочленов, для которых эта формула всегда дает точное значение интеграла?
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: посчитать среднее арифметическое чисел из последовательности.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: посчитать среднее геометрическое чисел из последовательности.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: посчитать среднее гармоническое чисел из последовательности.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: посчитать количество чисел, больших предыдущего.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: определить в последовательности действительных чисел количество равных некоторому число X с заданной точностью. Число X и точность ввдятся с клавиатуры.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: определить номер последнего чмсла, равного заданному X с заданной точностью. Число X и точность ввдятся с клавиатуры.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: определить является ли последовательнсть возврастающей или убывающей.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: определить удовлетворяют ли элементы последовательности данному рекуррентному соотношению c1*ai-1+c2*ai+c3*ai+1=b с заданной точностью. Параметры ci, b и точность задаются с клавиатуры.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: определить количество различных элементов в неубывающнй последовательности целых чисел.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: определить общее количество элементов в постоянных участках последовательности целых чисел.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: определить порядковый номер первого числа, равного максимуму по всей последовательности.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: определить порядковый номер последнего числа, равного минимуму по всей последовательности..
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: определить количество чисел, равных минимальному из всей последовательности целых чисел.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: найти среднее квадратичное отклонение от среднего арифметического в последовательности.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: найти величину максимального отклонения элементов последовательности от их среднего арифметического.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: найти количество элементов последовательности больших среднего арифметическго.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: найти количество возрастающих участков последовательности.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: найти сумму четных эдементов во всех возрастающих участках последовательности целых чисел.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: определить количество возрастающих и убывающих участков в последовательности.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: найти количество элементов в наибольшем постоянном участке последовательности целых чисел.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: найти количество элементов в постоянном участке последовательности целых чисел с наибольшей суммой элементов этого участка.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: найти длину возрастающего участка последовательности с наибольшим количеством элементов.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: найти наибольшую сумму возрастающего участка последовательности (т.е. максимум из сумм элементов по каждому возрастающему участку).
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: найти среднее арифметическое локальных максимумов последовательности (локальный максимум - элемент строго больший своих соседей).
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: найти максимальное количество элементов между двумя соседними локальными минимумами последовательности (локальный минимум - элемент строго меньший своих соседей).
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: найти среднее арифметическое значений элементов последовательности целых чисел, учитывая значения в постоянных участказ только один раз.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: найти среднее арифметическое, взяв только по одному значению из каждого постоянного участка последовательности.
- # Постановка задачи: в файле записана последовательность чисел неизвестной длины (возможно пустая). Между числами стоит разделитель - пробел. Требуется за один просмотр файла и без запомнинания последовательности чисел в массиве определить требуюмую характеристику последовательности. Программа должна содержать функцию, которая получает в качестве параметра имя файла и возвращает требуемое значение в файл (output.txt). Функция main открывает необходимые файлы, проверяет успешность открытия, обращается к функции для вычисления результата и выводит результат в соответствующий файл. Задание: найти максимальную сумму трех подряд идущих элементов последовательности.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: симметричны ли значения элементов массива целых чисел относительно середины массива?
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: переставить элементы массива в обратном порядке.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: циклически сдвинуть элементы массива на одну позицию вправо.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: сравнить два неупорядоченных целочисленных массива A и B как числовые множества без повторения элементов: A = B и A входит B.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: для двух целочисленных массивов построить третий массив, являющийся их объединением как числовых множеств без повторения элементов. Указать длину получившегося массива.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: для двух целочисленных массивов построить третий массив, являющийся их пересечением как числовых множеств без повторения элементов. Указать длину получившегося массива.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: определить какое число встречается в массиве целых чисел наибольшее количество раз.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: удалить из целочисленного массива одинаковые значения, т.е. если какое-то значение встречается несколько раз (в разных местах массива), то оставить только первый такой элемент, а остальные удалить из массива. Оставшиеся элементы сдвинуть к началу массива, и указать их количество.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: сократить подряд идущие одинаковые элементы целочисленного массива до одного элемента. То есть, если в массиве встречается несколько одинаковых элементов, стоящих рядом, то оставить только один из них, а остальные удалить из массива. Оставшиеся элементы сдвинуть к началу массива, и указать их количество.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: удалить из массива все отрицательные значения, а оставшиеся уплотнить (сдвинуть) с сохранение исходного порядка к началу массива. Указать количество оставшихся значений.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: циклически сдвинуть элементы массива на K позиций вправо с затратой O(N) действий (N - длина массива).
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: каждый элемент a[i] массива заменить на сумму элементов исходного массива вплоть до него самого включительно, т.е. от 0 до i-го.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: каждый элемент массива заменить на полусумму его соседних элементов (кроме первого и последнего).
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: назовем x-отрезком группу подряд идущих элементов массива, каждый из которых равен x. Для заданного числа x заменить элементы каждого x-отрезка на полусумму элементов, прилегающих к этому отрезку справа и слева. Если x-отрезок расположен в начале или конце массива, считать второй крайний элемент равным нулю.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: сгруппировать положительные элементы массива в его начале, а отрицательные - в конце с сохранением их порядка.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: Назовем массив из N целых чисел счастливым, если существует такое 0 < k < N , что сумма элементов с индексами от 0 до k-1 совпадает с суммой элементов с индексами от k до N-1. Определить является ли данный массив счастливым.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: назовем массив из целых чисел плотным, если множество значений элементов массива полностью заполняет некоторый отрезок [a, b] (рассматривются целые значения). Определить является ли данный массив плотным.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: получить массив биномиальных коэффициентов для степени N, последовательно вычисляя строки треугольника Паскаля (можно использовать только один массив).
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: элементы массива не убывают. Двоичным поиском определить позицию, где в этот массив можно вставить данное число x.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: даны два неубывающих массива. Построить третий неубывающий массив, который является объединением первых двух (элементы могут повторяться).
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: выполнить следующее преобразование. Элементы с четными индексами сгруппировать в начале массива с сохранением их исходного порядка относительно друг друга, а элементы с нечетными индексами сгрупировать в конце массива также с сохранением их исходного порядка.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: Выполнить следующее преобразование массива длины N . Элементы с индексами i <= [(N + 1)/2] переместить на позиции с четными индексами с сохранением их исходного порядка относительно друг друга, а оставшиеся элементы (i > [(N + 1)/2]) разместить на позициях с нечетными индексами также с сохранением их исходного порядка. Т.е. начальная и конечная половины массива "перемешиваются" чередованием элементов.
- # Постановка задачи: программа должна содержать функцию, которая получает в качестве параметров имя массива и его длину (или нескольких массивов, если этого требуют условия задачи) и выполняет необходимые действия. При решении не разрешается создавать или резервировать в программе дополнительную память, соизмеримую по размерам с объемом исходных данных. То есть, нельзя создавать дополнительные массивы, если это явно не оговорено в задаче. Функция main должна заполнить массив числами из файла. Для определения длины массива предусматривается два варианта: 1) по значению первого числа в файле, 2) непосредственным подсчетом количества чисел в файле. Результат также выводится в файл. Задание: пусть в массиве последовательно записаны цифры некоторого длинного десятичного числа. Реализовать функции “прибавляющие единицу” и “вычитающие единицу” из такого числа. (для реализации переноса из “старшего разряда” можно заранее запасти 1 лишний элемент в массиве).
- # Каков диапазон целочисленного типа unsigned char?
- # Каков диапазон целочисленного типа signed char?
- # Каков диапазон целочисленного типа short?
- # Отметьте, какие из перечисленных ниже целочисленных значений помещаются в переменную типа int (для удобства триады цифр разделяются запятыми).
- # Отметьте, какие из перечисленных ниже целочисленных значений помещаются в переменную типа unsigned int (для удобства триады цифр разделяются запятыми).
- # Отметьте, какие из перечисленных ниже целочисленных значений помещаются в переменную типа unsigned short
- # Чему равно значение выражения (-12)%5*10 в языке C?
- # Чему равно значение выражения (-23)%6*10 в языке C?
- # Чему равно значение выражения (-17)%3*10 в языке C?
- # Сколько различных значений x типа unsigned char удовлетворяют равенству x+x+x+x == 0?
- # Сколько различных значений x типа int удовлетворяют равенству x+x == 0?
- # Укажите минимальное значение x > 0 типа signed char, удовлетворяющее неравенству x+x <= 0?
- # Сколько всего простых чисел, меньших 30?
- # Среди перечисленных ниже чисел отметьте простые.
- # Среди перечисленных ниже чисел отметьте простые.
- # Сколько всего простых чисел в диапазоне от 100 до 110?
- # Какие переменные располагаются в языке C/C++ в статической памяти?
- # Какие переменные располагаются в языке C/C++ в стеке?
- # Какие объекты языка C/C++ располагаются в динамической памяти?
- # Отметьте, что из перечисленного ниже является дурным стилем программирования на C/C++ (т.е. чего никогда не следует делать).
- # По логике задачи нам требуется использовать большой массив вещественных чисел, размер которого не превышает миллион элементов. Какие из перечисленных ниже решений являются корректными?
- # В функции с прототипом int f(int x); которая вызывается часто в различных контекстах и должна работать быстро, нам требуется небольшой массив целых чисел размером в 16 элементов. Какое из перечисленных ниже решений является наиболее правильным?
- # Числами Ферма Fk называются числа вида 22k+1. Например, F1=5, F2=17, F3=257, F4=65537. Отметьте, какие из приведенных ниже утверждений являются верными.
- # Пусть m=143. Существуют ли два различных целых числа a, b такие, что a2b2 (mod m), но a±b (mod m)?
- # Пусть m=101. Существуют ли два различных целых числа a, b такие, что a2b2 (mod m), но a±b (mod m)?
- # Сколько раз будет выполнено тело цикла в алгоритме Евклида int gcd(int m, int n) { while (n != 0) { int r = m % n; m = n; n = r; } return m; } при следующих входных значениях аргументов: m=13, n=17?
- # Сколько раз будет выполнено тело цикла в алгоритме Евклида int gcd(int m, int n) { while (n != 0) { int r = m % n; m = n; n = r; } return m; } при следующих входных значениях аргументов: m=24, n=30?
- # Сколько раз будет выполнено тело цикла в алгоритме Евклида int gcd(int m, int n) { while (n != 0) { int r = m % n; m = n; n = r; } return m; } при следующих входных значениях аргументов: m=17, n=22?
- # Укажите, чему будет равно значение переменной k в результате выполнения следующего фрагмента программы: int n=11, k, *p; p = &n; ++*p; k = 4-*p*2+n;
- # Укажите, чему будет равно значение переменной k в результате выполнения следующего фрагмента программы: int n = (-7), k, *p; p = &n; ++*p; k = 3-*p*3+n;
- # Укажите, чему будет равно значение переменной k в результате выполнения следующего фрагмента программы: int n = (-5), k, *p; p = &n; --*p; k = 4-*p*5+n;
- # Укажите, чему будет равно значение переменной n в результате выполнения следующего фрагмента программы: double *p = 1000; double *q = 2000; int n = q - p;
- # Укажите, чему будет равно значение переменной n в результате выполнения следующего фрагмента программы: double *p = 1000; p += 1000; int n = (int) p;
- # Укажите, чему будет равно значение переменной n в результате выполнения следующего фрагмента программы: double *p = 10000; p -= 1000; int n = (int) p;
- # Пусть переменные p, q, n описаны следующим образом: double *p, *q; int n; Отметьте, какие из перечисленных ниже выражений языка C/C++ являются корректными:
- # Пусть переменные p, q описаны следующим образом: double *p, q[100]; Отметьте, какие из перечисленных ниже выражений языка C/C++ являются корректными:
- # Пусть переменные p, q, n описаны следующим образом: double *p, q[100], *r; int n; Отметьте, какие из перечисленных ниже строк программы на C/C++ являются корректными:
- # Как подключаются внешние устройства к общей шине компьютера?
- # Какой из перечисленных ниже регистров процессора содержит адрес команды, которая будет выполнятся на очередном шаге работы процессора?
- # Что содержит регистр PC (Program Counter - счетчик команд, в процессоре Intel 80x86 он обозначается как IP - Instruction Pointer) в момент выполнения процессором очередной команды?
- # Пусть процессор имеет 32-разрядную архитектуру и в некоторый момент его работы регистр SP содержит значение 1000. Укажите, какое значение будет содержаться в SP после выполнения команды push X.
- # Пусть процессор имеет 32-разрядную архитектуру и в некоторый момент его работы регистр SP содержит значение 1000. Укажите, какое значение будет содержаться в SP после выполнения команды pop X.
- # Пусть процессор имеет 32-разрядную архитектуру и в некоторый момент его работы регистр SP содержит значение 1000. Укажите, какое значение будет содержаться в SP после выполнения команды вызова функции call f.
- # Пусть процессор имеет 32-разрядную архитектуру и в некоторый момент его работы регистр SP содержит значение 1000. Укажите, какое значение будет содержаться в SP после выполнения команды возврата из функции return.
- # Отметьте, для каких из перечисленных ниже целей используется аппаратный стек в языке C/C++.
- # Пусть процессор имеет 32-разрядную архитектуру. Рассмотрим функцию f(x, y) языка C/C++ со следующим прототипом: void f(int x, int y); Чему равен адрес второго фактического аргумента y функции f относительно регистра FP (Frame Pointer - указатель кадра) во время выполнения тела функции?
- # В каком порядке фактические аргументы функции помещаются в стек при ее вызове в языке C/C++?
- # Какие смещения относительно регистра FP (Frame Pointer - указатель кадра) имеют адреса локальных переменных, описанных внутри функции, в языке C/C++?
- # Рассмотрим рекурсивную реализацию алгоритма Евклида: int gcd1(int m, int n) { if (n == 0) return m; int r = m % n; return gcd1(n, r); } Укажите, какова будет глубина рекурсии (т.е. какое максимальное количество кадров локальных переменных функции gcd1 будет размещено одновременно в аппаратном стеке) при следующем вызове функции: int d = gcd1(25, 35);
- # Рассмотрим рекурсивную реализацию алгоритма Евклида: int gcd1(int m, int n) { if (n == 0) return m; int r = m % n; return gcd1(n, r); } Укажите, какова будет глубина рекурсии (т.е. какое максимальное количество кадров локальных переменных функции gcd1 будет размещено одновременно в аппаратном стеке) при следующем вызове функции: int d = gcd1(7, 17);
- # Рассмотрим рекурсивную реализацию алгоритма Евклида: int gcd1(int m, int n) { if (n == 0) return m; int r = m % n; return gcd1(n, r); } Укажите, какова будет глубина рекурсии (т.е. какое максимальное количество кадров локальных переменных функции gcd1 будет размещено одновременно в аппаратном стеке) при следующем вызове функции: int d = gcd1(21, 56);
- # Пусть расположенный в статической памяти целочисленный массив a описан как static int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; Пусть в программе задана функция суммирования массива с прототипом int sum(const int *m, int n); где m - константный указатель на начало массива, n - число его элементов. Укажите, чему будет равно значение переменной s в результате выполнения следующего фрагмента программы: int s = sum(a+4, 4);
- # Пусть расположенный в статической памяти целочисленный массив a описан как static int a[] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }; Пусть в программе задана функция суммирования массива с прототипом int sum(const int *m, int n); где m - константный указатель на начало массива, n - число его элементов. Укажите, чему будет равно значение переменной s в результате выполнения следующего фрагмента программы: int s = sum(a+3, 4);
- # Пусть расположенный в статической памяти целочисленный массив a описан как static int a[] = { 1, 1, 2, 2, 3, 3, 4, 4, 5, 5 }; Пусть в программе задана функция суммирования массива с прототипом int sum(const int *m, int n); где m - константный указатель на начало массива, n - число его элементов. Укажите, чему будет равно значение переменной s в результате выполнения следующего фрагмента программы: int s = sum(a+5, 3);
- # Пусть переменные a, p, q, n описаны следующим образом: double a[10]; double *p; const double *q; int n; Отметьте, какие из приведенных ниже операторов языка C/C++ корректны.
- # Пусть переменные a, p, q, n описаны следующим образом: double a[16]; double *p; const double *q; int n; Отметьте, какие из приведенных ниже операторов языка C/C++ корректны.
- # Пусть переменные a, p, q, n описаны следующим образом: double a[10]; double *p; const double *q; int n; Отметьте, какие из приведенных ниже операторов языка C/C++ корректны.
- # Мы хотим реализовать функцию, которая находит индекс максимального элемента вещественного массива. Отметьте, какие из возможных прототипов данной функции корректны.
- # Мы хотим реализовать функцию product, которая находит произведение элементов вещественного массива a длины n. Отметьте, какие из возможных прототипов данной функции корректны.
- # Мы хотим реализовать функцию length, которая находит длину вектора в трехмерном пространстве. Вектор задается массивом из трех его координат. Отметьте, какие из возможных прототипов данной функции корректны.
- # Рассмотрим следующий фрагмент программы на С/С++: static int *p = NULL; . . . p = (int *) malloc(sizeof(int)); *p = 123; Где хранится значение выражения "*p" (т.е. число 123)?
- # Рассмотрим следующий фрагмент программы на С++: static double *p = 0; . . . p = new double[100]; *p = 1.5; Где хранится значение выражения "*p" (т.е. число 1.5)?
- # Рассмотрим следующий фрагмент программы на С++: static double *a = new double[10]; a[0] = 3.7; Где хранится значение выражения "a[0]" (т.е. число 3.7)?
- # Среди указанных ниже операторов языка C/C++ отметьте корректные.
- # Среди указанных ниже операторов языка C/C++ отметьте корректные.
- # Среди указанных ниже операторов языка C/C++ отметьте корректные.
- # Какая из приведенных ниже строк языка С/С++ описывает массив указателей на тип char?
- # Какой объект описан в следующей строке программы на C/C++? double (*a)[20];
- # Какой объект описан в следующей строке программы на C/C++? double a[20][30];
- # Чему будет равно значение переменной n в результате выполнения следующего фрагмента программы? Процессор имеет 32-разрядную архитектуру. double a[4][3]; int n, m; n = (int)(a+1); m = (int) a; n -= m;
- # Чему будет равно значение переменной n в результате выполнения следующего фрагмента программы? Процессор имеет 32-разрядную архитектуру. double (*a)[4]; int n, m; n = (int)(a+1); m = (int) a; n -= m;
- # Чему будет равно значение переменной n в результате выполнения следующего фрагмента программы? Процессор имеет 32-разрядную архитектуру. double a[10][2]; int n, m; n = (int)(a+1); m = (int) a; n -= m;
- # Укажите, какие из приведенных ниже строк языка C/C++ корректно описывают объекты языка.
- # Укажите, какие из приведенных ниже строк языка C/C++ корректно описывают объекты языка.
- # Укажите, какие из приведенных ниже строк языка C/C++ корректно описывают объекты языка.
- # Эквивалентны ли в языке C/C++ типы PntAct и VectAct, заданные в приведенном ниже фрагменте программы? typedef double R3Point[3]; typedef double R3Vector[3]; typedef void (*PntAct)(R3Point); typedef void (*VectAct)(R3Vector);
- # Эквивалентны ли в языке C/C++ типы Matrix и Transform, заданные в приведенном ниже фрагменте программы? typedef double Matrix[3][3]; typedef double Transform[3][3];
- # Эквивалентны ли в языке C/C++ типы Callback и Action, заданные в приведенном ниже фрагменте программы? typedef void (*Callback)(char *); typedef void (*Action)(void *);
- # Назовем функцию y = f(p) на последовательности p элементов некоторого типа индуктивной, если при добавлении в конец последовательности p еще одного элемента x новое значение функции y1 = f(p&x) можно вычислить, зная только старое значение y и добавленный элемент x. Среди перечисленных ниже функций на последовательностях вещественных чисел укажите индуктивные.
- # Назовем функцию y = f(p) на последовательности p элементов некоторого типа индуктивной, если при добавлении в конец последовательности p еще одного элемента x новое значение функции y1 = f(p&x) можно вычислить, зная только старое значение y и добавленный элемент x. Среди перечисленных ниже функций на последовательностях вещественных чисел укажите индуктивные.
- # Назовем функцию y = f(p) на последовательности p элементов некоторого типа индуктивной, если при добавлении в конец последовательности p еще одного элемента x новое значение функции y1 = f(p&x) можно вычислить, зная только старое значение y и добавленный элемент x. Среди перечисленных ниже функций на последовательностях вещественных чисел укажите индуктивные.
- # Следующий фрагмент программы вычисляет разность d между максимальным и минимальным элементами непустой числовой последовательности. xmin = ... xmax = ... цикл пока в последовательности есть непрочитанные элементы |выполнять | прочесть очередной элемент посл-ти в <вых: x> | если x < xmin | | то xmin = x | конец если | | если x > xmax | | то xmax = x | конец если конец цикла d = xmax - xmin Какими значениями надо инициализировать переменные xmin и xmax, чтобы программа работала правильно?
- # Следующий фрагмент программы для последовательности вещественных чисел вычисляет количество n элементов, строго больших предыдущего, причем самый первый элемент не учитывается (не считается больше предыдущего). Например, для последовательности {2, 1, 3, 5} ответ n=2 (элементы 3 и 5). n = 0 x0 = ... цикл пока в последовательности есть непрочитанные элементы |выполнять | прочесть очередной элемент посл-ти в <вых: x> | если x > x0 | | то n = n + 1 | конец если | x0 = x конец цикла Каким значением надо инициализировать переменную x0, чтобы программа работала правильно?
- # Следующий фрагмент программы для последовательности вещественных чисел вычисляет количество n элементов, строго меньших предыдущего, причем самый первый элемент также учитывается (считается меньше предыдущего). Например, для последовательности {2, 1, 3, 5, 4} ответ n=3 (элементы 2, 1 и 4). n = 0 x0 = ... цикл пока в последовательности есть непрочитанные элементы |выполнять | прочесть очередной элемент посл-ти в <вых: x> | если x < x0 | | то n = n + 1 | конец если | x0 = x конец цикла Каким значением надо инициализировать переменную x0, чтобы программа работала правильно?
- # Левым нейтральным элементом (левой единицей) для бинарной операции называется элемент e такой, что для всякого другого элемента x "произведение" e на x равно x: e x = x. Какие элементы будут нейтральными для операций суммы и максимума чисел соответственно?
- # Левым нейтральным элементом (левой единицей) для бинарной операции называется элемент e такой, что для всякого другого элемента x "произведение" e на x равно x: e x = x. Какие элементы будут нейтральными для операций произведения и минимума чисел соответственно?
- # Левым нейтральным элементом (левой единицей) для бинарной операции называется элемент e такой, что для всякого другого элемента x "произведение" e на x равно x: e x = x. Какие элементы будут нейтральными для операций суммы и минимума чисел соответственно?
- # Какие константы можно в практическом программировании использовать в качестве воображаемого значения "минус бесконечность" при работе с вещественными числами типа double? Укажите все правильные варианты.
- # Какие константы можно в практическом программировании использовать в качестве воображаемого значения "минус бесконечность" при работе с вещественными числами типа float? Укажите все правильные варианты.
- # Какие константы можно в практическом программировании использовать в качестве воображаемого значения "минус бесконечность" при работе с целыми числами типа int? Укажите все правильные варианты.
- # Является ли индуктивной функция, которая последовательности вещественных чисел ставит в соответствие сумму ее первого и последнего элементов?
- # Является ли индуктивной функция, которая последовательности коэффициентов многочлена по убыванию степеней ставит в соответствие пару чисел: (степень многочлена, интеграл многочлена по отрезку [0, 1])?
- # Является ли индуктивной функция, которая последовательности коэффициентов многочлена по возрастанию степеней ставит в соответствие пару чисел: (степень многочлена, интеграл многочлена по отрезку [0, 1])?
- # Функция F последовательности цифр в десятичной записи числа n ставит в соответстие единицу, если n делится на 7, и ноль в противном случае. Какая из приведенных ниже функций на последовательности десятичных цифр числа n является индуктивным расширением функции F?
- # Функция F последовательности цифр в десятичной записи числа n ставит в соответстие единицу, если n делится на 15, и ноль в противном случае. Какая из перечисленных ниже функций на последовательности десятичных цифр числа n является индуктивным расширением функции F?
- # Функция F последовательности цифр в десятичной записи числа n ставит в соответстие единицу, если n делится на 14, и ноль в противном случае. Какая из приведенных ниже функций на последовательности десятичных цифр числа n является индуктивным расширением функции F?
- # Сколько умножений будет выполнено при вычислении значения многочлена степени 3, коэффициенты которого заданы в последовательности по убыванию степеней, при использовании схемы вычисления индуктивной функции?
- # Сколько в сумме операций сложения и умножения будет выполнено при вычислении значения многочлена степени 3, коэффициенты которого заданы в последовательности по убыванию степеней, при использовании схемы вычисления индуктивной функции?
- # Сколько умножений выполняется в схеме Горнера при вычислении значения многочлена степени 3?
- # Назовем элемент xi числовой последовательности w={x1, x2, ..., xn} локальным максимумом, если он строго больше соседних элементов (для крайних элементов рассматривается только 1 сосед, элемент последовательности длины 1 считается локальным максимумом). Пусть F(w)=числу локальных максимумов в w. Какие из перечисленных ниже функций являются индуктивным расширением функции F? Укажите все правильные варианты.
- # Пусть w - последовательность целых чисел, F(W) - максимальная из сумм нескольких подряд идущих элементов последовательности w. Например, для последовательности w={1, -2, 3, 4, -1, 5, -2, -3, 4} максимальную сумму образуют элементы с третьего по шестой: F(w)=3+4-1+5=11. Какие из перечисленных ниже функций являются индуктивным расширением функции F? Укажите все правильные варианты.
- # Пусть w - последовательность целых чисел, F(w)=длина максимального постоянного участка в w. Например, для последовательности w={1, 1, 4, 4, 4, 0, 2} значение F равно 3 (постоянный участок из четверок). Какие из перечисленных ниже функций являются индуктивным расширением функции F? Укажите все правильные варианты.
- # Последовательность вещественных чисел w содержит коэффициенты многочлена по убыванию степеней. Функция F(w) равна значению второй производной многочлена в фиксированной точке t=2. Среди указанных ниже функций отметьте те, которые являются индуктивным расширением функции F.
- # Последовательность вещественных чисел w содержит коэффициенты многочлена по возрастанию степеней. Функция F(w) равна значению второй производной многочлена в фиксированной точке t=2. Среди указанных ниже функций отметьте те, которые являются индуктивным расширением функции F.
- # Последовательность вещественных чисел w содержит коэффициенты многочлена по возрастанию степеней. Функция F(w) равна значению производной многочлена в фиксированной точке t=2. Среди указанных ниже функций отметьте те, которые являются индуктивным расширением функции F.
- # Рассмотрим следующий фрагмент программы: утверждение: A(x) цикл пока B(x) | инвариант: A(x) | x := T(x) конец цикла Здесь через A(x) и B(x) обозначены условия, зависящие от переменной x. Какое условие выполняется по окончании цикла?
- # Выполняется ли инвариант цикла в процессе выполнения тела цикла?
- # Укажите, в какие моменты работы программы выполняется инвариант цикла.
- # Пусть целочисленная переменная n содержит некоторое положительное целое число. Указать, что вычисляет следующая функция f(n): int f(int n) { int s = 2; int k = 0; while (s <= n) { // Invariant: s == 2^(k+1) s *= 2; ++k; } return k; }
- # Пусть целочисленная переменная n содержит некоторое положительное целое число. Указать, что вычисляет следующая функция f(n): int f(int n) { int x = 1; int y = 4; while (y <= n) { // Invariant: y == (x+1)^2 ++x; y += 2*x+1; } return x; }
- # Пусть целочисленная переменная n содержит некоторое положительное целое число. Указать, что вычисляет следующая функция f(n): int f(int n) { int s = 10; int k = 0; while (s <= n) { // Invariant: s == 10*(k+1) s += 10; ++k; } return k; }
- # Рассмотрим следующую функцию, аргументами которой являются два целых неотрицательных числа: int f(int m, int n) { int a = m, b = n; int p = 0; while (b != 0) { if (b%2 == 0) { // b четное b /= 2; a *= 2; } else { // b нечетное --b; p += a; } } return p; } Какое условие является инвариантом цикла?
- # Рассмотрим следующую функцию, аргументами которой являются два целых неотрицательных числа: int f(int m, int n) { // дано: m >= 0 и n >= 0 int a = m; int b = n; int c = 1; while (a != 0 && b != 0) { if (a%2 == 0 && b%2 == 0) { // a и b четные a /= 2; b /= 2; c *= 2; } else if (a%2 == 0) { // a четное, b нечетное a /= 2; } else if (b%2 == 0) { // a нечетное, b четное b /= 2; } else { // a и b нечетные if (a > b) { a -= b; } else { b -= a; } } } // end while return c*(a + b); } Какое условие является инвариантом цикла? (Через НОД и НОК обозначены наибольший общий делитель и наименьшее общее кратное.)
- # Рассмотрим следующий фрагмент программы, вычисляющей частное q и остаток r от деления целых чисел a, b: // дано: целые числа a >= 0, b > 0 int a, b; . . . int q = 0, r = a; int e = 1, m = b; while (r >= b) { if (2*m <= r) { e *= 2; m *= 2; } else if (m > r) { e /= 2; m /= 2; } else { // утверждение: m <= r && r < 2*m q += e; r -= m; } } // q и r - частное и остаток от деления a на b Какое условие является инвариантом цикла?
- # Какое утверждение является инвариантом для следующего фрагмента программы (т.е. из справедливости утверждения до выполнения фрагмента программы вытекает справедливость утверждения после выполнения)? Предполагается, что значение переменной n неотрицательно. double r, x; int n; . . . r *= x*x; r /= ((n+1)*(n+2)); n += 2;
- # Какое утверждение является инвариантом для следующего фрагмента программы (т.е. из справедливости утверждения до выполнения фрагмента программы вытекает справедливость утверждения после выполнения)? Предполагается, что n > 0. double r, x; int n; . . . r *= -x; r *= n/(n+1); ++n;
- # Какое утверждение является инвариантом для следующего фрагмента программы (т.е. из справедливости утверждения до выполнения фрагмента программы вытекает справедливость утверждения после выполнения)? Предполагается, что n не меньше k. Восклицательным знаком обозначается операция вычисления факториала. int n, k, c; . . . c *= (n+1); c /= (n+1-k); ++n;
- # Оценить сверху время работы (т.е. количество выполнений тела цикла) алгоритма Евклида вычисления наибольшего общего делителя двух целых чисел: int gcd(int m, int n) { // дано: целые числа m, n, хотя бы одно отлично от нуля // надо: вычислить НОД пары (m, n) int a = m, b = n; while (b != 0) { // Invariant: НОД(a, b) == НОД(m, n) int r := a % b; // находим остаток от деления a на b a = b; b = r; // заменяем пару (a, b) на (b, r) } return a; // ответ = a }
- # Оценить сверху время работы (т.е. количество выполнений тела цикла) алгоритма быстрого возведения в степень: int fastPow(double a, int n) { // дано: основание a и показатель степени n >= 0 // надо: вычислить a в степени n double b = a, p = 1.0; int k = n; while (k > 0) { // Invariant: b^k * p == a^n if (k%2 == 0) { // k четное k /= 2; b *= b; } else { // k нечетное --k; p *= b; } } return p; }
- # Оценить сверху время работы (т.е. количество выполнений тела цикла) алгоритма приблизительного вычисления логарифма: double myLog(double x, double a, double eps) { // дано: x > 0, a > 1, eps > 0 // надо: вычислить log_a x с точностью eps double y = 0.0, z = x, t = 1.0; while ( fabs(t) > eps || x <= 1.0/a || z >= a ) { // Invariant: a^y * z^t == x if (z >= a) { z /= a; y += t; } else if (z <= 1.0/a) { z *= a; y -= t; } else { z *= z; t /= 2.0; } } return y; }
- # Пусть f(x) - целочисленная функция от целочисленного аргумента. Определить, содержит ли следующий фрагмент программы ошибку (т.е. действительно ли тело цикла сохраняет инвариант): // Программа корень функции int a, b, c; . . . // утверждение: a < b && f(a)*f(b) <= 0 // Значения функции на концах отрезка [a,b] разных знаков while (b - a > 1) { // Invariant: f(a)*f(b) <= 0 // Делим отрезок [a, b] пополам c = (a + b)/2; // c - целая часть (a+b)/2 if (f(a) * f(c) < 0) { b = c; // выбираем левую половину отрезка } else { a = c; // выбираем правую половину } } // утверждение: a == b-1 && // f(a)*f(b) <= 0
- # Пусть a - целочисленный массив размера n (индекс элементов меняется от 0 до n-1), элементы которого строго возрастают: a[0] < a[1] <... < a[n-1]. Определить, содержит ли следующий фрагмент программы ошибку (т.е. действительно ли тело цикла сохраняет инвариант): // Программа Поиск int n; int *a; . . . // дано: целое n; // целочисленный массив a[n], // элементы которого строго возрастают // a[0] < a[1] < ... < a[n-1] // надо: найти элемент x в массиве int x; // искомый элемент . . . // рассматриваются исключительные случаи // общий случай // утверждение: a[0] < x && x <= a[n-1]; int b = 0; int e = n - 1; while (e - b > 1) { Invariant: a[b] < x && x <= a[e] int c := (a + b)/2; // c - целая часть (a+b)/2 if (x < a[c]) { e = c; // выбираем левую половину отрезка } else { b = c; // выбираем правую половину } } // утверждение: b == e - 1 && // a[b] < x && x <= a[e]
- # Пусть f(x) - вещественная функция функция от вещественного аргумента. Определить, содержит ли следующий фрагмент программы ошибку (т.е. действительно ли тело цикла сохраняет инвариант): // Программа корень функции double a, b, c; double eps = 0.000001; . . . // утверждение: a < b && f(a)*f(b) <= 0.0 // Значения функции на концах отрезка [a, b] разных знаков while (b - a > eps) { // Invariant: f(a)*f(b) <= 0.0 // Делим отрезок [a, b] пополам c = (a + b)/2.0; // c - середина отрезка [a, b] if (f(a) * f(c) < 0.0) { b = c; // выбираем левую половину отрезка } else { a = c; // выбираем правую половину } } // утверждение: b - a <= eps && // f(a)*f(b) <= 0.0
- # В массиве, содержащем 1000 элементов, выполняется последовательный поиск элемента x. При этом x содержится в массиве с вероятностью 0.25. Сколько в среднем операций сравнения будет выполнено?
- # В массиве, содержащем 1000 элементов, выполняется последовательный поиск элемента x. При этом x содержится в массиве с вероятностью 0.75. Сколько в среднем операций сравнения будет выполнено?
- # В массиве, содержащем 1000 элементов, выполняется последовательный поиск элемента x. При x содержится в массиве с вероятностью равна 0.1. Сколько в среднем операций сравнения будет выполнено?
- # Пусть дан массив a длины n, элементы которого нестрого возрастают, т.е. соседние элементы могут быть равными. Рассмотрим фрагмент программы бинарного поиска элемента x в массиве a длины n, где после отбрасывания особых ситуаций рассматривается основной случай: . . . // Утверждение: a[0] < x && x <= a[n-1] int beg = 0; int end = n-1; while (end-beg > 1) { // Инвариант: a[beg] < x && x <= a[end] int c = (beg + end) / 2; if (a[c] < x) { beg = c; } else { end = c; } } *idx = end; . . . Пусть значение x содержится в массиве в нескольких экземплярах. Индекс какого элемента массива a будет записан в переменную *idx?
- # Пусть дан массив a длины n, элементы которого нестрого возрастают, т.е. соседние элементы могут быть равными. Рассмотрим фрагмент программы бинарного поиска элемента x в массиве a длины n, где после отбрасывания особых ситуаций рассматривается основной случай: . . . // Утверждение: a[0] <= x && x < a[n-1] int beg = 0; int end = n-1; while (end-beg > 1) { // Инвариант: a[beg] <= x && x < a[end] int c = (beg + end) / 2; if (a[c] <= x) { beg = c; } else { end = c; } } if (a[beg] == x) { *idx = beg; } else { *idx = end; } . . . Пусть значение x содержится в массиве в нескольких экземплярах. Индекс какого элемента массива a будет записан в переменную *idx?
- # Пусть дан массив a длины n, элементы которого нестрого возрастают, т.е. соседние элементы могут быть равными. Рассмотрим фрагмент программы бинарного поиска элемента x в массиве a длины n, где после отбрасывания особых ситуаций рассматривается основной случай: . . . // Утверждение: a[0] < x && x <= a[n-1] int beg = 0; int end = n-1; while (end-beg > 1) { // Инвариант: a[beg] < x && x <= a[end] int c = (beg + end) / 2; if (a[c] < x) { beg = c; } else if (a[c] > x) { end = c; } else { // Утверждение: x == a[c] *idx = c; return true; } } *idx = end; return (x >= a[end]); . . . Пусть значение x содержится в массиве в нескольких экземплярах. Индекс какого элемента массива a будет записан в переменную *idx?
- # Пусть элементы массива a нестрого возрастают (соседние элементы могут быть равными). Дано произвольное значение x, требуется найти максимальный индекс i такой, что a[i] <= x. Используется идея алгоритма бинарного поиска. Каким должен быть инвариант цикла, в котором рассматривается основной случай после отбрасывания исключительных ситуаций? (Условие завершения цикла end == beg+1.)
- # Пусть элементы массива a нестрого возрастают (соседние элементы могут быть равными). Дано произвольное значение x, требуется найти минимальный индекс i такой, что a[i] >= x. Используется идея алгоритма бинарного поиска. Каким должен быть инвариант цикла, в котором рассматривается основной случай после отбрасывания исключительных ситуаций? (Условие завершения цикла end == beg+1.)
- # Пусть элементы массива a нестрого возрастают (соседние элементы могут быть равными). Дано произвольное значение x, требуется найти максимальный индекс i такой, что a[i] <= x. Используется идея алгоритма бинарного поиска. В приведенном ниже цикле рассматривается основной случай после отбрасывания исключительных ситуаций: while (end-beg > 1) { int c = (beg+end)/2; if (a[c] <= x) beg = c; else end = c; } // ответ в переменной beg Какое утверждение является инвариантом этого цикла?
- # Программа, использующая бинарный поиск, ищет элемент в массиве длины миллион в среднем за одну тысячную секунды. Сколько примерно времени потребуется на поиск, если мы заменим алгоритм поиска с бинарного на последовательный?
- # Программа, использующая последовательный поиск, ищет элемент в массиве длины миллион в среднем за одну секунду. Сколько примерно времени потребуется на поиск, если мы заменим алгоритм поиска с последовательного на бинарный?
- # Оцените примерно, во сколько раз алгоритм бинарного поиска работает быстрее алгоритма последовательного поиска для массива из 64 миллионов элементов.
- # Массив a размера 4 содержит элементы 4, 3, 2, 1 в указанном порядке. К нему применяется алгоритм пузырьковой сортировки, использующий сравнение элементов с помощью функции compare и обмен элементов с помощью функции swap. Сколько раз будет вызвана функция swap?
- # Массив a размера 4 содержит элементы 4, 2, 1, 3 в указанном порядке. К нему применяется алгоритм пузырьковой сортировки, использующий сравнение элементов с помощью функции compare и обмен элементов с помощью функции swap. Сколько раз будет вызвана функция swap?
- # Массив a размера 4 содержит элементы 4, 1, 3, 2 в указанном порядке. К нему применяется алгоритм пузырьковой сортировки, использующий сравнение элементов с помощью функции compare и обмен элементов с помощью функции swap. Сколько раз будет вызвана функция swap?
- # Алгоритм пузырьковой сортировки упорядочивает массив из 10 тысяч элементов примерно за 1 секунду. За какое примерно время тот же алгоритм упорядочит массив из 100 тысяч элементов?
- # Алгоритм пузырьковой сортировки упорядочивает массив из 10 тысяч элементов примерно за 1 секунду. За какое примерно время тот же алгоритм упорядочит массив из миллиона элементов?
- # Алгоритм пузырьковой сортировки упорядочивает массив из 100 тысяч элементов примерно за 1 минуту. За какое примерно время тот же алгоритм упорядочит массив из 10 тысяч элементов?
- # К массиву длины 5 применяется алгоритм сортировки методом прямого выбора, использующий сравнение элементов с помощью функции compare и обмен элементов с помощью функции swap. Какое максимальное количество раз может быть вызвана функция swap?
- # Массив длины 5 содержит элементы 5, 4, 1, 2, 3 в указанном порядке. К нему применяется алгоритм сортировки методом прямого выбора, использующий сравнение элементов с помощью функции compare и обмен элементов с помощью функции swap. Сколько раз будет вызвана функция swap?
- # Массив длины 5 содержит элементы 2, 1, 5, 4, 3 в указанном порядке. К нему применяется алгоритм сортировки методом прямого выбора, использующий сравнение элементов с помощью функции compare и обмен элементов с помощью функции swap. Сколько раз будет вызвана функция swap?
- # Для разных массивов фиксированной длины 1000 применяются алгоритмы пузырьковой сортировки и сортировки методом прямого выбора. Какой из этих двух алгоритмов работает в среднем быстрее?
- # Для конкретного массива длины 1000 применяются алгоритмы пузырьковой сортировки и сортировки методом прямого выбора. Какой из этих двух алгоритмов работает быстрее?
- # Для конкретного массива длины 1000 применяются алгоритмы пузырьковой сортировки и сортировки методом прямого выбора. Оба алгоритма используют сравнение элементов с помощью функции compare и обмен элементов с помощью функции swap. Какой из этих алгоритмов вызывает функцию swap большее число раз? (Имеется в виду нестрогое сравнение.)
- # В турнире участвуют 4 баскетбольные команды, все матчи проводятся последовательно в одном зале. По результатам турнира команды должны быть упорядочены в соответствии с их силой. В зависимости от исхода матчей турнир может завершиться раньше или позже; для всякого расписания турнира можно определить максимально возможное количество матчей. Приведите оценку снизу максимального количества матчей для всех возможных расписаний турниров 4 команд.
- # Есть 4 монеты, известно, что все они имеют различные веса. Веса двух монет можно сравнить, используя весы-коромысло. Какое минимальное количество взвешиваний во всех случаях достаточно, чтобы упорядочить монеты по возрастанию их веса?
- # Есть 6 монет, известно, что все они имеют различные веса. Веса двух монет можно сравнить, используя весы-коромысло. Требуется упорядочить монеты по возрастанию их веса. Можно ли придумать такой алгоритм сортировки монет по весу, при котором в любом случае будет сделано не больше 9 взвешиваний?
- # Алгоритм быстрой сортировки использует вспомогательную функцию partition, которая разделяет массив на 3 части: в начале элементы, меньшие либо равные медиане, затем медиана, в конце элементы, большие либо равные медиане. Рассмотрим следующую реализацию функции partition: void partition(double* a, int n, int *m) { if (*m != 0) // Ставим медиану в начало swap(&(a[0]), &(a[*m])); double x = a[0]; // Значение медианы int i = 0; int j = n; while (j-i > 1) { // Инв: a[1], a[2], ..., a[i] <= x // a[j], a[j+1], ..., a[n-1] > x if (a[i+1] <= x) { ++i; } else if (a[j-1] > x) --j; } else { ++i; --j; swap(&(a[i]), &(a[j])); } } if (i > 0) swap(&(a[0]), &(a[i])); *m = i; } Правильна ли подобная реализация, или она может привести к катастрофическому замедлению алгоритма быстрой сортировки в некоторых случаях?
- # Алгоритм быстрой сортировки использует вспомогательную функцию partition, которая разделяет массив на 3 части: в начале элементы, меньшие либо равные медиане, затем медиана, в конце элементы, большие либо равные медиане. Рассмотрим следующую реализацию функции partition: void partition(double* a, int n, int *m) { if (*m != 0) // Ставим медиану в начало swap(&(a[0]), &(a[*m])); double x = a[0]; // Значение медианы int i = 0; int j = n; while (j-i > 1) { // Инв: a[1], a[2], ..., a[i] <= x // a[j], a[j+1], ..., a[n-1] >= x if (a[i+1] <= x) { ++i; } else if (a[j-1] >= x) --j; } else { ++i; --j; swap(&(a[i]), &(a[j])); } } if (i > 0) swap(&(a[0]), &(a[i])); *m = i; } Правильна ли подобная реализация, или она может привести к катастрофическому замедлению алгоритма быстрой сортировки в некоторых случаях?
- # Алгоритм быстрой сортировки использует вспомогательную функцию partition, которая разделяет массив на 3 части: в начале элементы, меньшие либо равные медиане, затем медиана, в конце элементы, большие либо равные медиане. Рассмотрим следующую реализацию функции partition: void partition(double* a, int n, int *m) { if (*m != 0) // Ставим медиану в начало swap(&(a[0]), &(a[*m])); double x = a[0]; // Значение медианы int i = 0; int j = n; while (j-i > 1) { // Инв: a[1], a[2], ..., a[i] < x // a[j], a[j+1], ..., a[n-1] >= x if (a[i+1] < x) { ++i; } else if (a[j-1] >= x) --j; } else { ++i; --j; swap(&(a[i]), &(a[j])); } } if (i > 0) swap(&(a[0]), &(a[i])); *m = i; } Правильна ли подобная реализация, или она может привести к катастрофическому замедлению алгоритма быстрой сортировки в некоторых случаях?
- # Алгоритм сортировки называется стабильным, если он сохраняет взаимный порядок равных элементов. (Такое определение имеет смысл при сортировке массива записей, состоящих из нескольких полей, которые сравниваются лишь по значению одного конкретного поля - например, записи о людях сортируются по их именам, при этом могут быть однофамильцы.) Является ли алгоритм быстрой сортировки стабильным?
- # Алгоритм быстрой сортировки реализован с помощью комбинированной схемы, использующей рекурсию и цикл while, а также вспомогательную функцию partition, которая разделяет текущий отрезок массива на 3 части (элементы, меньшие либо равные медиане, медиана, элементы, большие либо равные медиане): void quickSort(double* a, int n) { if (n <= 1) { return; } else if (n == 2) { if (a[0] > a[1]) swap(&(a[0]), &(a[1])); return; } int beg = 0; int k = n; while (k > 1) { int m = k / 2; partition(a+beg, k, &m); int left = m; int right = k - left - 1; if (left <= right) { // Рекурсивно применяем алг. к левой части quickSort(a+beg, left); beg += left + 1; k -= left + 1; } else { // Рекурсивно применяем алг. к правой части quickSort(a+beg+m+1, right); k -= right + 1; } } } Сколько раз будет вызвана функция partition при выполнении алгоритма быстрой сортировки для массива размера 47? Дайте наиболее точную оценку снизу этого числа.
- # Алгоритм быстрой сортировки реализован с помощью комбинированной схемы, использующей рекурсию и цикл while, а также вспомогательную функцию partition, которая разделяет текущий отрезок массива на 3 части (элементы, меньшие либо равные медиане, медиана, элементы, большие либо равные медиане): void quickSort(double* a, int n) { if (n <= 1) { return; } else if (n == 2) { if (a[0] > a[1]) swap(&(a[0]), &(a[1])); return; } int beg = 0; int k = n; while (k > 1) { int m = k / 2; partition(a+beg, k, &m); int left = m; int right = k - left - 1; if (left <= right) { // Рекурсивно применяем алг. к левой части quickSort(a+beg, left); beg += left + 1; k -= left + 1; } else { // Рекурсивно применяем алг. к правой части quickSort(a+beg+m+1, right); k -= right + 1; } } } Сколько раз будет вызвана функция partition при выполнении алгоритма быстрой сортировки для массива размера 95? Дайте наиболее точную оценку снизу этого числа.
- # Алгоритм быстрой сортировки упорядочивает случайный массив из 128 элементов в среднем за 0.0001 секунду. За какое примерно время тот же алгоритм упорядочит случайный массив из 1024 элементов?
- # Алгоритм быстрой сортировки упорядочивает случайный массив из тысячи элементов в среднем за 0.01 секунду. За какое примерно время тот же алгоритм упорядочит случайный массив из миллиона элементов?
- # Алгоритм быстрой сортировки упорядочивает случайный массив из миллиона элементов в среднем за 40 секунд. За какое примерно время тот же алгоритм упорядочит случайный массив из тысячи элементов?
- # Алгоритм быстрой сортировки реализован с помощью комбинированной схемы, использующей рекурсию и цикл while; рекурсия применяется лишь к меньшему сегменту массива, разделенного на части функцией partition. Алгоритм применяется к массиву размером миллион. Может ли глубина рекурсии равняться 30?
- # Алгоритм быстрой сортировки реализован с помощью комбинированной схемы, использующей рекурсию и цикл while; рекурсия применяется лишь к меньшему сегменту массива, разделенного на части функцией partition. void quickSort(double* a, int n) { if (n <= 1) { return; } else if (n == 2) { if (a[0] > a[1]) swap(&(a[0]), &(a[1])); return; } int beg = 0; int k = n; while (k > 1) { int m = k / 2; partition(a+beg, k, &m); int left = m; int right = k - left - 1; if (left <= right) { // Рекурсивно применяем алг. к левой части quickSort(a+beg, left); beg += left + 1; k -= left + 1; } else { // Рекурсивно применяем алг. к правой части quickSort(a+beg+m+1, right); k -= right + 1; } } } Алгоритм применяется к массиву размером 191. Какой может быть максимальная глубина рекурсии? (Под глубиной рекурсии мы подразумеваем количесто раз, которое функция может вызвать сама себя в цепочке вызовов. Если рекурсивный вызов отсутствует, то мы считаем глубину рекурсии нулевой.)
- # Алгоритм быстрой сортировки реализован с помощью комбинированной схемы, использующей рекурсию и цикл while; рекурсия применяется лишь к меньшему сегменту массива, разделенного на части функцией partition. void quickSort(double* a, int n) { if (n <= 1) { return; } else if (n == 2) { if (a[0] > a[1]) swap(&(a[0]), &(a[1])); return; } int beg = 0; int k = n; while (k > 1) { int m = k / 2; partition(a+beg, k, &m); int left = m; int right = k - left - 1; if (left <= right) { // Рекурсивно применяем алг. к левой части quickSort(a+beg, left); beg += left + 1; k -= left + 1; } else { // Рекурсивно применяем алг. к правой части quickSort(a+beg+m+1, right); k -= right + 1; } } } Алгоритм применяется к массиву размером 95. Какой может быть максимальная глубина рекурсии? (Под глубиной рекурсии мы подразумеваем количесто раз, которое функция может вызвать сама себя в цепочке вызовов. Если рекурсивный вызов отсутствует, то мы считаем глубину рекурсии нулевой.)
- # Назовем алгоритм сортировки оптимальным, если он работает за время O(n log2 n) даже при самом плохом входе. Среди перечисленных ниже алгоритмов сортировки отметьте оптимальные.
- # Какие из перечисленных ниже алгоритмов сортировки работают в среднем за время O(n log2 n)? Отметьте все правильные ответы.
- # Пусть мы имеем набор из n элементов, которые можно сравнивать между собой. Их медианой называется такое значение m, что число элементов набора, меньших либо равных m, равно числу элементов, больших либо равных m. Существует ли алгоритм выбора медианы, который работает за время O(n) (т.е. за время, линейно зависящее от n)?
- # Целочисленный массив содержит элементы 25, 10, 20, 5, 9, 15, 19, 1, 3, 8, 7, 12 в указанном порядке. Образуют ли они бинарную кучу (пирамиду)?
- # Целочисленный массив содержит элементы 20, 18, 10, 15, 7, 7, 9, 8, 10, 6, 4, 5 в указанном порядке. Образуют ли они бинарную кучу (пирамиду)?
- # Целочисленный массив содержит элементы 30, 25, 23, 15, 10, 20, 16, 7, 12, 5, 11, 9 в указанном порядке. Образуют ли они бинарную кучу (пирамиду)?
- # Пусть целочисленный массив содержит элементы 11, 18, 10, 7, 15, 9, 8 в указанном порядке. Услове пирамиды нарушается только для элемента 11, стоящего в вершине пирамиды. Для исправления пирамиды выполняется процедура просеивания, при которой элемент 11 опускается на свое место. Каким будет содержимое массива после окончания этой процедуры?
- # Пусть целочисленный массив содержит элементы 14, 20, 25, 15, 12, 22, 18 в указанном порядке. Услове пирамиды нарушается только для элемента 14, стоящего в вершине пирамиды. Для исправления пирамиды выполняется процедура просеивания, при которой элемент 14 опускается на свое место. Каким будет содержимое массива после окончания этой процедуры?
- # Пусть целочисленный массив содержит элементы 10, 16, 12, 8, 11, 7, 5 в указанном порядке. Услове пирамиды нарушается только для элемента 10, стоящего в вершине пирамиды. Для исправления пирамиды выполняется процедура просеивания, при которой элемент 10 опускается на свое место. Каким будет содержимое массива после окончания этой процедуры?
- # К целочисленному массиву применяется алгоритм сортировки кучей. Пусть после первого этапа алгоритма пирамида (бинарная куча) уже построена и массив содержит элементы 16, 12, 11, 8, 7, 10, 6 в указанном порядке. Затем выполняется второй этап сортировки. На его первом шаге начальный и конечный элементы массива меняются местами, от пирамиды отрезается правая нижняя ветка (т.е. последний элемент массива), затем элемент в вершине пирамиды просеивается, благодаря чему восстанавливается условие пирамиды. Каким будет содержимое массива по окончании этого шага?
- # К целочисленному массиву применяется алгоритм сортировки кучей. Пусть после первого этапа алгоритма пирамида (бинарная куча) уже построена и массив содержит элементы 20, 17, 12, 2, 10, 4, 8 в указанном порядке. Затем выполняется второй этап сортировки. На его первом шаге начальный и конечный элементы массива меняются местами, от пирамиды отрезается правая нижняя ветка (т.е. последний элемент массива), затем элемент в вершине пирамиды просеивается, благодаря чему восстанавливается условие пирамиды. Каким будет содержимое массива по окончании этого шага?
- # К целочисленному массиву применяется алгоритм сортировки кучей. Пусть после первого этапа алгоритма пирамида (бинарная куча) уже построена и массив содержит элементы 30, 20, 25, 10, 7, 19, 5 в указанном порядке. Затем выполняется второй этап сортировки. На его первом шаге начальный и конечный элементы массива меняются местами, от пирамиды отрезается правая нижняя ветка (т.е. последний элемент массива), затем элемент в вершине пирамиды просеивается, благодаря чему восстанавливается условие пирамиды. Каким будет содержимое массива по окончании этого шага?
- # К целочисленному массиву применяется алгоритм сортировки кучей. На первом этапе из элементов массива строится пирамида (бинарная куча) путем просеивания элементов по бинарному дереву в порядке справа налево и снизу вверх. Пусть вначале массив содержал элементы 1, 2, 3, 4, 5, 6, 7 в указанном порядке. Каким будет содержимое массива после построения пирамиды?
- # К целочисленному массиву применяется алгоритм сортировки кучей. На первом этапе из элементов массива строится пирамида (бинарная куча) путем просеивания элементов по бинарному дереву в порядке справа налево и снизу вверх. Пусть вначале массив содержал элементы 4, 5, 6, 7, 1, 2, 3 в указанном порядке. Каким будет содержимое массива после построения пирамиды?
- # К целочисленному массиву применяется алгоритм сортировки кучей. На первом этапе из элементов массива строится пирамида (бинарная куча) путем просеивания элементов по бинарному дереву в порядке справа налево и снизу вверх. Пусть вначале массив содержал элементы 1, 2, 3, 4, 7, 6, 5 в указанном порядке. Каким будет содержимое массива после построения пирамиды?