Если список инициализации содержит начальных значений больше чем элементов массива то это ошибка

Основы алгоритмизации и программирования тест сделайте пожалуйста

23.01.2013, 22:45. Показов 53545. Ответов 15


Студворк — интернет-сервис помощи студентам

Вопросы 1-31

Вопрос 1 (10454)
Укажите, какое из нижеследующих утверждений ложное.
1: Комментарии при выполнении программы вызывают печать компьютером на экране текста после символов //.
2: Если вывод осуществляется в cout, то esc-последовательность n вызывает перемещение курсора к началу следующей строки на экране.
3: Все переменные должны быть объявлены до того, как они используются.
4: Все высказывания истинные

Вопрос 2 (10455)
Укажите, какое из нижеследующих утверждений ложное.
1: Всем переменным, когда они объявляются, должен быть присвоен тип.
2: C++ рассматривает переменные number и NuMbEr как одинаковые.
3: Объявления в теле функции C++ могут появляться почти везде.
4: Все высказывания истинные

Вопрос 3 (10456)
Укажите, какое из нижеследующих утверждений ложное.
1: Операция взятия по модулю (%) может применяться только к целым числам.
2: Все арифметические операции *, /, %, + и — имеют одинаковый уровень приоритета.
3: Пустые скобки, следующие за именем функции в прототипе, указывают, что функции для выполнения ее задачи не требуется никаких параметров.
4: Все высказывания истинные

Вопрос 4 (10457)
Укажите, какое из нижеследующих утверждений ложное.
1: Тело каждой функции ограничивается левой и правой фигурными скобками ( { и } ).
2: Программа на C++, которая выводит три строки, должна содержать три оператора вывода, использующих cout.
3: Элементы данных или элемент-функции, объявленные со спецификатором доступа private, доступны для элемент-функций класса, в котором они объявлены.
4: Все высказывания истинные

Вопрос 5 (10458)
Укажите, какое из нижеследующих утверждений истинное.
1: В соответствии с соглашением, имена функций начинаются с прописной буквы, и все последующие слова в имени также начинаются с прописной буквы.
2: Переменные, объявленные в теле некоторой элемент-функции, называются элементами данных и могут использоваться во всех элемент-функциях класса.
3: Для исполнения программы можно использовать любой файл исходного кода, содержащий int main().
4: Указатель, объявленный как void, может быть разыменован.

Вопрос 6 (10459)
Укажите, какое из нижеследующих утверждений истинное.
1: Типы аргументов в вызове функции должны быть согласованы с типами соответствующих параметров в списке параметров прототипа функции.
2: В операторе выбора switch должна быть метка default.
3: В операторе выбора switch в разделе default требуется оператор break.
4: Все высказывания истинные

Вопрос 7 (10460)
Укажите, какое из нижеследующих утверждений истинное.
1: Выражение, содержащее операцию ||, истинно, если истинны оба операнда этой операции.
2: Массив может хранить много различный типов данных.
3: Операция взятия адреса может быть применима только к константам, к выражениям, не дающим в качестве результата ссылки, и к переменным, объявленным с классом памяти register.
4: Все высказывания ложные

Вопрос 8 (10461)
Укажите, какое из нижеследующих утверждений истинное.
1: Если количество начальных значений в списке инициализации меньше, чем количество элементов массива, оставшиеся элементы автоматически получают в качестве начальных значений последние значения из списка инициализации.
2: Если список инициализации содержит начальных значений больше, чем элементов массива, то это — ошибка.
3: Отдельный элемент массива, который передается функции и модифицируется в этой функции, будет содержать модифицированное значение после завершения выполнения вызываемой функции.
4: Все высказывания ложные

Вопрос 9 (10462)
Укажите, какое из нижеследующих утверждений истинное.
1: Когда исполнение программы приостанавливается в контрольной точке, следующим оператором, который будет исполняться, является оператор после контрольной точки.
2: Когда значение переменной изменяется, в окнах Autos и Locals оно выделяется желтым цветом.
3: Во время отладки команда Step Out исполняет все оставшиеся операторы текущей функции и возвращает управление в точку, где была вызвана функция.
4: Все высказывания истинные

Вопрос 10 (10463)
Укажите, какое из нижеследующих утверждений ложно.
1: Указатели разных типов нельзя присваивать друг другу без операции приведения типа.
2: Выражение (х > у && а < b) истинно, если х > у или а < b.
3: Все высказывания ложные
4: Индексы массива обычно должны иметь тип float.

Вопрос 11 (10464)
Выполнение каждой программы на C++ начинается с функции__________.
1: void
2: include
3: main
4: using

Вопрос 12 (10465)
Каждый оператор заканчивается__________.
1: endl
2: return
3: точкой с запятой
4: управляющей последовательностью

Вопрос 13 (10466)
Оператор________ используется для принятия решений
1: cout
2: if
3: while
4: for

Вопрос 14 (10467)
Оператор выбора________ используется для выполнения одного действия, если его условие истинно, и другого действия, если условие ложно
1: If
2: If…then
3: If…then…else
4: If…else

Вопрос 15 (10468)
Повторение набора инструкций заданное число раз называется______ повторений
1: управляемым счетчиком
2: числом
3: заданием

Вопрос 16 (10469)
Когда заранее не известно, сколько раз должна исполняться группа операторов, для прерывания повторения можно использовать________ значение
1: контрольное
2: сигнальное
3: фиктивное
4: все ответы верны

Вопрос 17 (10470)
Списки и таблицы значений хранятся в__________
1: массиве
2: указателе
3: списке
4: стандартной библиотеке

Вопрос 18 (10471)
Элементы массива связаны тем, что они имеют одни и те же _________
1: имя
2: тип
3: значения
4: размерность

Вопрос 19 (10472)
Число, используемое для обращения к отдельному элементу массива называется____________
1: тип
2: индекс
3: значение
4: позиция

Вопрос 20 (10473)
Для объявления размера массива должна использоваться__________, потому что она делает программу более масштабируемой
1: переменная
2: константа
3: именованная константа
4: символ

Вопрос 21 (10474)
Процесс упорядоченного размещения элементов в массиве называется___________
1: сортировка
2: поиск
3: проверка
4: изменение

Вопрос 22 (10599)
Процесс определения значения ключа, содержащегося в массиве, называется___________
1: сортировка
2: поиск
3: проверка
4: изменение

Вопрос 23 (10600)
Указатель — это переменная, которая содержит в качестве своего значения __________другой переменной
1: индекс
2: адрес
3: код
4: ссылку

Вопрос 24 (10601)
Для инициализации указателя можно использовать
1: null
2: 0
3: адрес
4: все перечисленное

Вопрос 25 (10602)
Целое, которое может быть присвоено указателю, является
1: 0
2: положительным
3: отрицательным
4: все перечисленное

Вопрос 26 (10603)
Что такое идентификаторы в языке Си++ ?
1: это последовательность знаков, начинающаяся с буквы или знака подчеркивания
2: это последовательность знаков
3: это последовательность знаков, начинающаяся с буквы
4: это последовательность знаков, начинающаяся со знака подчеркивания

Вопрос 27 (10604)
В идентификаторах можно использовать
1: заглавные и строчные латинские буквы, цифры и знак подчеркивания
2: заглавные и строчные латинские буквы, цифры и знак подчеркивания
3: заглавные и строчные латинские буквы
4: заглавные и строчные латинские буквы, цифры
5: заглавные и строчные латинские буквы, знак подчеркивания

Вопрос 28 (10605)
Что является выражениями в языке Си++ ?
1: это переменные, функции и константы объединенные знаками операций
2: это переменные объединенные знаками операций
3: это функции объединенные знаками операций
4: это константы объединенные знаками операций

Вопрос 29 (10606)
Какая из операций не относится к операции сравнения?
1: (=)
2: (>)
3: (<)
4: (==)
5: (!=)

Вопрос 30 (10607)
В результате успешной компиляции текста программы на C++ с каким расширением будет получен файл?
1: .obj
2: .exe
3: .cpp
4: .h

Вопрос 31 (10608)
Если не будет указан базовый тип, то какай тип будет подразумеваться по умолчанию
1: int
2: char
3: short
4: long

Вопросы 32-63

Вопрос 32 (10609)
К чему применяется операция инкримента?
1: к переменным
2: к константам
3: к выражениям
4: к строкам

Вопрос 33 (10610)
К каким числам применима операция %?
1: к целым
2: к вещественным
3: и к целым и к вещественным

Вопрос 34 (10611)
Какой операции нет в C++?
1: последовательной
2: унарной
3: бинарной
4: тернарная

Вопрос 35 (10612)
Из чего состоит оператор объявления имени?
1: из названия типа и объявляемого имени
2: из названия типа
3: из объявляемого имени

Вопрос 36 (10613)
Оператор while соответствует оператору for:
1: for ( ; условие ; )
оператор
2: for ( условие; ; )
оператор
3: for ( ; ; условие)
оператор

Вопрос 37 (10614)
В языке Си++ лексема — это:
1: набор специальных символов и директив
2: множество строк, определяющих состояние программы
3: процедура, выполняющая определенные задания
4: последовательности символов языка, разделяющиеся пробелами и други¬ми неграфическими символами

Вопрос 38 (10615)
В языке Си++ указатель — это:
1: специальный значок, показывающий, что это динамическая переменная
2: символическое представление адреса ячейки памяти
3: символ, указывающий на что-либо
4: метка

Вопрос 39 (10616)
В языке Си++ литерал — это:
1: переменная зарезервированного типа
2: неизменяемый объект языка
3: строка
4: буква

Вопрос 40 (10617)
Комментарии заключаются в скобки:
1: { }
2: /* */
3: [ ]
4: /% %/

Вопрос 41 (10618)
Идентификатор — это:
1: последовательность латинских букв, цифр и символа «_», начинающаяся с буквы или символа «_»
2: неизменяемые объекты языка (константы)
3: последовательность латинских и русских букв
4: способ кодирования, допустимые преобразования над значением данной переменной

Вопрос 42 (10619)
Фактический адрес в указателях — это:
1: строка
2: указатель
3: число
4: буква

Вопрос 43 (10620)
Составной оператор — это:
1: последовательность операторов, заключенная в фигурные скобки { }
2: последовательность операторов, заключенная квадратные скобки [ ]
3: последовательность операторов, заключенная в операторные скобки begin … end
4: последовательность операторов, заключенная в круглые скобки ( )

Вопрос 44 (10621)
Спецификация типа — это:
1: задание типа переменной
2: список переменных
3: перечисление всех переменных, которые использовались в программе
4: список типов переменных, которые использовались в программе

Вопрос 45 (10622)
Логическое «не равно» обозначается:
1: <>
2: ||
3: !
4: !=

Вопрос 46 (10623)
Логическое «и» обозначается:
1: =
2: ||
3: &
4: &&

Вопрос 47 (10624)
Логическое «не» обозначается:
1: !
2: !!
3: ||
4: not

Вопрос 48 (10625)
Битовая операция инверсии битов обозначается:
1: ~
2: ~
3: >>
4: <<

Вопрос 49 (10626)
Битовая операция исключающего «или» обозначается:
1: ~
2: ~
3: ||
4: &&

Вопрос 50 (10627)
Операция битового «и» обозначается:
1: ~
2: ~
3: ||
4: &

Вопрос 51 (10628)
Операция битового «или» обозначается:
1: ~
2: —
3: ||
4: &

Вопрос 52 (10629)
Текстовый поток — это:
1: логическое понятие, которое система может относить к чему угодно — от дисковых файлов до терминалов
2: последовательность символов, которая организуется в строки, завершающиеся символами новой строки
3: последовательность символов, которая организуется в списки слов, завершающиеся точкой с запятой
4: текст программы

Вопрос 53 (10630)
Выражения — это:
1: конструкции, включающие константы (литералы), переменные, знаки операций, скобки для управления порядком выполнения операций, обращения к функциям
2: основные строительные блоки программы; в языке Си++ указанием на наличие выражения служит символ «точка с запятой», стоящий в конце него
3: набор символов и операций
4: операторы, выполняющие определенные действия с переменными

Вопрос 54 (10631)
Тернарное выражение — это:
1: компактный способ записи оператора WHILE/DO
2: компактный способ записи оператора IF/ELSE
3: выбор одного из нескольких вариантов
4: выражение, описывающее действия логических связывающих операторов на переменные

Вопрос 55 (10632)
Оператор-переключатель — это:
1: оператор для выбора одного из нескольких вариантов (SWITCH)
2: строка с меткой DEFAULT
3: CASE
4: BREAK

Вопрос 56 (10633)
Оператор цикла DO/WHILE является:
1: конструкцией цикла с предусловием
2: конструкцией цикла с постусловием
3: конструкцией цикла с выбором варианта
4: конструкцией цикла с перебором значений параметра

Вопрос 57 (10634)
Формальный аргумент — это:
1: конкретное значение, присвоенное этой переменной вызывающей программой
2: переменная и вызываемой программе
3: строка, которая пишется в скобках функции
4: строка, которая пишется в скобках процедуры

Вопрос 58 (10635)
Фактический аргумент — это:
1: конкретное значение, присвоенное этой переменной вызывающей программой
2: переменная в вызываемой программе
3: строка, которая пишется в скобках функции
4: строка, которая пишется в скобках процедуры

Вопрос 59 (10636)
Писать # include <stdio.h> нужно для:
1: подключения файла, содержащего макроопределения и объявления данных, необходимых для работы функций из стандартной библиотеки ввода-вывода
2: позволяет дать в программе макроопределения (или задать макросы)
3: переопределения не только константы, но и целых программных конструкций
4: замены каждого параметра в строке лексем на соответствующий аргумент макровызова

Вопрос 60 (10637)
Точка с запятой является:
1: разделителем операторов
2: частью оператора
3: ключевым знаком языка Си
4: спецсимвол

Вопрос 61 (10638)
Какой тип данных отсутствует в Си в отличие от большинства других языков:
1: Real
2: Integer
3: String
4: Char

Вопрос 62 (10639)
В языке Си++ тело функции ограничено операторными скобками:
1: begin end
2: start finish
3: []
4: {}

Вопрос 63 (10640)
В языке Си++ программа начинает выполняться с функции:
1: Start
2: Main
3: Go
4: Do

Вопросы 64-91

Вопрос 64 (10641)
Идентификатором будет:
1: schetchik get_line a12 Paraml _ab
2: %ab 12abc -x schetchik
3: b ab 12abc -x schetchik
4: * ab 12abc -x schetchik

Вопрос 65 (10642)
Лидирующий нуль в литералах означает:
1: числовой шестнадцатеричный литерал
2: вещественный десятичный литерал
3: числовой восьмеричный литерал
4: целый десятичный литерал

Вопрос 66 (10643)
Символьным литералом будет:
1: «q»
2: %q
3: «s»
4: «sq»

Вопрос 67 (10644)
Строковым литералом будет
1: «sq»
2: %q
3: «s»
4: «qsqs»

Вопрос 68 (10645)
Оператор INT в Си++ применяется для:
1: переопределения диапазона целых чисел
2: преобразования переменной к целому типу
3: описания переменных целого типа
4: прибавления единицы к коду символа

Вопрос 69 (10646)
Строки в Си++ представляются в виде:
1: множества символов, стоящих в один ряд
2: одного идентификатора
3: массива элементов типа CHAR
4: символического представления ячейки памяти

Вопрос 70 (10647)
Наличие нуль-символа () означает, что:
1: количество ячеек массива должно быть, по крайней мере, на одну больше, чем число символов, которые необходимо размещать в памяти
2: логическим значением переменной является «ложь»
3: количество ячеек массива должно быть на одну меньше, чем число символов, которые необходимо размещать в памяти
4: логическим значением переменной является «истина»

Вопрос 71 (10648)
Пример: val = *ptr; операция косвенной адресации * производит:
1: получение адреса
2: перенаправление адреса переменной val к переменной ptr
3: определение значения, на которое указывает ptr
4: определение значения, на которое указывает valv

Вопрос 72 (10649)
Если в цикле задано два разных условия выхода, то используется оператор:
1: CONTINUE
2: BREAK
3: GOTO
4: NEXT

Вопрос 73 (10650)
Если в выражениях встречаются операнды различных типов, то они преобразуются к общему типу в соответствии с определенными правилами. Если один из операндов имеет тип char, то:
1: другие также преобразуются к типу char и результат имеет тип Char
2: другие преобразуются к типу int и результат имеет тип int
3: во время операции присваивания значение правой части преобразуется к типу левой части, который и становится типом результата
4: остается как есть и результат будет Char

Вопрос 74 (10651)
Метки в операторе Switch должны быть:
1: указателями
2: переменной
3: константой
4: типа Char

Вопрос 75 (10652)
Используя форму обращения Function1 (x), получаем:
1: передачу в функцию значения переменной х
2: передачу адреса переменной х
3: использование глобальной переменной
4: использование класса памяти х

Вопрос 76 (10653)
Используя форму обращения Functionl (&x), получаем:
1: передачу в функцию значения переменной х
2: передачу адреса переменной х
3: использование глобальной переменной
4: использование класса памяти х

Вопрос 77 (10654)
Тип функции определяется:
1: типом ее аргументов
2: использованием в программе
3: типом ее описания
4: типом возвращаемого ею значения

Вопрос 78 (10655)
Автоматические объекты:
1: существуют во время выполнения данного блока и теряют свои значения при выходе из него
2: хранятся вне любой функции, входящей в состав программы, и существуют в течение выполнения всей программы
3: являются объектами статического класса памяти
4: можно инициализировать только выражениями с константами и с указателями на ранее описанные объекты

Вопрос 79 (10656)
Макровызов должен состоять:
1: из списка макросов
2: из списка макропеременных
3: из списка макроимен
4: из макроимени и заключенного, в круглые скобки списка аргументов

Вопрос 80 (10657)
Каков будет результат выполнения операторов:
nrs = 22;
ptr = &nrs;
val = *ptr;
1: присваивание значения 22 переменной ptr
2: &nrs дает адрес переменной val
3: &nrs дает адрес переменной ptr
4: присваивание значения 22 переменной val

Вопрос 81 (10658)
Каков будет результат выполнения операторов:
int i,j,s;
i=j=2; /* i и j получают значение 2 */
s=(i++)+(++j);
1: i= 3,j = 2, s= 5
2: i= 3, j = 3, s = 6
3: i = 3, j = 3, s = 5
4: i = 2, j = 3, s = 5

Вопрос 82 (10659)
Каков будет результат выполнения операторов:
int х,у,а;
х=5;
у=х*2+7;
а=у/4;
1: х = 5, у = 17, а = 4,25
2: х = 5, у = 17, а = 4
3: х = 5, у = 10, а = 2,25
4: х = 5, у = 32, а = 8

Вопрос 83 (10660)
Каков будет результат выполнения операторов:
а=(у=(х=5)*2+7)/4
1: а = 4,25
2: а = 4
3: а = 2,25
4: error

Вопрос 84 (10661)
Каков будет результат выполнения операторов:
int x,y;
х=у=5;
х+=2;
y-=3;
х*=у;
х/=++у;
1: у = 3, х = 4
2: у = 4, х = 12
3: у = 12, х = 12/3
4: у = 3, х = 14

Вопрос 85 (10662)
Каков будет результат выполнения операторов:
int a,b
а = 4;
b=7;
m=(a>b)?a:b;
1: т = 4
2: m = 11
3: т = 3
4: т = 7

Вопрос 86 (10663)
Каков будет результат выполнения операторов:
int х,у
y=-4;
х=(у<0)?-у:у;
1: x = 4
2: х = -4
3: х = 0
4: x: = 8

Вопрос 87 (41969)
Инкапсуляция — это
1: представляет собой механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то и другое от внешнего вмешательства или неправильного использования
2: позволяет использовать в дочерних классах функционал родительского класса и, в случае необходимости, дополнять его
3: представляет собой способность к изменению функционала, унаследованного от базового класса

Вопрос 88 (41970)
Наследование — это
1: представляет собой механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то и другое от внешнего вмешательства или неправильного использования
2: позволяет использовать в дочерних классах функционал родительского класса и, в случае необходимости, дополнять его
3: представляет собой способность к изменению функционала, унаследованного от базового класса

Вопрос 89 (41971)
Полиморфизм — это
1: представляет собой механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то и другое от внешнего вмешательства или неправильного использования

2: позволяет использовать в дочерних классах функционал родительского класса и, в случае необходимости, дополнять его

3: представляет собой способность к изменению функционала, унаследованного от базового класса

Вопрос 90 (41972)
Интерфейс
1: представляет собой набор функций, которые реализуют класс

2: представляет собой описание набора функций
3: представляет собой описание набора функций, которые реализуют класс

4: представляет собой описание набора функций

Вопрос 91 (41973)
Класс является
1: представителем объекта

2: описанием объекта

3: частью объекта

4: реализатором объекта

Вопросы 92-128

Вопрос 92 (41974)
Объект является
1: конкретным описанием определенного класса

2: конкретной частью определенного класса

3: производной определенного класса

4: конкретным представителем определенного класса

Вопрос 93 (41975)
Из приведенных утверждений
а) объект является экземпляром определенного класса
б) класс является экземпляром определенного объекта

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 94 (41976)
Поля — это
1: переменные, принадлежащие классу или экземпляру класса

2: процедуры и функции класса
3: синтаксическая надстройка, позволяющая осуществлять в форме вызов функции

4: синтаксическая надстройка, поддерживаемая компилятором и средой Visual Basic, которая позволяет вызывать методы других объектов

Вопрос 95 (41977)
Методы — это
1: переменные, принадлежащие классу или экземпляру класса

2: процедуры и функции класса
3: синтаксическая надстройка, позволяющая осуществлять в форме вызов функции

4: синтаксическая надстройка, поддерживаемая компилятором и средой Visual Basic, которая позволяет вызывать методы других объектов

Вопрос 96 (41978)
Свойства — это
1: переменные, принадлежащие классу или экземпляру класса

2: процедуры и функции класса
3: синтаксическая надстройка, позволяющая осуществлять в форме вызов функции

4: синтаксическая надстройка, поддерживаемая компилятором и средой Visual Basic, которая позволяет вызывать методы других объектов

Вопрос 97 (41979)
События — это
1: переменные, принадлежащие классу или экземпляру класса

2: процедуры и функции класса
3: синтаксическая надстройка, позволяющая осуществлять в форме вызов функции

4: синтаксическая надстройка, поддерживаемая компилятором и средой Visual Basic, которая позволяет вызывать методы других объектов

Вопрос 98 (41980)
Переменные, принадлежащие классу или экземпляру класса — это
1: Поля

2: Методы

3: Свойства

4: События

Вопрос 99 (41981)
Процедуры и функции класса — это
1: Поля

2: Методы

3: Свойства

4: События

Вопрос 100 (41982)
Синтаксическая надстройка, позволяющая осуществлять в форме вызов функции — это
1: Поля

2: Методы
3: Свойства

4: События

Вопрос 101 (41983)
Синтаксическая надстройка, поддерживаемая компилятором и средой Visual Basic, которая позволяет вызывать методы других объектов — это
1: Поля

2: Методы

3: Свойства

4: События

Вопрос 102 (41984)
Указатель — это переменная, которая содержит в качестве своего значения _______ другой переменной
1: Значение

2: Адрес

3: Выражение

4: Тип

Вопрос 103 (41985)
Указатель — это
1: Константа

2: Адрес
3: Переменная

4: Выражение

Вопрос 104 (41986)
Целое, которое может быть присвоено указателю, является
1: 0
2: положительным

3: отрицательным

4: все перечисленное

Вопрос 105 (41987)
Для инициализации указателя можно использовать
1: Значение

2: Адрес
3: Выражение

4: Тип

Вопрос 106 (41988)
Для инициализации указателя можно использовать
1: Любое целое значение
2: Только положительное целое значение

3: Только ноль

4: Любое целое значение, только не ноль

Вопрос 107 (41989)
Для инициализации указателя можно использовать
1: null

2: 0
3: адрес

4: все перечисленное

Вопрос 108 (41990)
Из приведенных утверждений
а) Операция взятия адреса может быть применима только к константам, к выражениям, не дающим в качестве результата ссылки, и к переменным, объявленным с классом памяти register.
б) Указатель, объявленный как void, может быть разыменован
1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 109 (41991)
Из приведенных утверждений
а) Указатели разных типов нельзя присваивать друг другу без операции приведения типа.
б) Указатель, объявленный как void, может быть разыменован.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 110 (41992)
Что печатается при выполнении оператора? Предполагайте следующие объявления переменных:
char s1[ 50 ] = «jack»;
char s2[ 50 ] = «jill»;
char s3[ 50 ] , *sptr;

cout << strcpy( s3, s2 ) << endl;

1: jill

2: jack

3: 4
4: True

Вопрос 111 (41993)
Что печатается при выполнении оператора? Предполагайте следующие объявления переменных:
char s1[ 50 ] = «jack»;
char s2[ 50 ] = «jill»;
char s3[ 50 ] , *sptr;

cout << strcat( strcat( strcpy( s3, s1 ) , » and » ), s2 ) << endl;

1: jack and

2: and jill

3: jack and jill

4: 4 and 4

Вопрос 112 (41994)
Что печатается при выполнении оператора? Предполагайте следующие объявления переменных:
char s1[ 50 ] = «jack»;
char s2[ 50 ] = «jill»;
char s3[ 50 ] , *sptr;

cout << strlen( s1 ) + strlen( s2 ) << endl;

1: 4
2: 8
3: jackjill

4: оператор содержит ошибку

Вопрос 113 (41995)
Из приведенных утверждений
а) Комментарии при выполнении программы вызывают печать компьютером на экране текста после символов //.
б) Если вывод осуществляется в cout, то esc-последовательность n вызывает перемещение курсора к началу следующей строки на экране.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 114 (41996)
Из приведенных утверждений
а) Все переменные должны быть объявлены до того, как они используются.
б) Всем переменным, когда они объявляются, должен быть присвоен тип.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 115 (41997)
Из приведенных утверждений
а) Объявления в теле функции C++ могут появляться почти везде.
б) C++ рассматривает переменные number и NuMbEr как одинаковые.

1: верно только а

2: верно только б

3: верно только б

4: оба утверждения ложны

Вопрос 116 (41998)
Из приведенных утверждений
а) Операция взятия по модулю (%) может применяться только к целым числам.
б) Все арифметические операции *, /, %, + и — имеют одинаковый уровень приоритета.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 117 (41999)
Из приведенных утверждений
а) Пустые скобки, следующие за именем функции в прототипе, указывают, что функции для выполнения ее задачи не требуется никаких параметров.
б) Тело каждой функции ограничивается левой и правой фигурными скобками ( { и } )

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 118 (42000)
Из приведенных утверждений
а) Программа на C++, которая выводит три строки, должна содержать три оператора вывода, использующих cout.
б) Элементы данных или элемент-функции, объявленные со спецификатором доступа private, доступны для элемент-функций класса, в котором они объявлены.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 119 (42001)
Из приведенных утверждений
а) В соответствии с соглашением, имена функций начинаются с прописной буквы, и все последующие слова в имени также начинаются с прописной буквы.
б) Переменные, объявленные в теле некоторой элемент-функции, называются элементами данных и могут использоваться во всех элемент-функциях класса.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 120 (42002)
Из приведенных утверждений
а) Для исполнения программы можно использовать любой файл исходного кода, содержащий int main().
б) Указатель, объявленный как void, может быть разыменован.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 121 (42003)
Из приведенных утверждений
а) Типы аргументов в вызове функции должны быть согласованы с типами соответствующих параметров в списке параметров прототипа функции.
б) В операторе выбора switch должна быть метка default.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 122 (42004)
Из приведенных утверждений
а) В операторе выбора switch в разделе default требуется оператор break.
б) Выражение, содержащее операцию ||, истинно, если истинны оба операнда этой операции.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 123 (42005)
Из приведенных утверждений
а) Массив может хранить много различный типов данных.
б) Операция взятия адреса может быть применима только к константам, к выражениям, не дающим в качестве результата ссылки, и к переменным, объявленным с классом памяти register.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

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

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 125 (42007)
Из приведенных утверждений
а) Отдельный элемент массива, который передается функции и модифицируется в этой функции, будет содержать модифицированное значение после завершения выполнения вызываемой функции.
б) Когда исполнение программы приостанавливается в контрольной точке, следующим оператором, который будет исполняться, является оператор после контрольной точки.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 126 (42008)
Из приведенных утверждений
а) Когда значение переменной изменяется, в окнах Autos и Locals оно выделяется желтым цветом.
б) Во время отладки команда Step Out исполняет все оставшиеся операторы текущей функции и возвращает управление в точку, где была вызвана функция.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 127 (42009)
Из приведенных утверждений
а) Указатели разных типов нельзя присваивать друг другу без операции приведения типа.
б) Индексы массива обычно должны иметь тип float.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 128 (42010)
Для инициализации указателя можно использовать

1: null

2: 0
3: адрес
4: все перечисленное

Массивы указателей.

Массивы могут содержать указатели.
Типичным использованием такой структуры
данных является формирование массива
строк
. Каждый элемент такого массива
– строка, но в С строка является, по
существу, указателем на ее первый символ.
Таким образом, каждый элемент в массиве
строк в действительности является
указателем на первый символ строки.
Рассмотрим объявление массива строк
students, который будет
полезен для решения нашей задачи.

char
*students[4] = {“Ivanov”, “Velnikovskiy”, “Nilov”,
“Petrov”};

Элемент объявления student[4]
указывает массив из 4 элементов.
элемент объявления char*
указывает, что тип каждого элемента
массива students
указатель на char .
Четыре значения, размещаемые в массиве
– это “Ivanov”, “Velnikovskiy”,
“Nilov”, “Petrov”.
Каждое из них хранится в памяти как
строка, завершающаяся нулевым символом,
которая на один символ длиннее, чем
число символов текста, указанного в
кавычках. Эти четыре строки имеют длину
6, 12, 5 и 6 символов соответственно. Хотя
это выглядит так, словно сами строки
помещены в массив students
, на самом деле в массиве хранятся
лишь указатели (см. рисунок ниже). Каждый
из них указывает на первый символ
соответствующей ему строки. Таким
образом, хотя размер массива students
фиксирован, он обеспечивает доступ
к строкам символов любой длины. Эта
гибкость – один из примеров мощных
возможностей структурирования данных
в С.

‘I’

‘v’

‘a’

‘n’

‘o’

‘v’

‘’

students [0]

‘V’

‘e’

‘l’

‘n’

‘i’

‘k’

‘o’

‘v’

‘s’

‘k’

‘i’

‘y’

‘’

students [1]

‘N’

‘i’

‘l’

‘o’

‘v’

‘’

students [2]

‘P’

‘e’

‘t’

‘r’

‘o’

‘v’

‘’

students [3]

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

Решение задачи

Итак, наша программа должна выполнять
несколько типовых операций над массивом
studentGrades размером
4 на 5. Каждая строка представляет номер
студента, (соответствие этого номера
имени будет храниться в массиве students
)? а каждый столбец представляет оценку
на каждом из четырех экзаменов. манипуляции
с массивом выполняются при помощи
четырех функций . Функция minimum
определяет наихудшую оценку всех
студентов в течение семестра. Функция
maximum определяет
наилучшую оценку всех студентов в
течение семестра.. Функция average
определяет среднесеместровую оценку
отдельного студента. Функция printArray
выводит двумерный массив в табличном
виде.

Каждая из функций minimum,
maximum и printArray
получает три аргумента – массив
studentGrades (называемый
grades в каждой
функции), количество студентов
(число строк массива) и количество
экзаменов (количество столбцов массива).
Каждая функция циклически обрабатывает
массив grades, используя
вложенные структуры for.
Приведем пример вложенной структуры
for из описания функции
minimum:

for
(int i = 0; i<pupils; i++)

for (int j = 0; j< tests; j++)

if (grades[i][j]< lowGrade)

lowGrade = grades[i][j];

Теперь сама программа:

//
Пример использования двумерного массива

#include
<stdio.h>

const
int studentsNumber = 3; //количество студентов

const
int exams = 4; // количество экзаменов

char
*students[4] = {“Ivanov”, “Velnikovskiy”, “Nilov”,
“Petrov”};

int
minimum(int [] [exams], int, int);

int
maximum (int [] [exams], int, int);

float
average (int [], int, int);

void
printArray (int [] [exams], int, int);

main()

{

int
studentGrades [studentsNumber][exams] = {{77,68, 86, 73,
70},{96,87,89,78,65},{70,90,86,81,75},{75,67,96,86,82}};

printf(«nMassiv:»);

printArray(studentGrades, sudentsNumber, exams);

printf («n The baddest mark: %i», minimum(studentsGrades,
studentsNumber, exams));

printf («n The goodest mark: %i», maximum(studentsGrades,
studentsNumber, exams));

for (int person = 0; person < studentsNumber; person++)

printf(«n The middle mark of %s is %f
«,average(studentGrades[person], exams));

return 0;

}

//
Поиск минимальной оценки

int
minimum(int grades[][exams], int pupilus, int tests)

{

int lowGrade = 100;

for
(int i = 0; i<pupils; i++)

for (int j = 0; j< tests; j++)

if (grades[i][j]< lowGrade)

lowGrade = grades[i][j];

return
lowGrade;

}

//
Поиск максимальной оценки

int
maximum(int grades[][exams], int pupilus, int tests)

{

int highGrade = 0;

for
(int i = 0; i<pupils; i++)

for (int j = 0; j< tests; j++)

if (grades[i][j]< lowGrade)

highGrade = grades[i][j]

returm
highGrade;

}

// определение средней оценки для каждого
студента

float
average(int setofGrades[], int tests)

{

int
total = 0;

for
(int i = 0; i< tests; i++)

total += setOfGrades[i];

return
(float) total/ tests;

}

//
Печать массива

void
printArray(int grades [] [exams], int pupils. int tests)

{

for
(int i = 0; i< pupils; i++)

{

printf(«n Marks of student %s», students[i]);

for (int j = 0; j< tests; j++)

printf(«%i «, grades[i][j]);

}

}

Внешняя структура for
начинается с установки i,
(
т.е. индекса строки) равным нулю, чтобы
элементы первой строки можно было
сравнивать с переменной lowGrade
в теле внутренней структуры for.
Внутренняя структура for
циклически обрабатывает пять оценок
каждой строки и сравнивает каждую оценку
с lowGrade. Если оценка
меньше, чем lowGrade,
lowGrade устанавливается
равной этой оценке. Затем внешняя
структура for
увеличивает индекс строки до значения
1. Элементы второй строки сравниваются
с переменной lowGrade.
Затем внешняя структура for
увеличивает индекс строки до значения
2, и так далее. Когда выполнение вложенной
структуры заканчивается, lowGrade
содержит минимальную оценку в двумерном
массиве. Функция максимум работает
аналогично.

Функция average принимает
два аргумента – одномерный массив
результатов экзаменов для одного
студента и количество результатов
экзаменов в массиве. При вызове average
первый аргумент – это
studentGrades[studentNumber],
который указывает, что в average
передается отдельная строка двумерного
массива studentGrades.
Например, аргумент studentGrades[1]
представляет собой четыре значения
(одномерный массив оценок), хранимый во
второй строке двумерного массива
studentGrades. Двумерный
массив можно рассматривать как массив
с элементами, представляющими собой
одномерные массивы. Функция average
подсчитывает сумму элементов массива,
делит ее на количество результатов
экзаменов и возвращает результат в
форме с плавающей запятой.

Типичные ошибки программирования

  1. Забывают присвоить начальные значения
    элементам массива, требующим такого
    присваивания.

  2. Задание в списке начальных значений
    большего числа значений, чем имеется
    элементов в массиве, является
    синтаксической ошибкой.

  3. Ссылка на элемент. находящийся вне
    границ массива.

  4. Неправильная ссылка на элемент двумерного
    массива a[x]
    [
    y] как a[x,y].
    На самом деле, a[x,y]
    воспринимается как a[y],
    потому что С оценивает выражение
    (содержащее операцию посдледования —
    запятую) x, y
    просто как y
    (последнее из разделенных запятыми
    выражений).

Контрольные вопросы

  1. Что такое двумерный массив?

  2. В чем принципиальное отличие двумерного
    массива от массива указателей?

  3. Укажите, верны ли следующие утверждения:

  • Массив может хранить много различных
    типов данных

  • Индексы массива обычно имеют тип float.

  • Если количество начальных значений вы
    списке инициализации меньше, чем
    количество элементов массива, оставшиеся
    элементы автоматически получают в
    качестве начальных значений последние
    значения из списка инициализации

  • Если список инициализации содержит
    начальных значений больше, чем элементов
    массива, то это – ошибка.

  • Отдельный элемент массива, который
    передается функции и модифицируется
    в этой функции, будет содержать
    модифицированное значение после
    завершения выполнения модифицируемой
    функции.

Создав столбцы, нужно создать еще и нужное количество строк у каждого из элементов DataGridView. Делается это аналогичным образом, вызывая метод Add коллекции Rows. Чуть по-другому задаются имена строк, — для этого используется специальный объект HeaderCell, имеющийся у каждой строки и задающий ячейку заголовка.

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

Рассмотрим теперь, как выглядит обработчик события «Click» следующей командной кнопки «Перенести данные в массив». Предполагается, что пользователь разумен и, прежде чем нажать эту кнопку, задает значения элементов перемножаемых матриц в соответствующих ячейках подготовленных таблиц первых двух элементов DataGridView. Обработчик события выполняет следующие задачи – в цикле читает элементы, записанные пользователем в таблицы DataGridView, проверяет их корректность и в случае успеха переписывает их в матрицы. Вот текст обработчика:

private void button2_Click(object sender, EventArgs e)

bool correct = true;

for (int i = 0; i < m; i++)

for (int j = 0; j < n; j++)

A[i, j] = Convert.ToDouble(elem);

catch (Exception any)

label8.Text = «Значение элемента» +

+ » не корректно. Повторите ввод!»;

for (int i = 0; i < n; i++)

for (int j = 0; j < p; j++)

B[i, j] = Convert.ToDouble(elem);

catch (Exception any)

label9.Text = «Значение элемента» +

+ » не корректно. Повторите ввод!»;

Form3 frm = new Form3();

Этот программный код нуждается в подробных комментариях:

  • Основная задача переноса данных из таблицы элемента DataGridView в соответствующий массив не вызывает проблем. Конструкция Rows[i].Cells[j] позволяет добраться до нужного элемента таблицы, после чего остается присвоить его значение элементу массива.
  • Как всегда при вводе основной проблемой является обеспечение корректности вводимых данных. Схема, рассматриваемая нами ранее, нуждается в корректировке. Дело в том, что ранее проверка корректности осуществлялась сразу же после ввода пользователем значения элемента. Теперь проверка корректности выполняется, после того как пользователь полностью заполнил таблицы, при этом некоторые элементы он мог задать некорректно. Просматривая таблицу, необходимо обнаружить некорректно заданные значения и предоставить возможность их исправления. В программе предлагаются два различных подхода к решению этой проблемы.
  • Первый подход демонстрируется на примере ввода элементов матрицы A. Как обычно, преобразование данных, введенных пользователем, в значение, допустимое для элементов матрицы А, помещается в охраняемый блок. Если данные некорректны и возникает исключительная ситуация, то она перехватывается универсальным обработчиком catch(Exception). Заметьте, в данном варианте нет цикла, работающего до тех пор, пока не будет введено корректное значение. Обработчик исключения просто прерывает работу по переносу данных, вызывая оператор return. Но предварительно он формирует информационное сообщение об ошибке и выводит его в форму. (Помните, специально для этих целей у формы были заготовлены две метки). В сообщении пользователю предлагается исправить некорректно заданный элемент и повторить ввод – повторно нажать командную кнопку «перенести данные в массив». Этот подход понятен и легко реализуем. Недостатком является его неэффективность, поскольку повторно будут переноситься в массив все элементы, в том числе и те, что были введены вполне корректно. У программиста такая ситуация может вызывать чувство неудовлетворенности своей работой.
  • На примере ввода элементов матрицы В продемонстрируем другой подход, когда исправляется только некорректно заданное значение. Прежде, чем читать дальше, попробуйте найти собственное решение этой задачи. Это оказывается не так просто, как может показаться с первого взгляда. Для организации диалога с пользователем пришлось организовать специальное диалоговое окно, представляющее обычную форму с двумя элементами управления – меткой для выдачи информационного сообщения и текстовым окном для ввода пользователем корректного значения. При обнаружении ошибки ввода открывается диалоговое окно, в которое пользователь вводит корректное значение элемента и закрывает окно диалога. Введенное пользователем значение переносится в нужную ячейку таблицы DataGridView, а оттуда в матрицу.
  • При проектировании диалогового окна значение свойства формы FormBorderStyle, установленное по умолчанию как «sizeable» следует заменить значением «FixedDialog», что влияет на внешний вид и поведение формы. Важно отметить, что форма, представляющее диалоговое окно, должна вызываться не методом Show, а методом ShowDialog. Иначе произойдет зацикливание, начнут порождаться десятки диалоговых окон, прежде чем успеете нажать спасительную в таких случаях комбинацию Ctrl+ Alt + Del.

Приведем снимки экранов, демонстрирующие ситуации, в которых пользователь ввел некорректные значения. На рис. 6 показано информационное сообщение, появляющееся при обнаружении некорректного ввода значений элементов матрицы А.

Рис. 6 Информационное сообщение о некорректных значенях матрицы А

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

На рис. 7 показана ситуация, когда некорректно заданное значение исправляется в открывшемся окне диалога.

Рис.7 Диалоговое окно для корректировки значений элементов матрицы В

Обработчик события «Click» командной кнопки «Умножить матрицы» выполняет ответственные задачи – реализует умножение матриц и отображает полученный результат в таблице соответствующего элемента DataGridView. Но оба эти действия выполняются естественным образом, не требуя кроме циклов никаких специальных средств и программистских ухищрений. Я приведу программный код без дополнительных комментариев:

private void button3_Click(object sender, EventArgs e)

void MultMatr(double[,] A, double[,] B, double[,] C)

int m = A.GetLength(0);

int n = A.GetLength(1);

int p = B.GetLength(1);

for(int i=0; i < m; i++)

for (int j = 0; j < p; j++)

for (int k = 0; k < n; k++)

for (int i = 0; i < m; i++)

for (int j = 0; j < p; j++)

Задачи (ввод, вывод и другие простые задачи с массивами)

2.1 Организуйте в консольном приложении ввод и вывод одномерного массива строкового типа.

2.2 Организуйте в Windows приложении ввод и вывод одномерного массива строкового типа.

2.3 Организуйте в консольном приложении ввод массива «Сотрудники», содержащего фамилии сотрудников. Введите массив «Заявка», элементы которого содержат фамилии сотрудников и, следовательно, должны содержаться в массиве сотрудников. Обеспечьте контроль корректности ввода данных.

2.4 Организуйте в Windows приложении ввод массива «Сотрудники», содержащего фамилии сотрудников. Введите массив «Заявка», элементы которого содержат фамилии сотрудников и, следовательно, должны содержаться в массиве сотрудников. Обеспечьте контроль корректности ввода данных.

2.5 Организуйте в Windows приложении ввод массива «Сотрудники», содержащего фамилии сотрудников. Создайте массив «Заявка», элементы которого должны содержаться в массиве сотрудников. Для создания массива «Заявка» постройте форму «Два списка», содержащую два элемента ListBox, источником данных для первого из них служит массив «Сотрудники». Пользователь переносит данные из первого списка во второй, формируя данные для массива «Заявка». После формирования данные переносятся в массив. Для построения формы используйте шаблон, описанный в лекции 24 учебника.

2.6 Организуйте в консольном приложении ввод и вывод двумерного массива строкового типа.

2.7 Организуйте в Windows приложении ввод и вывод двумерного массива строкового типа.

2.8 Организуйте в консольном приложении ввод массива «Сотрудники» из двух столбцов, содержащего фамилии и имена сотрудников. Введите массив «Заявка» той же структуры, элементы которого должны содержаться в массиве сотрудников. Обеспечьте контроль корректности ввода данных. Организуйте вывод обоих массивов.

2.9 Организуйте в Windows приложении ввод массива «Сотрудники» из двух столбцов, содержащего фамилии и имена сотрудников. Введите массив «Заявка» той же структуры, элементы которого должны содержаться в массиве сотрудников. Обеспечьте контроль корректности ввода данных. Организуйте вывод обоих массивов.

2.10 (*) Организуйте в консольном приложении ввод и вывод массива «Машины», содержащего 4 столбца: «Владелец», «Марка», «Номер», «Год Выпуска». При вводе данных обеспечьте их корректность. Поле «Владелец» должно быть строкой в формате «фамилия имя», где фамилия и имя должны начинаться с большой буквы и состоять из букв алфавита кириллицы, включая дефис. Номер машины должен соответствовать формату, принятому для номеров машин. При выводе сохраняйте структуру массива.

2.11 (*) Организуйте в Windows приложении ввод и вывод массива «Машины», содержащего 4 столбца: «Владелец», «Марка», «Номер», «Год Выпуска». При вводе данных обеспечьте их корректность. Поле «Владелец» должно быть строкой в формате «фамилия имя», где фамилия и имя должны начинаться с большой буквы и состоять из букв алфавита кириллицы, включая дефис. Номер машины должен соответствовать формату, принятому для номеров машин. При выводе сохраняйте структуру массива.

2.12 (*) В консольном приложении уже построен массив «Машины» (см. задача 3.9) . Построить массив «Цветные машины», в котором к столбцам массива «Машины» добавляется 5-й столбец «Цвет». Организуйте диалог с пользователем, выясняя цвет для каждой машины из массива «Машины».

2.13 (*) В Windows приложении уже построен массив «Машины» (см. задача 3.10) . Построить массив «Цветные машины», в котором к столбцам массива «Машины» добавляется 5-й столбец «Цвет». Организуйте диалог с пользователем, выясняя цвет для каждой машины из массива «Машины».

2.14 Организуйте в консольном приложении ввод и вывод одномерного массива арифметического типа (от byte до double).

2.15 Организуйте в Windows приложении ввод и вывод одномерного массива арифметического типа (от byte до double).

2.16 Организуйте в консольном приложении ввод массива «Сотрудники», содержащего фамилии сотрудников, и массива «Зарплата». Обеспечьте контроль корректности ввода данных о зарплате, проверяя диапазон возможных значений.

2.17 Организуйте в Windows приложении ввод массива «Сотрудники», содержащего фамилии сотрудников, и массива «Зарплата». Обеспечьте контроль корректности ввода данных о зарплате, проверяя диапазон возможных значений.

2.18 Организуйте в консольном приложении ввод и вывод матрицы — двумерного массива арифметического типа.

2.19 Организуйте в Windows приложении ввод и вывод матрицы — двумерного массива арифметического типа.

2.20 Организуйте в консольном приложении ввод массива декартовых координат n точек на плоскости. Вычислите массив полярных координат этих точек и организуйте вывод этого массива. Обеспечьте контроль вводимых значений.

2.21 Организуйте в Windows приложении ввод массива декартовых координат n точек на плоскости. Вычислите массив полярных координат этих точек и организуйте вывод этого массива. Обеспечьте контроль вводимых значений.

2.22 Организуйте в консольном приложении ввод массива полярных координат n точек на плоскости. Вычислите массив декартовых координат этих точек и организуйте вывод этого массива. Обеспечьте контроль вводимых значений.

2.23 Организуйте в Windows приложении ввод массива полярных координат n точек на плоскости. Вычислите массив декартовых координат этих точек и организуйте вывод этого массива. Обеспечьте контроль вводимых значений.

2.24 Организуйте в консольном приложении ввод массива декартовых координат n точек в трехмерном пространстве. Вычислите массив полярных координат этих точек и организуйте вывод этого массива. Обеспечьте контроль вводимых значений.

2.25 Организуйте в Windows приложении ввод массива декартовых координат n точек в трехмерном пространстве. Вычислите массив полярных координат этих точек и организуйте вывод этого массива. Обеспечьте контроль вводимых значений.

2.26 Организуйте в консольном приложении ввод и вывод массива декартовых координат n точек на плоскости. Вычислите массив, содержащий все комбинации из трех точек исходного массива такие, что точки могут рассматриваться как вершины некоторого треугольника на плоскости. Организуйте вывод этого массива.

2.27 Организуйте в Windows приложении ввод и вывод массива декартовых координат n точек на плоскости. Вычислите массив, содержащий все комбинации из трех точек исходного массива такие, что точки могут рассматриваться как вершины некоторого треугольника на плоскости. Организуйте вывод этого массива.

Массивы и классические алгоритмы математики

Полиномы

Полиномом n-й степени Pn(x) называют функцию:

Если рассматривать график этой функции на плоскости, то x и Pn(x) – это декартовы координаты точек графика функции. Значения ak (k из интервала [0,n]) называются коэффициентами полинома. Все они принадлежат одному типу и при программной работе с полиномами представляются одномерным массивом с n+1 элементами.

Если задан массив коэффициентов полинома A, то вычислить значение полинома в точке x не представляет особой сложности. Но ни один уважающий себя программист не позволит себе вычислять значение полинома, буквально пользуясь схемой (1), требующей n-1 операций возведения в степень, n операций умножения и n операций сложения. Прекрасный пример того, как можно упростить алгоритм, дает схема Горнера, вообще не требующая возведения в степень. В этой схеме полином Pn(x) представляют в виде:

Удобнее представлять схему Горнера в рекуррентной форме:

Вначале вычисляется значение полинома нулевой степени, состоящего из коэффициента при старшем члене исходного полинома. Затем рекуррентно повышается степень полинома, для чего достаточно умножить на x предыдущее значение и добавить новый коэффициент. В программе эта схема естественным образом реализуется обычным циклом, где на каждом шаге выполняется одно умножение и одно сложение.

Если Pn(x) – полином n-й степени с коэффициентами ai, Qn(x) – полином n-й степени с коэффициентами bi и Pn(x) = Qn(x), то из этого следует равенство соответствующих коэффициентов:

Многие задачи над полиномами связаны с определением их корней. Напомню, x0 является корнем полинома, если Pn(x0) = 0. У полинома n-й степени не более чем n действительных корней. Если n – нечетно, то полином имеет хотя бы один действительный корень. Все корни полинома принадлежат некоторому конечному интервалу [c, d]. Вне этого интервала поведение полинома определяется его старшим членом – anx n . Для полинома четной степени обе ветви уходят в +∞, если an>0 и в -∞, если an<0. Для полинома нечетной степени ветви полинома вне интервала [c, d] разнонаправлены. Если an>0, то правая ветвь уходит в +∞, а левая ветвь — в -∞. Если an<0, то левая ветвь уходит в +∞, а правая ветвь в -∞.

Когда по каким-либо физическим соображениям интервал [c, d] известен хотя бы приблизительно, то задача нахождения корней полинома облегчается, в противном случае она может быть довольно трудной, особенно для случая близко расположенных корней.

Исследование интервала

Рассмотрим один из простых алгоритмов, исследующих существует ли на заданном интервале [e, f] хотя бы один корень. Один корень заведомо существует, если полином на концах исследуемого интервала имеет разные знаки или один из концов интервала уже является корнем полинома. Это условие и будет характерным признаком поиска нужного интервала. Если исходный интервал [e, f] удовлетворяет характерному признаку, то задача решена и такой интервал найден. В противном случае в цикле по k вычислим h = L/2 k , где L – длина исходного интервала (L= f-e). Затем организуем внутренний цикл, в котором проверим характерный признак на всех интервалах длины h. Если интервал будет найден, то вычисления завершаются, в противном случае переходим к следующему шагу цикла по k, производя очередное дробление h. Завершение цикла по k означает, что если исследуемый интервал [e, f] и содержит корни, то это близкие пары корней, отстоящие друг от друга на расстояние, меньшее h – заключительной длины интервала по завершении цикла по k.

Приведу несколько практических рекомендаций, полезных при реализации этой схемы. Внутренний цикл следует организовать так, чтобы не повторять вычисление полинома в тех точках, в которых это вычисление проводилось на предыдущих шагах цикла. Это означает, что когда шаг h = L/2 k , то во внутреннем цикле достаточно вычислить значение полинома не более чем в 2 k-1 точках. Внешний цикл достаточно ограничить числом в интервале от 10 до 20, поскольку уже при k=10 величина исходного интервала L уменьшится более чем в 1000 раз, что вполне достаточно в большинстве практических ситуаций. Хотя следует помнить, что в ряде ситуаций практики приходится иметь дело с резко осциллирующими функциями, где близкие корни являются правилом, а не исключением.

Алгоритмы нахождения корня полинома

Рассмотрим несколько простых схем нахождения корня полинома. Заметим, что все эти схемы применимы к нахождению корней любых функций, а не только полиномов. Как всегда в программировании речь идет не столько о точном нахождении корня, сколько о нахождении корня с заданной точностью ε. Так что, если x0 – это точное значение корня, то нам достаточно найти x * — такое что |x0 – x * | < ε.

Схема дихотомии отрезка (деление пополам):

Эта схема прекрасно подходит, когда предварительно проведено исследование интервала существования корня и найден такой интервал [e, f], на концах которого полином принимает разные знаки, так что существует корень внутри интервала. Если исходный интервал мал и сравним с заданной точностью ε, то в качестве корня можно выбрать середину этого интервала. Если же исходный интервал больше, чем значение ε, то интервал можно разделить пополам и из двух половинок выбрать ту, для которой выполняется характерный признак существования корня. Понятно, что если признак выполняется для всего интервала, то он обязательно будет выполняться для одной из его половинок. Деление отрезка пополам приводит к быстрому уменьшению длины отрезка, так что 10 — 20 делений достаточно, чтобы найти интервал длины, меньшей ε, а следовательно и корень полинома с заданной точностью.

Метод простой итерации:

Формально метод применим и в том случае, когда неизвестен интервал, в котором существует корень функции. Пусть x0 – некоторое заданное начальное приближение к корню полинома. Тогда можно построить следующий итерационный процесс:

Метод записан для произвольной функции f, в нашем случае функция f задана полиномом. Итерационный процесс следует прекращать либо по достижении заданной точности, либо по достижении максимально допустимого числа итераций N. Заметьте, следует задавать оба условия, поскольку сходимость процесса простой итерации к корню, даже если он существует, не гарантируется. Во многом все зависит от удачного выбора начального приближения.

Метод простой итерации обладает полезным свойством «неподвижной точки». Корни функции являются «неподвижными точками» метода. Нетрудно заметить, что если на некотором шаге xk-1 сошлось к корню полинома x * , то xkи все последующие итерации будут равны x * , так что итерационный процесс из найденного корня не уходит.

Метод Ньютона

Этот метод чуть более сложен в реализации, но обладает лучшей сходимостью в сравнении с методом простой итерации, хотя и здесь сходимость во многом зависит от удачного выбора начального приближения x0. Для произвольной функции f итерационный процесс метода Ньютона выглядит так:

Понятно, что производной от полинома n-й степени будет полином степени n-1, коэффициенты которого легко вычисляются по n и коэффициентам исходного полинома. Все, что было сказано о методе простой итерации – завершение процесса, обладание неподвижной точкой, справедливо и для метода Ньютона.

Понижение степени полинома

Если для полинома P(x) n-й степени найден корень x1, то можно понизить степень полинома, построив полином P1(x) степени n-1, у которого все корни совпадают с корнями полинома P(x) за исключением того, что у него нет корня x1.

Запишем соотношение, связывающее полиномы:

Учитывая соотношение (3) о равенстве двух полиномов одной степени, можно выписать n+1 соотношение, связывающее коэффициенты этих полиномов. Эти соотношения нетрудно разрешить относительно неизвестных коэффициентов bk. В результате получим:

Заметьте, неизвестных всего n, а уравнений можно построить – n+1. Но последнее уравнение (a0 + b0x1= 0) является следствием предыдущих и используется для контроля вычислений.

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

Нахождение коэффициентов полинома по его корням

До сих пор рассматривалась задача отыскания корней полинома с заданными коэффициентами. Иногда приходится решать обратную задачу – найти коэффициенты полинома, если известны его корни – x1, x2, … xn. Полиномов с одинаковыми корнями существует бесчисленное множество. Однако среди них существует единственный полином с коэффициентом an, равным единице. Этот полином называется приведенным, его то и будем строить. Все остальные полиномы получаются из приведенного полинома умножением всех коэффициентов на произвольное число an, от которого требуется лишь, чтобы оно не было равно нулю. Поэтому для однозначного решения задачи требуется задать n корней и коэффициент при старшем члене полинома. Тогда можно записать следующее равенство:

Для нахождения коэффициентов полинома Pn(x) воспользуемся, как обычно соотношением (3). Но применить его напрямую сложно. Поэтому воспользуемся процессом, обратным к процессу понижения степени. Построим вначале P1(x) — полином первой степени, у которого x1 является единственным корнем. Затем повысим степень и построим полином второй степени – P2(x), у которого появляется еще один корень – x2. Продолжая этот процесс, дойдем до искомого полинома Pn(x). При вычислении коэффициентов нового полинома будем использовать коэффициенты уже посчитанного полинома на единицу меньшей степени. Получающееся в результате соотношения близки к тому, что приведены для случая понижения степени полинома.

Коэффициенты полинома первой степени P1(x) выписываются явно:

Коэффициенты полинома k-й степени вычисляются через коэффициенты полинома степени k-1:

Переходя к коэффициентам, получим следующие уравнения:

В соотношении (5) через a’ обозначены коэффициенты полинома степени k-1. На самом деле схема безопасна и позволяет считать коэффициенты на том же месте, не требуя дополнительной памяти. Приведу алгоритм вычисления коэффициентов полинома по его корням в виде схемы, приближенной к языку C#.

an – коэффициент при старшем члене полинома Pn(x);

n – степень полинома;

x – массив корней полинома (x[0], x[1], …x[n]);

Массив a – массив коэффициентов полинома (a[0], a[1], …a[n]).

//Вычисляем коэффициенты полинома первой степени

//цикл по числу полиномов

//Вычисляем коэффициенты полинома степени k

//Вначале старший коэффициент

//затем остальные коэффициенты, кроме последнего

//теперь младший коэффициент

//Последний этап – умножение коэффициентов на an

Полином Лагранжа

Пусть на плоскости заданы n+1 точка: R0(x0, y0), R1(x1, y1), R2(x2, y2),…, Rn(xn, yn). Полиномом Лагранжа PL(x) называется полином n-й степени, проходящий через все точки Rk. Если точки Rk не образуют возвратов, то такой полином существует и является единственным. Под возвратом понимается ситуация, когда существуют две точки Ri и Rj такие, что xi = xj.

Как построить такой полином? Лагранж предложил следующий алгоритм. Полином PL(x) строится как сумма n+1 полиномов n-й степени:

Каждый из полиномов Pk(x), входящих в сумму, строится следующим образом. Корнями полинома Pk(x) являются все точки Ri за исключением точки Rk. Единственность Pk(x) обеспечивается за счет того, что коэффициент при старшем члене an подбирается так, чтобы полином проходил через точку Rk. В записи Лагранжа полином Pk(x) выглядит следующим образом:

В записи (6) в числителе находится приведенный полином, построенный по корням, а yk, деленное на знаменатель в формуле (6), задает an – старший коэффициент полинома.

Условия, накладываемые на полиномы Pk(x), обеспечивают выполнение требований к полиному Лагранжа – сумма полиномов Pk(x) будет полиномом, проходящим через все заданные точки.

Поскольку алгоритм построения приведенного полинома по его корням уже разобран, то схема построения полинома Лагранжа можно выглядеть так:

//Полином Лагранжа определяется как сумма из n+1

//полиномов Pk, для которых известны корни.

//Задание корней для полинома Pk

for(int i =0; i<k; i++)

for(int i =k+1; i<=n; i++)

//Вычисление коэффициентов приведенного полинома по его корням

//вычисление An — старшего коэффициента полинома.

An = Y[k] / HornerP(coefk,X[k]);

//Добавление очередного полинома Pk к PL — сумме полиномов

for(int i =0; i<=n; i++)

X и Y – массивы, задающие декартовы координаты точек, через которые проходит полином Лагранжа,

n – степень полинома,

roots – массив корней приведенного полинома Pk,

coefk — массив его коэффициентов,

An – старший коэффициент полинома, вычисляемый из условия прохождения полинома Pk через точку с координатами X[k], Y[k],

coefL — массив коэффициентов полинома Лагранжа,

HornerP – метод, вычисляющий по схеме Горнера значение полинома по его коэффициентам и значению координаты x,

CalcCoefFromRoots – метод, вычисляющий массив коэффициентов приведенного полинома по его корням.

Сложение и умножение полиномов

При рассмотрении полинома Лагранжа возникала необходимость в нахождении суммы полиномов одинаковой степени, заданных своими коэффициентами. Пусть P(x) и Q(x) – полиномы степени n и m соответственно, заданные своими коэффициентами, и пусть для определенности n >= m. Тогда суммой полиномов называется полином R(x) степени n, коэффициенты которого вычисляются следующим образом:

Пусть полиномы P(x) и Q(x) заданы, подобно полиному Лагранжа, точками, через которые они проходят:

Тогда нетрудно найти подобное представление и для полинома R(x), представляющего сумму полиномов:

В этом случае понадобится вычислить значения полинома Q(x) в n точках.

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

Рассмотрим теперь операцию умножения полиномов:

Нетрудно понять, что полином S(x) является полиномом степени n+m и имеет n+m+1 коэффициент. Как вычисляется произведение, если заданы полиномы сомножители P(x) и Q(x)? Замечу, что произведение полиномов часто встречается на практике и имеет специальное имя – свертка полиномов.

В отличие от сложения полиномов проще всего найти свертку, если заданы корни обоих полиномов. В этом случае никаких вычислений не требуется, поскольку n корней P(x) и m корней Q(x) будут n+m корнями S(x). Если у полиномов P(x) и Q(x) есть совпадающие корни, то у S(x) появятся кратные корни.

Если исходные полиномы P(x) и Q(x) заданы своими точками, то нетрудно получить набор точек для полинома произведения. Схема во многом похожа на ту, что имеет место при сложении полиномов, заданных точками:

Для получения множества точек, задающих представление полинома S(x), приходится вычислять значение полинома Q(x) в n точках и значение полинома P(x) в m точках, а затем выполнять соответствующее умножение значений двух полиномов.

Если исходные полиномы P(x) и Q(x) заданы своими коэффициентами, то имеем:

Каждый член первой суммы приходится умножать на все члены второй суммы и затем приводить подобные члены при одинаковых степенях x. Нетрудно заметить, что в результате коэффициенты полинома S(x) определяются следующими соотношениями:

Суммирование идет по всем наборам k и r, дающим в сумме значение i. Понятно, что для крайних значений (i=0 и i=n+m) сумма состоит из одного члена, поскольку подобные члены для x в нулевой степени и степени n+m отсутствуют. Число членов суммирования увеличивается при приближении к середине интервала [0, n+m].

Итоги

Подводя некоторые итоги, отметим, что полином можно задать тремя разными способами – его коэффициентами, корнями, точками, через которые проходит полином. Если заданы коэффициенты полинома, то за время, пропорциональное n 2 , (T(n) = O(n 2 )) можно вычислить значения полинома в n+1 точках. Для вычисления значения полинома в одной точке применяется схема Горнера, выполняющая вычисления за линейное (пропорциональное n) время. Существует и обратное преобразование. Если заданы n+1 точки, через которые проходит полином, то алгоритм Лагранжа позволяет за время O(n 2 ) вычислить коэффициенты полинома. Задача получения коэффициентов полинома по точкам называется задачей интерполяции, а полином Лагранжа называется интерполяционным полиномом.

Если заданы корни, то можно получить два других представления. Рассмотренный нами алгоритм позволяет по корням полинома за время O(n 2 ) вычислить коэффициенты полинома. Алгоритм использует итеративную схему из n шагов, где на каждом шаге выполняется операция повышения степени, выполняемая за линейное время. Поскольку корни являются частным случаем задания множества точек, через которые проходит полином, то задание корней автоматически задает и представление полинома набором точек. Обратная задача – получение корней по коэффициентам или заданным точкам – так просто не решается. Точное ее решение существует для полиномов второй и третьей степени, но не в общем случае. Для нахождения корней приходится использовать приближенные итеративные методы, например метод простой итерации или Ньютона.

Задание полинома его корнями является наиболее информативным. Если известны корни, то без труда выполняется свертка полиномов. Вычисление значения полинома в заданной точке, выполняется за n умножений, не требуя применения схемы Горнера. Несколько сложнее выполняется операция сложения полиномов. К сожалению, на практике редко встречается ситуация, когда известны корни полинома, но такое бывает – алгоритм Лагранжа тому пример.

Когда полиномы заданы своими коэффициентами, то вычисление значения полинома в заданной точке выполняется по схеме Горнера за линейное время. Сложение полиномов также является легкой операцией и выполняется за линейное время. Свертку полиномов в этом случае выполнить сложнее. Рассмотренный нами алгоритм требует уже квадратичного времени.

На практике полиномы чаще всего появляются при задании множества точек. Ситуация обычна такова. В результате экспериментов измеряются значения некоторой функции в ряде точек. Требуется предсказать, каково будет значение этой функции в других точках, в которых измерения не проводились. Если из теоретических соображений не известен вид функции, то чаще всего ее задают в виде полинома, проходящего через точки, полученные экспериментальным путем. В этой постановке задачу построения полинома и вычисления значений полинома в точках, не подлежащих измерениям, называют задачей интерполяции, а полином Лагранжа называют интерполяционным полиномом. Задача интерполяции корректно решается, когда новые точки, в которых проводятся вычисления, лежат внутри интервала, заданного измеренными точками. Полиномы плохо приспособлены для решения задачи экстраполяции, когда точки лежат вне интервала измерений, из-за быстрого роста значения полинома вне этого интервала. Чем выше степень полинома, тем быстрее его рост.

Множество точек, через которые проходит полином, обычно несет дополнительную информацию. Некоторые точки, например, могут быть корнями полинома, или задавать интервалы, внутри которых находятся корни.

Одно замечание к задаче свертки полиномов. Приведенный алгоритм решения этой задачи для полиномов, заданных своими коэффициентами, требует квадратичного времени. Ввиду практической важности этой задачи много внимания уделялось поиску наиболее эффективного по временной сложности алгоритма. Существуют алгоритмы, решающие эту задачу за время O(n*log(n)). Эти алгоритмы используют технику быстрого преобразования Фурье и обратного к нему. Они сложнее в реализации и требуют работы с комплексными числами или выполнения операций модульной арифметики. Здесь они только упоминаются и детально не рассматриваются.

Задачи

В задачах этого раздела уже не говорится о том, какого типа проект следует строить – консольный или Windows. Предполагается, что обычной практикой является построение Windows приложений.

2.28 Полином P(x) задан своими коэффициентами. Дан массив координат X. Вычислить, используя схему Горнера, массив значений полинома в точках xi.

2.29 Полином P(x) задан своими корнями и старшим коэффициентом an. Дан массив координат X. Вычислить массив значений полинома в точках xi.

2.30 (задача интерполяции) Полином P(x) задан координатами n+1 точек, через которые он проходит. Дан массив координат X. Вычислить массив значений полинома в точках xi.

2.31 Полином P(x) задан своими корнями и старшим коэффициентом an. Вычислить коэффициенты полинома.

2.32 (задача построения интерполяционного полинома Лагранжа) Полином P(x) задан координатами n+1 точек, через которые он проходит. Вычислить коэффициенты полинома.

2.33 Полином P(x) задан своими коэффициентами. Дан массив чисел X. Построить полином Q(X), имеющий своими корнями числа из массива X и корни полинома P(x).

2.34 Полином P(x) задан своими коэффициентами. Для полинома известны два его корня – x0 и xn. Построить полином Q(x), корни которого совпадают с корнями полинома P(x) за исключением корней x0 и xn.

2.35 Полиномы P(x) и Q(x) заданы своими корнями и старшими коэффициентами. Вычислить коэффициенты суммы полиномов P(x) и Q(x).

2.36 Полиномы P(x) и Q(x) заданы своими корнями и старшими коэффициентами. Вычислить коэффициенты произведения полиномов P(x) и Q(x).

2.37 Полиномы P(x) и Q(x) заданы своими коэффициентами. Вычислить коэффициенты суммы полиномов P(x) и Q(x).

2.38 Полиномы P(x) и Q(x) заданы своими коэффициентами. Вычислить коэффициенты произведения полиномов P(x) и Q(x).

2.39 Полиномы P(x) и Q(x) заданы точками, через которые они проходят. Вычислить коэффициенты суммы полиномов P(x) и Q(x).

2.40 Полиномы P(x) и Q(x) заданы точками, через которые они проходят. Вычислить коэффициенты произведения полиномов P(x) и Q(x).

2.41 Полином P(x) задан своими коэффициентами. Определить интервал, если он существует, на котором полином имеет хотя бы один корень.

2.42 Полином P(x) задан точками, через которые он проходит. Определить интервал, если он существует, на котором полином имеет хотя бы один корень.

2.43 Для полинома P(x), заданного своими коэффициентами, известен интервал, на котором полином имеет хотя бы один корень. Найти корень с заданной точностью, используя схему дихотомии.

2.44 Построить интерфейс пользователя, позволяющий ему находить корни полинома. В основу поиска положить схему исследования интервала и дихотомии.

2.45 Построить интерфейс пользователя, позволяющий ему находить корни полинома. В основу поиска положить метод простой итерации.

2.46 Построить интерфейс пользователя, позволяющий ему находить корни полинома. В основу поиска положить метод Ньютона.

2.47 Построить проект, включающий построение класса Polinom и интерфейс пользователя. Методы класса должны реализовать все алгоритмы, рассмотренные в этом разделе. Интерфейс пользователя должен позволять пользователю решать основные задачи, возникающие при работе с полиномами.

Алгоритмы линейной алгебры

Матрицей называется набор чисел, состоящий из m строк и n столбцов. Для программиста матрица – это двумерный массив. Матрица называется квадратной, если m = n и прямоугольной в противном случае. Числа m и n определяют размерность матрицы. Над прямоугольными матрицами определены операции транспонирования, сложения, умножения.

Пусть A – матрица размерности m*n (из m строк и n столбцов) с элементами ai,j. Транспонированной матрицей B = A T называют матрицу размерности n*m, элементы которой bi,j = aj,i. В транспонированной матрице строки исходной матрицы становятся столбцами.

Операция сложения определена над прямоугольными матрицами одинаковой размерности. Пусть A, B, C – прямоугольные матрицы размерности m*n. Тогда сумма матриц определяется естественным образом:

Операция умножения определена над прямоугольными матрицами, у которых число столбцов первого сомножителя равно числу строк второго сомножителя. Матрица произведения имеет число строк, равное числу строк первого сомножителя, и число столбцов, равное числу столбцов второго сомножителя. Пусть A – матрица размерности m*p, B – размерности p*n, тогда матрица C= A*B имеет размерность m*n. Элементы матрицы произведения определяются как сумма попарных произведений элементов строки первого сомножителя на элементы столбца второго сомножителя.

Умножение всегда определено для прямой и транспонированной матрицы. Если A – прямоугольная матрица размерности m*n, то всегда определена квадратная матрица B размерности m*m

B = A*A T = B T = (A*A T ) T = (A T ) T *A T =A*A T

Результатом такого произведения является симметричная матрица. Квадратная матрица называется симметричной, если ai,j = aj,i для всех i и j, или, что тоже, если A = A T . Операции транспонирования, сложения и умножения обладают следующими свойствами:

(A T ) T = A; (A+B) T = A T + B T ; (A*B) T = B T * A T

Квадратные матрицы

Квадратная матрица называется диагональной, если все элементы, кроме диагональных, равны нулю, то есть ai,j = 0 при i /=j.

Квадратная матрица называется единичной, если все элементы, кроме диагональных, равны нулю, а диагональные элементы равны единице, то есть ai,j = 0 при i /=j и ai,j = 1 при i = j. Единичная матрица обозначается обычно буквой E, и она играет роль единицы при умножении матриц, поскольку для любой квадратной матрицы A и единичной матрицы E той же размерности имеют место соотношения:

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

Функция, задающая определитель, обладает рядом важных свойств:

  • Определитель диагональной матрицы равен произведению диагональных элементов. Отсюда следует, что определитель матрицы E равен 1;
  • Определитель матрицы не меняется при выполнении над матрицей элементарных преобразований. Под элементарной операцией (преобразованием) понимается прибавление к любой строке матрицы линейной комбинации других ее строк. В частности, если к строке матрицы с номером j прибавить строку с номером k (k /= j), умноженную на некоторое число, то определитель матрицы не изменится;
  • Если все элементы одной строки матрицы умножить на некоторое число q, то определитель матрицы изменится в q раз (умножается на q);
  • Если переставить местами строки j и k, то модуль определителя не изменится, но изменится знак, если разность |k-j| является нечетным числом;
  • Определитель произведения матриц равен произведению определителей:
    D(A*B) = D(A)*D(B)

Не приводя общего формального определения, рассмотрим ниже алгоритм вычисления определителя матрицы, основанный на его свойствах.

Если определитель квадратной матрицы A не равен нулю, то существует обратная матрица, обозначаемая как A -1 . Прямая и обратная матрицы связаны соотношением:

Операции транспонирования, умножения и обращения матриц связаны соотношениями:

(A T ) -1 = (A -1 ) T ; (A*B) -1 = B -1 *A -1

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

Иногда полезно рассматривать матрицу, состоящую не из элементов, а из клеток, каждая из которых является матрицей. Все определения операций над матрицами, элементы которых являются числами, переносятся на матрицы, элементы которых являются клетками. Такое представление особенно полезно для разреженных матриц, где большинство элементов являются нулями. Тогда можно представить такую матрицу, как клеточную матрицу, многие клетки которой равны нулю. Используя знание структуры подобных матриц можно в результате существенно сократить объем вычислений. Рассмотрим простой пример умножения двух матриц размерности 100*100, каждая из которых задана в виде четырех клеток:

В круглых скобках для клеток заданы их размерности. Пусть теперь некоторые клетки нулевые, например, таковыми являются клетки D, F и G. Тогда матрица M2 имеет вид:

Для вычисления матрицы M2 необходимо будет найти произведение трех пар матриц, но значительно меньших размеров, чем исходные матрицы. В целом объем вычислений сократится более чем в три раза.

Иногда приходится иметь дело с треугольными матрицами, у которых все элементы выше или ниже диагонали равны нулю. Квадратную матрицу будем называть нижнетреугольной, если все элементы выше главной диагонали равны нулю, верхнетреугольной, если равны нулю все элементы ниже главной диагонали.

Системы линейных уравнений

Рассмотрим систему из n линейных уравнений с n неизвестными:

В матричном виде эта система записывается намного элегантнее:

Здесь вектор неизвестных x рассматривается как столбец – прямоугольная матрица размерности n*1. Аналогичный вид имеет вектор правых частей b системы уравнений. В матричном виде условие существования решения системы линейных уравнений (8) и нахождение самого решения формулируется совсем просто. Для существования решения необходимо и достаточно, чтобы определитель матрицы A был отличен от нуля. Тогда у матрицы A существует обратная матрица A -1 . Для нахождения решения системы умножим обе части уравнения (9) на A -1 . Тогда получим:

A -1 *(A*x) = A -1 *b → (A -1 *A)*x = A -1 *b → (E)*x = A -1 *b → x = A -1 *b (10)

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

Если нужно решить m систем линейных уравнений с одной и той же матрицей A, но с разными правыми частями, то обратную матрицу достаточно вычислить один раз. В матричном виде решение m систем линейных уравнений

Здесь B – прямоугольная матрица размерности n*m, каждый столбец которой представляет вектор правых частей одной системы уравнений. Соответствующий столбец матрицы X дает решение этой системы. Что произойдет, если в качестве матрицы B рассмотреть единичную матрицу? Очевидно, что тогда матрица X будет представлять собой обратную матрицу A -1 . Несмотря на кажущуюся очевидность соотношения A -1 = A -1 *E, в нем есть определенный смысл, который постараюсь сейчас прояснить. Три задачи – вычисление определителя, решение системы линейных уравнений, нахождение обратной матрицы – имеют одинаковую вычислительную сложность и требуют, если не применять специальные алгоритмы, выполнения порядка n 3 операций умножения и сложения. Если посмотреть на соотношение (10), то кажется, что решить систему уравнений несколько сложнее, чем вычислить обратную матрицу, поскольку нужно вначале найти обратную матрицу, а затем умножить ее на вектор правых частей b. Однако реальный алгоритм, рассматриваемый ниже, находящий решение системы, вычислительно проще, чем тот же алгоритм, находящий обратную матрицу. Для такого алгоритма найти обратную матрицу это все равно, что решить n систем линейных уравнений с одной и той же матрицей A в левой части, используя матрицу E в качестве правых частей.

Алгоритм Гаусса

Рассмотрим сейчас алгоритм Гаусса, позволяющий найти решение всех интересующих нас задач – вычислить определитель матрицы, решить m систем линейных уравнений, найти обратную матрицу. Построим вначале расширенную матрицу AB, состоящую из двух клеток:

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

После того, как построена расширенная матрица, вся специфика конкретной задачи теряется, — над расширенной матрицей выполняются одни и те же действия с параллельным вычислением определителя матрицы A. В чем суть этих действий? Над матрицей AB последовательно выполняются элементарные преобразования – деление элементов строки на число, что изменяет величину определителя, и вычитание из одной строки матрицы другой строки, умноженной на некоторое число. Цель наших действий состоит в том, чтобы в расширенной матрице AB клетку A преобразовать в единичную матрицу E. Поскольку каждое элементарное действие можно рассматривать, как умножение слева на некоторую матрицу, то совокупность преобразований, переводящая A в E, эквивалентна умножению слева на матрицу A -1 . Но это означает также, что эти преобразования переводят клетку B в матрицу A -1 *B, что и дает решение исходных задач. Поскольку в результате преобразования A переходит в единичную матрицу, определитель которой известен и равен 1, а для каждого преобразования известно как меняется величина определителя, то параллельно вычисляется и величина определителя исходной матрицы A.

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

Матрица, задающая элементарную операцию, отличается от единичной матрицы тем, что у нее в первой строке на втором месте стоит число q, а не ноль. Если бы к первой строке прибавлялась не вторая строка, а строка с номером j, то число q стояло бы не на втором месте, а в позиции j. Если строка j прибавляется не к первой строке, а к строке с номером i, то число q появлялось бы в i-ой строке матрицы.

Тест по основам алгоритмизации и программированию «Элементы языка C++» (68 ввопросов)

Обращаем Ваше внимание, что в соответствии с Федеральным законом N 273-ФЗ «Об образовании в Российской Федерации» в организациях, осуществляющих образовательную деятельность, организовывается обучение и воспитание обучающихся с ОВЗ как совместно с другими обучающимися, так и в отдельных классах или группах.

1. Для объявления размера массива должна использоваться …, потому что она делает программу более масштабируемой

c) именованная константа

2. Какое из нижеследующих утверждений ложное.

a) Тело каждой функции ограничивается левой и правой фигурными скобками ( ).

b) Программа на C++, которая выводит три строки, содержит три оператора cout.

c) Программа на C++, которая выводит три строки, содержит один оператор cout.

d) Все высказывания истинные

3. Целое, которое может быть присвоено указателю, является

d) все перечисленное

4. К чему применяется операция инкримента?

5. Чему будет равна переменная a, после выполнения этого кода int a; for(a = 0; a < 10; a++) ?

6. Результат выполнения следующего фрагмента кода: cout << 22 / 5 * 3;

7. В какой из следующих записей используется операция разименования?

8. Число, используемое для обращения к отдельному элементу массива называется …

9. какое из нижеследующих утверждений ложное.

a) Операция взятия по модулю (%) может применяться только к целым числам.

b) Все арифметические операции *, /, %, + и – имеют одинаковый уровень приоритета.

c) Пустые скобки, следующие за именем функции в прототипе, указывают, что функции для выполнения ее задачи не требуется никаких параметров.

d) Все высказывания истинные

10. Какая из операций не относится к операции сравнения?

11. В языке Си++ литерал – это:

a) переменная зарезервированного типа

b) неизменяемый объект языка

12. Какими знаками заканчивается большинство строк кода в Си++?

c) ; (точка с запятой)

a) Массив — это упорядоченные в памяти элементы одного и того же типа, имеющие общий адрес. Доступ к отдельным элементам массива осуществляется по адресу и индексу

b) Массив — это упорядоченные в памяти элементы одного и того же типа, имеющие имя. Доступ к отдельным элементам массива осуществляется по имени массива и адресу

c) Массив — это упорядоченные в памяти элементы одного и того же типа, имеющие имя. Доступ к отдельным элементам массива осуществляется по имени массива и индексу

14. Элементы массива связаны тем, что они имеют одни и те же …

15. какое из нижеследующих утверждений ложное

a) Комментарии при выполнении программы вызывают печать компьютером на экране текста после символов //.

b) Если вывод осуществляется в cout, то n вызывает перемещение курсора к началу следующей строки на экране.

c) Все переменные должны быть объявлены до того, как они используются.

d) Все высказывания истинные

16. Что такое идентификаторы в языке Си++ ?

a) это последовательность знаков, начинающаяся с буквы или знака подчеркивания

b) это последовательность знаков

c) это последовательность знаков, начинающаяся с буквы

d) это последовательность знаков, начинающаяся со знака подчеркивания

17. В языке Си++ указатель – это:

a) специальный значок, показывающий, что это динамическая переменная

b) символическое представление адреса ячейки памяти

c) символ, указывающий на что-либо

18. Укажите корректное определение строковой переменной

b) string[20] mystr;

c) string mystr[20];

19. Какой из перечисленных типов данных не является типом данных в С++?

20. Укажите правильное объявление массива!

a) array an array[10];

b) int anarray[10];

21. Какой из ниже перечисленных вариантов ответа, показывает правильно записанный оператор выбора if ?

b) условное выражение if

c) if условное выражение

d) if ( условное выражение )

22. Выполнение каждой программы на C++ начинается с функции…

23. какое из нижеследующих утверждений истинное

a) Выражение, содержащее операцию ||, истинно, если истинны оба операнда этой операции.

b) Массив может хранить много различный типов данных.

c) Операция взятия адреса может быть применима только к константам, к выражениям, не дающим в качестве результата ссылки, и к переменным, объявленным с классом памяти register.

d) Все высказывания ложные

24. В результате успешной компиляции текста программы на C++ с каким расширением будет получен файл?

25. Оператор while соответствует оператору for:

a) for ( ; условие ; )
оператор

b) for ( условие; ; )
оператор

c) for ( ; ; условие)
оператор

26. В приведённом коде сделайте так, чтобы код напечатал 20 звёздочек — *.

27. Какая из следующих функций считывает 100 символов из входного потока в строку x?

a) cin.getline(100, x);

b) cin.getline(x, 100);

d) readline(x, 100);

28. Ввод данных в C++

a) cin » <выражение1> » <выражение2>…;

b) cin » <выражение1>,<выражение2>,…;

c) cin » <выражение1> » <выражение2> » endl »…;

29. Оператор … используется для принятия решений

30. какое из нижеследующих утверждений истинное

a) Типы аргументов в вызове функции должны быть согласованы с типами соответствующих параметров в списке параметров прототипа функции.

b) В операторе выбора switch должна быть метка default.

c) В операторе выбора switch требуется оператор break.

d) Все высказывания истинные

31. Указатель – это переменная, которая содержит в качестве своего значения … другой переменной

32. Комментарии заключаются в скобки:

33. Какую функцию должны содержать все программы на С++?

34. Оператор if else позволяет определить действие .

a) только для ложного условия

b) только для истинного условия

c) для истинного и ложного условий

35. В каком из вариантов ответов объявлен двумерный массив?

a) int array[20, 20];

b) int anarray[20][20];

d) array anarray[20][20]

36. Списки и таблицы значений хранятся в …

d) стандартной библиотеке

37. Какое из нижеследующих утверждений ложно

a) Указатели разных типов нельзя присваивать друг другу без операции приведения типа.

b) Выражение (х > у && а < b) истинно, если х > у или а < b.

c) Все высказывания ложные.

d) Индексы массива могут иметь тип float

38. Процесс определения значения ключа, содержащегося в массиве, называется …

39. Базовый символьный тип это…

40. Какой из следующих операторов — оператор сравнения двух переменных?

41. Какое значение будет содержать переменная х?

42. Какой порядковый номер последнего элемента массива, размер массива 19?

d) порядковый номер определяется программистом

43. Повторение набора инструкций заданное число раз называется … повторений

a) управляемым счетчиком

c) неуправляемым счетчиком

44. какое из нижеследующих утверждений ложное.

a) Всем переменным, когда они объявляются, должен быть присвоен тип.

b) C++ рассматривает переменные number и Number как одинаковые.

c) Объявления в теле функции C++ могут появляться почти везде.

d) Все высказывания истинные

45. В идентификаторах можно использовать

a) заглавные и строчные латинские буквы, цифры и знак подчеркивания

b) заглавные и строчные латинские буквы, цифры и знак подчеркивания

c) заглавные и строчные латинские буквы

d) заглавные и строчные латинские буквы, цифры

e) заглавные и строчные латинские буквы, знак подчеркивания

46. Какой операции нет в C++?

47. До каких пор будут выполняться операторы в теле цикла while (x < 100)?

a) Пока х больше ста

b) Пока х строго меньше ста

c) Пока х меньше или равен стам

d) Пока х равен стам

48. Какое из следующих значений эквивалентно зарезервированному слову true?

Все варианты ответов

49. Словосочетание «Hello world!» может быть сохранено в символьном массиве размером n элементов. Укажите чему равно n?

50. Каждый оператор заканчивается…

c) точкой с запятой

d) управляющей последовательностью

51. какое из нижеследующих утверждений истинное.

a) Если количество начальных значений в списке инициализации меньше, чем количество элементов массива, оставшиеся элементы автоматически получают в качестве начальных значений последние значения из списка инициализации.

b) Если список инициализации содержит начальных значений больше, чем элементов массива, то это – ошибка.

c) Отдельный элемент массива нельзя изменить во время выполнения программы.

d) Все высказывания ложные

52. Для инициализации указателя можно использовать

d) все перечисленное

53. Из чего состоит оператор объявления имени?

a) из названия типа и объявляемого имени

b) из названия типа

c) из объявляемого имени

54. Каков результат работы следующего франмента кода?

case 1: cout << » Один «;

case 0: cout << » Нуль «;

case 2: cout << «Привет мир» ;>

b) НульПривет мир

55. Укажите правильное приведение типа данных!

56. Оператор выбора … используется для выполнения одного действия, если его условие истинно, и другого действия, если условие ложно

57. какое из нижеследующих утверждений истинное

a) В соответствии с соглашением, имена функций начинаются с прописной буквы, и все последующие буквы в имени также должны быть прописные.

b) Переменные, объявленные в теле некоторой функции можно использовать в другой функции.

c) Для исполнения программы можно использовать любой файл исходного кода, содержащий int main().

d) Указатель, объявленный как void, может называться с цифры.

58. Процесс упорядоченного размещения элементов в массиве называется …

59. К каким числам применима операция %?

b) к вещественным

c) и к целым и к вещественным

60. Какие служебные символы используются для обозначения начала и конца блока кода?

61. Тело любого цикла выполняется до тех пор, пока его условие .

a) у цикла нет условия

62. Когда заранее не известно, сколько раз должна исполняться группа операторов, для прерывания повторения можно использовать оператор …

63. какое из нижеследующих утверждений истинное

a) Типы аргументов в вызове функции должны быть согласованы с типами соответствующих параметров в списке параметров прототипа функции.

b) В операторе выбора switch должна быть метка default.

c) В операторе выбора switch требуется оператор break.

d) Все высказывания истинные

64. Что является выражениями в языке Си++ ?

a) это переменные, функции и константы объединенные знаками операций

b) это переменные объединенные знаками операций

c) это функции объединенные знаками операций

d) это константы объединенные знаками операций

65. В языке Си++ лексема – это:

a) набор специальных символов и директив

b) множество строк, определяющих состояние программы

c) процедура, выполняющая определенные задания

d) последовательности символов языка, разделяющиеся пробелами и другими неграфическими символами

66. Какой из ниже перечисленных операторов, не является циклом в С++?

67. Чтобы подключить заголовочный файл в программу на С++, например iostream необходимо написать:

a) #include <> с iostream внутри скобок

b) include #iostream;

c) include (iostream)

68. Найдите пропущеные элементы кода и исправьте

cout << «Привет! Я калькулятор!Как o е действие вы будете выполнять:» << endl;

cout << «1. Сложение. » endl;

cout << «2. Отнимание.» endl ;

cout << «3. Умножение.» endl ;

cout << «4. Деление.» endl;

cout << «Введите число для выбора действия» << endl;

cout << » Число a MsoNormal» style=»margin-bottom: 0; line-height: normal»> cin >> a;

cout << » Число b MsoNormal» style=»margin-bottom: 0; line-height: normal»> cin >> b;

cout << » Число a MsoNormal» style=»margin-bottom: 0; line-height: normal»> cin >> a;

cout << » Число b MsoNormal» style=»margin-bottom: 0; line-height: normal»> cin >> b;

cout << » Число a MsoNormal» style=»margin-bottom: 0; line-height: normal»> cin >> a;

cout << » Число b MsoNormal» style=»margin-bottom: 0; line-height: normal»> cin b;

cout << » Число a = » << endl;

cout << » Число b = » << endl;

int randomDigit = 0;

randomDigit = 1 + rand() % 7;

cout << «Отгадайте число, которое я загадал (1-7):»;

if (version == randomDigit)

cout » Д a! Я загадал число — » << randomDigit endl;

cout << » Нет ! Я загадал число — » << randomDigit endl;

Курс повышения квалификации

Специфика преподавания информатики в начальных классах с учетом ФГОС НОО

  • Сейчас обучается 27 человек из 16 регионов

Курс повышения квалификации

Введение в сетевые технологии

Курс повышения квалификации

Основы общей и педагогической психологии в деятельности педагога образовательного учреждения

«Домашнее обучение. Лайфхаки для родителей»

  • подготовка к ЕГЭ/ОГЭ и ВПР
  • по всем предметам 1-11 классов

«Такие разные дети: преимущества тьюторской позиции учителя»

Свидетельство и скидка на обучение каждому участнику

Дистанционные курсы для педагогов

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

5 910 168 материалов в базе

«Интеграция современного искусства в детское творчество»

Свидетельство и скидка на обучение
каждому участнику

Ищем педагогов в команду «Инфоурок»

  • ЗП до 91 000 руб.
  • Гибкий график
  • Удаленная работа

Другие материалы

  • Информатика
  • Презентации
  • 03.12.2021
  • 113
  • 1
  • Информатика
  • Презентации
  • 03.12.2021
  • 152
  • 1
  • Информатика
  • 11 класс
  • Презентации
  • Учебник: «Информатика. Углубленный уровень (в2 частях)», Поляков К.Ю., Еремин Е.А.
  • Тема: § 31. XML и XHTML
  • 03.12.2021
  • 144
  • 4
  • Информатика
  • Презентации
  • 03.12.2021
  • 173
  • 12
  • Информатика
  • 7 класс
  • Тесты
  • Учебник: «Информатика», Босова Л.Л., Босова А.Ю.
  • 03.12.2021
  • 223
  • 3
  • Информатика
  • 8 класс
  • Тесты
  • Учебник: «Информатика», Босова Л.Л., Босова А.Ю.
  • Тема: 1.1.6. Двоичная арифметика
  • 03.12.2021
  • 523
  • 13
  • Информатика
  • Презентации
  • 03.12.2021
  • 154
  • 1
  • Информатика
  • 8 класс
  • Тесты
  • Учебник: «Информатика», Босова Л.Л., Босова А.Ю.
  • 03.12.2021
  • 179
  • 2

«Практический подход в работе с утратой смысла жизни: логотерапия»

Свидетельство и скидка на обучение каждому участнику

Вам будут интересны эти курсы:

  • Курс повышения квалификации «Информационные технологии в деятельности учителя физики»
  • Курс повышения квалификации «Внедрение системы компьютерной математики в процесс обучения математике в старших классах в рамках реализации ФГОС»
  • Курс повышения квалификации «Организация работы по формированию медиаграмотности и повышению уровня информационных компетенций всех участников образовательного процесса»
  • Курс повышения квалификации «Облачные технологии в образовании»
  • Курс профессиональной переподготовки «Информационные технологии в профессиональной деятельности: теория и методика преподавания в образовательной организации»
  • Курс повышения квалификации «Использование компьютерных технологий в процессе обучения в условиях реализации ФГОС»
  • Курс профессиональной переподготовки «Управление в сфере информационных технологий в образовательной организации»
  • Курс профессиональной переподготовки «Теория и методика обучения информатике в начальной школе»
  • Курс повышения квалификации «Специфика преподавания дисциплины «Информационные технологии» в условиях реализации ФГОС СПО по ТОП-50»

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • 03.12.2021 1229
  • DOCX 29.1 кбайт
  • Оцените материал:

Настоящий материал опубликован пользователем Ивершень Анастасия Игоревна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

Автор материала
  • На сайте: 6 месяцев
  • Подписчики: 0
  • Всего просмотров: 4441
  • Всего материалов: 20

40%

Московский институт профессиональной
переподготовки и повышения
квалификации педагогов

Дистанционные курсы
для педагогов

663 курса от 690 рублей

Выбрать курс со скидкой

Выдаём документы
установленного образца!

Обложка вебинара131 минута

«Формирование мотивации учебной деятельности как основное условие успешного обучения школьников»

Обложка вебинара131 минута

«Технология дифференцированного обучения в условиях реализации ФГОС»

Обложка вебинара78 минут

«Медиация как инструмент разрешения конфликтов в образовательной среде»

  • Рабочие листы по русскому языку (существительное, прилагательное, глагол)
  • Памятка
  • Памятка и закладки

Подарочные сертификаты

  • Курсы «Инфоурок»
  • Онлайн-занятия с репетиторами на IU.RU

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

Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение администрации может не совпадать с точкой зрения авторов.

Список — инициализация

Cтраница 1

Список инициализации в определении конструктора помещается непосредственно после списка параметров. Он содержит двоеточие с последующим одним или несколькими инициализаторами полей, отделенными друг от друга запятыми. Инициализатор поля содержит имя переменной с последующим начальным значением в круглых скобках. Например, в приведенном ниже классе конструктор содержит список инициализации, который, в свою очередь, содержит инициализаторы полей для всех переменных класса.
 [1]

Список инициализации членов класса в данном конструкторе содержит вызов конструктора базового класса CRectangle, которому передаются значения, присваиваемые переменным-членам. Список инициализации может использоваться для инициализации как базового класса, так и переменных членов ( рассматривался в параграфе Инициализация переменных-членов в конструкторах гл. Конструктор класса CBlock содержит вызов функции SetColor, которая устанавливает значение переменной FillColor.
 [2]

Если список инициализации содержит больше инициализирующих значений, чем имеется элементов в массиве, это является ошибкой.
 [3]

Если список инициализации содержит начальных значений больше, чем элементов массива, то это — ошибка.
 [4]

Структуры можно инициализировать, используя список инициализации, для этого после имени переменной в объявлении структуры ставится знак равенства, за которым следует помещенный в фигурные скобки и разделенный запятыми список инициализаторов.
 [5]

Обратите внимание, что количество элементов списка инициализации должно соответствовать размерности массива.
 [6]

Так как конструктор по умолчанию явно не инициализирует базовый класс ( список инициализации пуст), компилятор автоматически вызывает конструктор по умолчанию базового класса ( CRectangle: : CRectangle ()), присваивающий нулевые значения всем переменным, определенным внутри него. Если базовый класс не имеет конструктора по умолчанию, то будет получено сообщение об ошибке.
 [7]

Когда объявляется объект класса, между именем объекта и точкой с запятой можно в скобках указать список инициализации элементов. Эти начальные значения передаются в конструктор класса. Скоро мы увидим несколько примеров подобных вызовов конструкторов.
 [8]

Если количество начальных значений в списке инициализации меньше чем количество элементов массива, оставшиеся элементы автоматически получают в качестве начальных значений последние значения из списка инициализации.
 [9]

Список инициализации членов класса в данном конструкторе содержит вызов конструктора базового класса CRectangle, которому передаются значения, присваиваемые переменным-членам. Список инициализации может использоваться для инициализации как базового класса, так и переменных членов ( рассматривался в параграфе Инициализация переменных-членов в конструкторах гл. Конструктор класса CBlock содержит вызов функции SetColor, которая устанавливает значение переменной FillColor.
 [10]

Такие переменные называют объектами-членами или встроенными объектами. Его можно инициализировать, передавая требуемые параметры конструктору, помещенному в список инициализации конструктора класса, содержащего объект-член.
 [11]

Список инициализации в определении конструктора помещается непосредственно после списка параметров. Он содержит двоеточие с последующим одним или несколькими инициализаторами полей, отделенными друг от друга запятыми. Инициализатор поля содержит имя переменной с последующим начальным значением в круглых скобках. Например, в приведенном ниже классе конструктор содержит список инициализации, который, в свою очередь, содержит инициализаторы полей для всех переменных класса.
 [12]

Страницы:  

   1

Здравствуйте, помогите пожалуйста Уважаемые программисты, ответить на тест. Хотя бы на половину, заранее благодарен Вам.
Вопрос 1 (10454)
Укажите, какое из нижеследующих утверждений ложное.
1: Комментарии при выполнении программы вызывают печать компьютером на экране текста после символов //.
2: Если вывод осуществляется в cout, то esc-последовательность n вызывает перемещение курсора к началу следующей строки на экране.
3: Все переменные должны быть объявлены до того, как они используются.
4: Все высказывания истинные

Вопрос 2 (10455)
Укажите, какое из нижеследующих утверждений ложное.
1: Всем переменным, когда они объявляются, должен быть присвоен тип.
2: C++ рассматривает переменные number и NuMbEr как одинаковые.
3: Объявления в теле функции C++ могут появляться почти везде.
4: Все высказывания истинные

Вопрос 3 (10456)
Укажите, какое из нижеследующих утверждений ложное.
1: Операция взятия по модулю (%) может применяться только к целым числам.
2: Все арифметические операции *, /, %, + и — имеют одинаковый уровень приоритета.
3: Пустые скобки, следующие за именем функции в прототипе, указывают, что функции для выполнения ее задачи не требуется никаких параметров.
4: Все высказывания истинные

Вопрос 4 (10457)
Укажите, какое из нижеследующих утверждений ложное.
1: Тело каждой функции ограничивается левой и правой фигурными скобками ( { и } ).
2: Программа на C++, которая выводит три строки, должна содержать три оператора вывода, использующих cout.
3: Элементы данных или элемент-функции, объявленные со спецификатором доступа private, доступны для элемент-функций класса, в котором они объявлены.
4: Все высказывания истинные

Вопрос 5 (10458)
Укажите, какое из нижеследующих утверждений истинное.
1: В соответствии с соглашением, имена функций начинаются с прописной буквы, и все последующие слова в имени также начинаются с прописной буквы.
2: Переменные, объявленные в теле некоторой элемент-функции, называются элементами данных и могут использоваться во всех элемент-функциях класса.
3: Для исполнения программы можно использовать любой файл исходного кода, содержащий int main().
4: Указатель, объявленный как void, может быть разыменован.

Вопрос 6 (10459)
Укажите, какое из нижеследующих утверждений истинное.
1: Типы аргументов в вызове функции должны быть согласованы с типами соответствующих параметров в списке параметров прототипа функции.
2: В операторе выбора switch должна быть метка default.
3: В операторе выбора switch в разделе default требуется оператор break.
4: Все высказывания истинные

Вопрос 7 (10460)
Укажите, какое из нижеследующих утверждений истинное.
1: Выражение, содержащее операцию ||, истинно, если истинны оба операнда этой операции.
2: Массив может хранить много различный типов данных.
3: Операция взятия адреса может быть применима только к константам, к выражениям, не дающим в качестве результата ссылки, и к переменным, объявленным с классом памяти register.
4: Все высказывания ложные

Вопрос 8 (10461)
Укажите, какое из нижеследующих утверждений истинное.
1: Если количество начальных значений в списке инициализации меньше, чем количество элементов массива, оставшиеся элементы автоматически получают в качестве начальных значений последние значения из списка инициализации.
2: Если список инициализации содержит начальных значений больше, чем элементов массива, то это — ошибка.
3: Отдельный элемент массива, который передается функции и модифицируется в этой функции, будет содержать модифицированное значение после завершения выполнения вызываемой функции.
4: Все высказывания ложные

Вопрос 9 (10462)
Укажите, какое из нижеследующих утверждений истинное.
1: Когда исполнение программы приостанавливается в контрольной точке, следующим оператором, который будет исполняться, является оператор после контрольной точки.
2: Когда значение переменной изменяется, в окнах Autos и Locals оно выделяется желтым цветом.
3: Во время отладки команда Step Out исполняет все оставшиеся операторы текущей функции и возвращает управление в точку, где была вызвана функция.
4: Все высказывания истинные

Вопрос 10 (10463)
Укажите, какое из нижеследующих утверждений ложно.
1: Указатели разных типов нельзя присваивать друг другу без операции приведения типа.
2: Выражение (х > у && а < b) истинно, если х > у или а < b.
3: Все высказывания ложные
4: Индексы массива обычно должны иметь тип float.

Вопрос 11 (10464)
Выполнение каждой программы на C++ начинается с функции__________.
1: void
2: include
3: main
4: using

Вопрос 12 (10465)
Каждый оператор заканчивается__________.
1: endl
2: return
3: точкой с запятой
4: управляющей последовательностью

Вопрос 13 (10466)
Оператор________ используется для принятия решений
1: cout
2: if
3: while
4: for

Вопрос 14 (10467)
Оператор выбора________ используется для выполнения одного действия, если его условие истинно, и другого действия, если условие ложно
1: If
2: If…then
3: If…then…else
4: If…else

Вопрос 15 (10468)
Повторение набора инструкций заданное число раз называется______ повторений
1: управляемым счетчиком
2: числом
3: заданием

Вопрос 16 (10469)
Когда заранее не известно, сколько раз должна исполняться группа операторов, для прерывания повторения можно использовать________ значение
1: контрольное
2: сигнальное
3: фиктивное
4: все ответы верны

Вопрос 17 (10470)
Списки и таблицы значений хранятся в__________
1: массиве
2: указателе
3: списке
4: стандартной библиотеке

Вопрос 18 (10471)
Элементы массива связаны тем, что они имеют одни и те же _________
1: имя
2: тип
3: значения
4: размерность

Вопрос 19 (10472)
Число, используемое для обращения к отдельному элементу массива называется____________
1: тип
2: индекс+
3: значение
4: позиция

Вопрос 20 (10473)
Для объявления размера массива должна использоваться__________, потому что она делает программу более масштабируемой
1: переменная
2: константа
3: именованная константа
4: символ

Вопрос 21 (10474)
Процесс упорядоченного размещения элементов в массиве называется___________
1: сортировка
2: поиск
3: проверка
4: изменение

Вопрос 22 (10599)
Процесс определения значения ключа, содержащегося в массиве, называется___________
1: сортировка
2: поиск
3: проверка
4: изменение

Вопрос 23 (10600)
Указатель — это переменная, которая содержит в качестве своего значения __________другой переменной
1: индекс
2: адрес
3: код
4: ссылку

Вопрос 24 (10601)
Для инициализации указателя можно использовать
1: null
2: 0
3: адрес
4: все перечисленное

Вопрос 25 (10602)
Целое, которое может быть присвоено указателю, является
1: 0
2: положительным
3: отрицательным
4: все перечисленное

Вопрос 26 (10603)
Что такое идентификаторы в языке Си++ ?
1: это последовательность знаков, начинающаяся с буквы или знака подчеркивания
2: это последовательность знаков
3: это последовательность знаков, начинающаяся с буквы
4: это последовательность знаков, начинающаяся со знака подчеркивания

Вопрос 27 (10604)
В идентификаторах можно использовать
1: заглавные и строчные латинские буквы, цифры и знак подчеркивания
2: заглавные и строчные латинские буквы, цифры и знак подчеркивания
3: заглавные и строчные латинские буквы
4: заглавные и строчные латинские буквы, цифры
5: заглавные и строчные латинские буквы, знак подчеркивания

Вопрос 28 (10605)
Что является выражениями в языке Си++ ?
1: это переменные, функции и константы объединенные знаками операций
2: это переменные объединенные знаками операций
3: это функции объединенные знаками операций
4: это константы объединенные знаками операций

Вопрос 29 (10606)
Какая из операций не относится к операции сравнения?
1: (=)
2: (>)
3: (<)
4: (==)
5: (!=)

Вопрос 30 (10607)
В результате успешной компиляции текста программы на C++ с каким расширением будет получен файл?
1: .obj
2: .exe
3: .cpp
4: .h

Вопрос 31 (10608)
Если не будет указан базовый тип, то какай тип будет подразумеваться по умолчанию
1: int
2: char
3: short
4: long

Вопрос 32 (10609)
К чему применяется операция инкримента?
1: к переменным
2: к константам
3: к выражениям
4: к строкам

Вопрос 33 (10610)
К каким числам применима операция %?
1: к целым
2: к вещественным
3: и к целым и к вещественным

Вопрос 34 (10611)
Какой операции нет в C++?
1: последовательной
2: унарной
3: бинарной
4: тернарная

Вопрос 35 (10612)
Из чего состоит оператор объявления имени?
1: из названия типа и объявляемого имени
2: из названия типа
3: из объявляемого имени

Вопрос 36 (10613)
Оператор while соответствует оператору for: 
1: for  ( ; условие ; )
    оператор
2: for  ( условие; ; )
    оператор
3: for  ( ; ; условие)
    оператор

Вопрос 37 (10614)
В языке Си++ лексема — это:
1: набор специальных символов и директив
2: множество строк, определяющих состояние программы
3: процедура, выполняющая определенные задания
4: последовательности символов языка, разделяющиеся пробелами и други¬ми неграфическими символами

Вопрос 38 (10615)
В языке Си++ указатель — это:
1: специальный значок, показывающий, что это динамическая переменная
2: символическое представление адреса ячейки памяти
3: символ, указывающий на что-либо
4: метка

Вопрос 39 (10616)
В языке Си++ литерал — это:
1: переменная зарезервированного типа
2: неизменяемый объект языка
3: строка
4: буква

Вопрос 40 (10617)
Комментарии заключаются в скобки: 
1: { }
2: /* */
3: [ ]
4: /% %/

Вопрос 41 (10618)
Идентификатор — это:
1: последовательность латинских букв, цифр и символа «_», начинающаяся с буквы или символа «_»
2: неизменяемые объекты языка (константы)
3: последовательность латинских и русских букв
4: способ кодирования, допустимые преобразования над значением данной переменной

Вопрос 42 (10619)
Фактический адрес в указателях — это:
1: строка
2: указатель
3: число
4: буква

Вопрос 43 (10620)
Составной оператор — это:
1: последовательность операторов, заключенная в фигурные скобки { }
2: последовательность операторов, заключенная квадратные скобки [ ]
3: последовательность операторов, заключенная в операторные скобки begin … end
4: последовательность операторов, заключенная в круглые скобки ( )

Вопрос 44 (10621)
Спецификация типа — это:
1: задание типа переменной
2: список переменных
3: перечисление всех переменных, которые использовались в программе
4: список типов переменных, которые использовались в программе

Вопрос 45 (10622)
Логическое «не равно» обозначается: 
1: <>
2: ||
3: !
4: !=

Вопрос 46 (10623)
Логическое «и» обозначается:
1: =
2: ||
3: &
4: &&

Вопрос 47 (10624)
Логическое «не» обозначается:
1: !
2: !!
3: ||
4: not

Вопрос 48 (10625)
Битовая операция инверсии битов обозначается:
1: ~
2: ~
3: >>
4: <<

Вопрос 49 (10626)
Битовая операция исключающего «или» обозначается:
1: ~
2: ~
3: ||
4: &&

Вопрос 50 (10627)
Операция битового «и» обозначается:
1: ~
2: ~
3: ||
4: &

Вопрос 51 (10628)
Операция битового «или» обозначается:
1: ~
2: —
3: ||
4: &

Вопрос 52 (10629)
Текстовый поток — это:
1: логическое понятие, которое система может относить к чему угодно — от дисковых файлов до терминалов
2: последовательность символов, которая организуется в строки, завершающиеся символами новой строки
3: последовательность символов, которая организуется в списки слов, завершающиеся точкой с запятой
4: текст программы

Вопрос 53 (10630)
Выражения — это:
1: конструкции, включающие константы (литералы), переменные, знаки операций, скобки для управления порядком выполнения операций, обращения к функциям
2: основные строительные блоки программы; в языке Си++ указанием на наличие выражения служит символ «точка с запятой», стоящий в конце него
3: набор символов и операций
4: операторы, выполняющие определенные действия с переменными

Вопрос 54 (10631)
Тернарное выражение — это:
1: компактный способ записи оператора WHILE/DO
2: компактный способ записи оператора IF/ELSE
3: выбор одного из нескольких вариантов
4: выражение, описывающее действия логических связывающих операторов на переменные

Вопрос 55 (10632)
Оператор-переключатель — это:
1: оператор для выбора одного из нескольких вариантов (SWITCH)
2: строка с меткой DEFAULT
3: CASE
4: BREAK

Вопрос 56 (10633)
Оператор цикла DO/WHILE является:
1: конструкцией цикла с предусловием
2: конструкцией цикла с постусловием
3: конструкцией цикла с выбором варианта
4: конструкцией цикла с перебором значений параметра

Вопрос 57 (10634)
Формальный аргумент — это:
1: конкретное значение, присвоенное этой переменной вызывающей программой
2: переменная и вызываемой программе
3: строка, которая пишется в скобках функции
4: строка, которая пишется в скобках процедуры

Вопрос 58 (10635)
Фактический аргумент — это:
1: конкретное значение, присвоенное этой переменной вызывающей программой
2: переменная в вызываемой программе
3: строка, которая пишется в скобках функции
4: строка, которая пишется в скобках процедуры

Вопрос 59 (10636)
Писать # include <stdio.h> нужно для:
1: подключения файла, содержащего макроопределения и объявления данных, необходимых для работы функций из стандартной библиотеки ввода-вывода
2: позволяет дать в программе макроопределения (или задать макросы)
3: переопределения не только константы, но и целых программных конструкций
4: замены каждого параметра в строке лексем на соответствующий аргумент макровызова

Вопрос 60 (10637)
Точка с запятой является:
1: разделителем операторов
2: частью оператора
3: ключевым знаком языка Си
4: спецсимвол

Вопрос 61 (10638)
Какой тип данных отсутствует в Си в отличие от большинства других языков:
1: Real
2: Integer
3: String
4: Char

Вопрос 62 (10639)
В языке Си++ тело функции ограничено операторными скобками:
1: begin  end
2: start  finish
3: []
4: {}

Вопрос 63 (10640)
В языке Си++ программа начинает выполняться с функции:
1: Start
2: Main
3: Go
4: Do

Вопрос 64 (10641)
Идентификатором будет:
1: schetchik get_line a12  Paraml _ab
2: %ab  12abc  -x  schetchik
3: b ab  12abc  -x  schetchik
4: *  ab  12abc  -x  schetchik

Вопрос 65 (10642)
Лидирующий нуль в литералах означает:
1: числовой шестнадцатеричный литерал
2: вещественный десятичный литерал
3: числовой восьмеричный литерал
4: целый десятичный литерал

Вопрос 66 (10643)
Символьным литералом будет:
1: «q»
2: %q
3: «s»
4: «sq»

Вопрос 67 (10644)
Строковым литералом будет
1: «sq»
2: %q
3: «s»
4: «qsqs»

Вопрос 68 (10645)
Оператор INT в Си++ применяется для:
1: переопределения диапазона целых чисел
2: преобразования переменной к целому типу
3: описания переменных целого типа
4: прибавления единицы к коду символа

Вопрос 69 (10646)
Строки в Си++ представляются в виде:
1: множества символов, стоящих в один ряд
2: одного идентификатора
3: массива элементов типа CHAR
4: символического представления ячейки памяти

Вопрос 70 (10647)
Наличие нуль-символа () означает, что:
1: количество ячеек массива должно быть, по крайней мере, на одну больше, чем число символов, которые необходимо размещать в памяти
2: логическим значением переменной является «ложь»
3: количество ячеек массива должно быть на одну меньше, чем число символов, которые необходимо размещать в памяти
4: логическим значением переменной является «истина»

Вопрос 71 (10648)
Пример: val = *ptr; операция косвенной адресации * производит:
1: получение адреса
2: перенаправление адреса переменной val к переменной ptr
3: определение значения, на которое указывает ptr
4: определение значения, на которое указывает valv

Вопрос 72 (10649)
Если в цикле задано два разных условия выхода, то используется оператор:
1: CONTINUE
2: BREAK
3: GOTO
4: NEXT

Вопрос 73 (10650)
Если в выражениях встречаются операнды различных типов, то они преобразуются к общему типу в соответствии с определенными правилами. Если один из операндов имеет тип char, то:
1: другие также преобразуются к типу char и результат имеет тип Char
2: другие преобразуются к типу int и результат имеет тип int
3: во время операции присваивания значение правой части преобразуется к типу левой части, который и становится типом результата
4: остается как есть и результат будет Char

Вопрос 74 (10651)
Метки в операторе Switch должны быть:
1: указателями
2: переменной
3: константой
4: типа Char

Вопрос 75 (10652)
Используя форму обращения Function1 (x), получаем:
1: передачу в функцию значения переменной х
2: передачу адреса переменной х
3: использование глобальной переменной
4: использование класса памяти х

Вопрос 76 (10653)
Используя форму обращения Functionl (&x), получаем:
1: передачу в функцию значения переменной х
2: передачу адреса переменной х
3: использование глобальной переменной
4: использование класса памяти х

Вопрос 77 (10654)
Тип функции определяется:
1: типом ее аргументов
2: использованием в программе
3: типом ее описания
4: типом возвращаемого ею значения

Вопрос 78 (10655)
Автоматические объекты:
1: существуют во время выполнения данного блока и теряют свои значения при выходе из него
2: хранятся вне любой функции, входящей в состав программы, и существуют в течение выполнения всей программы
3: являются объектами статического класса памяти
4: можно инициализировать только выражениями с константами и с указателями на ранее описанные объекты

Вопрос 79 (10656)
Макровызов должен состоять:
1: из списка макросов
2: из списка макропеременных
3: из списка макроимен
4: из макроимени и заключенного, в круглые скобки списка аргументов

Вопрос 80 (10657)
Каков будет результат выполнения операторов:
nrs  = 22;
ptr = &nrs;
val =  *ptr;
1: присваивание значения 22 переменной ptr
2: &nrs дает адрес переменной val
3: &nrs дает адрес переменной ptr
4: присваивание значения 22 переменной val

Вопрос 81 (10658)
Каков будет результат выполнения операторов:
int i,j,s;
i=j=2;  /*  i и j  получают значение 2  */
s=(i++)+(++j);
1: i= 3,j = 2, s= 5
2: i= 3, j = 3, s = 6
3: i = 3, j = 3, s = 5
4: i = 2, j = 3, s = 5

Вопрос 82 (10659)
Каков будет результат выполнения операторов:
int х,у,а;
х=5;
у=х*2+7;
а=у/4;
1: х = 5, у = 17, а = 4,25
2: х = 5, у = 17, а = 4
3: х = 5, у = 10, а = 2,25
4: х = 5, у = 32, а = 8

Вопрос 83 (10660)
Каков будет результат выполнения операторов:
а=(у=(х=5)*2+7)/4
1: а = 4,25
2: а = 4
3: а = 2,25
4: error

Вопрос 84 (10661)
Каков будет результат выполнения операторов:
int x,y;
х=у=5;
х+=2;
y-=3;
х*=у;
х/=++у;
1: у = 3, х = 4
2: у = 4, х = 12
3: у = 12, х = 12/3
4: у = 3, х = 14

Вопрос 85 (10662)
Каков будет результат выполнения операторов:
int a,b
а = 4;
b=7;
m=(a>b)?a:b;
1: т = 4
2: m = 11
3: т = 3
4: т = 7

Вопрос 86 (10663)
Каков будет результат выполнения операторов:
int х,у
y=-4;
х=(у<0)?-у:у;
1: x = 4
2: х = -4
3: х = 0
4: x: = 8

Вопрос 87 (41969)
Инкапсуляция — это
1: представляет собой механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то и другое от внешнего вмешательства или неправильного использования
2: позволяет использовать в дочерних классах функционал родительского класса и, в случае необходимости, дополнять его
3: представляет собой способность к изменению функционала, унаследованного от базового класса

Вопрос 88 (41970)
Наследование — это
1: представляет собой механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то и другое от внешнего вмешательства или неправильного использования
2: позволяет использовать в дочерних классах функционал родительского класса и, в случае необходимости, дополнять его
3: представляет собой способность к изменению функционала, унаследованного от базового класса

Вопрос 89 (41971)
Полиморфизм — это
1: представляет собой механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то и другое от внешнего вмешательства или неправильного использования

2: позволяет использовать в дочерних классах функционал родительского класса и, в случае необходимости, дополнять его

3: представляет собой способность к изменению функционала, унаследованного от базового класса

Вопрос 90 (41972)
Интерфейс
1: представляет собой набор функций, которые реализуют класс

2: представляет собой описание набора функций
3: представляет собой описание набора функций, которые реализуют класс

4: представляет собой описание набора функций

Вопрос 91 (41973)
Класс является
1: представителем объекта

2: описанием объекта

3: частью объекта

4: реализатором объекта

Вопрос 92 (41974)
Объект является
1: конкретным описанием определенного класса

2: конкретной частью определенного класса

3: производной определенного класса

4: конкретным представителем определенного класса

Вопрос 93 (41975)
Из приведенных утверждений
а) объект является экземпляром определенного класса
б) класс является экземпляром определенного объекта

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 94 (41976)
Поля — это
1: переменные, принадлежащие классу или экземпляру класса

2: процедуры и функции класса
3: синтаксическая надстройка, позволяющая осуществлять в форме вызов функции

4: синтаксическая надстройка, поддерживаемая компилятором и средой Visual Basic, которая позволяет вызывать методы других объектов

Вопрос 95 (41977)
Методы — это
1: переменные, принадлежащие классу или экземпляру класса

2: процедуры и функции класса
3: синтаксическая надстройка, позволяющая осуществлять в форме вызов функции

4: синтаксическая надстройка, поддерживаемая компилятором и средой Visual Basic, которая позволяет вызывать методы других объектов

Вопрос 96 (41978)
Свойства — это
1: переменные, принадлежащие классу или экземпляру класса

2: процедуры и функции класса
3: синтаксическая надстройка, позволяющая осуществлять в форме вызов функции

4: синтаксическая надстройка, поддерживаемая компилятором и средой Visual Basic, которая позволяет вызывать методы других объектов

Вопрос 97 (41979)
События — это
1: переменные, принадлежащие классу или экземпляру класса

2: процедуры и функции класса
3: синтаксическая надстройка, позволяющая осуществлять в форме вызов функции

4: синтаксическая надстройка, поддерживаемая компилятором и средой Visual Basic, которая позволяет вызывать методы других объектов

Вопрос 98 (41980)
Переменные, принадлежащие классу или экземпляру класса — это
1: Поля

2: Методы

3: Свойства

4: События

Вопрос 99 (41981)
Процедуры и функции класса — это
1: Поля

2: Методы

3: Свойства

4: События

Вопрос 100 (41982)
Синтаксическая надстройка, позволяющая осуществлять в форме вызов функции — это
1: Поля

2: Методы
3: Свойства

4: События

Вопрос 101 (41983)
Синтаксическая надстройка, поддерживаемая компилятором и средой Visual Basic, которая позволяет вызывать методы других объектов — это
1: Поля

2: Методы

3: Свойства

4: События

Вопрос 102 (41984)
Указатель — это переменная, которая содержит в качестве своего значения _______ другой переменной
1: Значение

2: Адрес

3: Выражение

4: Тип

Вопрос 103 (41985)
Указатель — это
1: Константа

2: Адрес
3: Переменная

4: Выражение

Вопрос 104 (41986)
Целое, которое может быть присвоено указателю, является
1: 0
2: положительным

3: отрицательным

4: все перечисленное

Вопрос 105 (41987)
Для инициализации указателя можно использовать
1: Значение

2: Адрес
3: Выражение

4: Тип

Вопрос 106 (41988)
Для инициализации указателя можно использовать
1: Любое целое значение
2: Только положительное целое значение

3: Только ноль

4: Любое целое значение, только не ноль

Вопрос 107 (41989)
Для инициализации указателя можно использовать
1: null

2: 0
3: адрес

4: все перечисленное

Вопрос 108 (41990)
Из приведенных утверждений
а) Операция взятия адреса может быть применима только к константам, к выражениям, не дающим в качестве результата ссылки, и к переменным, объявленным с классом памяти register.
б) Указатель, объявленный как void, может быть разыменован
1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 109 (41991)
Из приведенных утверждений
а) Указатели разных типов нельзя присваивать друг другу без операции приведения типа.
б) Указатель, объявленный как void, может быть разыменован.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 110 (41992)
Что печатается при выполнении оператора? Предполагайте следующие объявления переменных:
char s1[ 50 ] = «jack»;
char s2[ 50 ] = «jill»;
char s3[ 50 ] , *sptr;

cout << strcpy( s3, s2 ) << endl;

1: jill

2: jack

3: 4
4: True

Вопрос 111 (41993)
Что печатается при выполнении оператора? Предполагайте следующие объявления переменных:
char s1[ 50 ] = «jack»;
char s2[ 50 ] = «jill»;
char s3[ 50 ] , *sptr;

cout << strcat( strcat( strcpy( s3, s1 ) , » and » ), s2 ) << endl;

1: jack and

2: and jill

3: jack and jill

4: 4 and 4

Вопрос 112 (41994)
Что печатается при выполнении оператора? Предполагайте следующие объявления переменных:
char s1[ 50 ] = «jack»;
char s2[ 50 ] = «jill»;
char s3[ 50 ] , *sptr;

cout << strlen( s1 ) + strlen( s2 ) << endl;

1: 4
2: 8
3: jackjill

4: оператор содержит ошибку

Вопрос 113 (41995)
Из приведенных утверждений
а) Комментарии при выполнении программы вызывают печать компьютером на экране текста после символов //.
б) Если вывод осуществляется в cout, то esc-последовательность n вызывает перемещение курсора к началу следующей строки на экране.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 114 (41996)
Из приведенных утверждений
а) Все переменные должны быть объявлены до того, как они используются.
б) Всем переменным, когда они объявляются, должен быть присвоен тип.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 115 (41997)
Из приведенных утверждений
а) Объявления в теле функции C++ могут появляться почти везде.
б) C++ рассматривает переменные number и NuMbEr как одинаковые.

1: верно только а

2: верно только б

3: верно только б

4: оба утверждения ложны

Вопрос 116 (41998)
Из приведенных утверждений
а) Операция взятия по модулю (%) может применяться только к целым числам.
б) Все арифметические операции *, /, %, + и — имеют одинаковый уровень приоритета.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 117 (41999)
Из приведенных утверждений
а) Пустые скобки, следующие за именем функции в прототипе, указывают, что функции для выполнения ее задачи не требуется никаких параметров.
б) Тело каждой функции ограничивается левой и правой фигурными скобками ( { и } )

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 118 (42000)
Из приведенных утверждений
а) Программа на C++, которая выводит три строки, должна содержать три оператора вывода, использующих cout.
б) Элементы данных или элемент-функции, объявленные со спецификатором доступа private, доступны для элемент-функций класса, в котором они объявлены.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 119 (42001)
Из приведенных утверждений
а) В соответствии с соглашением, имена функций начинаются с прописной буквы, и все последующие слова в имени также начинаются с прописной буквы.
б) Переменные, объявленные в теле некоторой элемент-функции, называются элементами данных и могут использоваться во всех элемент-функциях класса.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 120 (42002)
Из приведенных утверждений
а) Для исполнения программы можно использовать любой файл исходного кода, содержащий int main().
б) Указатель, объявленный как void, может быть разыменован.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 121 (42003)
Из приведенных утверждений
а) Типы аргументов в вызове функции должны быть согласованы с типами соответствующих параметров в списке параметров прототипа функции.
б) В операторе выбора switch должна быть метка default.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 122 (42004)
Из приведенных утверждений
а) В операторе выбора switch в разделе default требуется оператор break.
б) Выражение, содержащее операцию ||, истинно, если истинны оба операнда этой операции.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 123 (42005)
Из приведенных утверждений
а) Массив может хранить много различный типов данных.
б) Операция взятия адреса может быть применима только к константам, к выражениям, не дающим в качестве результата ссылки, и к переменным, объявленным с классом памяти register.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

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

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 125 (42007)
Из приведенных утверждений
а) Отдельный элемент массива, который передается функции и модифицируется в этой функции, будет содержать модифицированное значение после завершения выполнения вызываемой функции.
б) Когда исполнение программы приостанавливается в контрольной точке, следующим оператором, который будет исполняться, является оператор после контрольной точки.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 126 (42008)
Из приведенных утверждений
а) Когда значение переменной изменяется, в окнах Autos и Locals оно выделяется желтым цветом.
б) Во время отладки команда Step Out исполняет все оставшиеся операторы текущей функции и возвращает управление в точку, где была вызвана функция.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 127 (42009)
Из приведенных утверждений
а) Указатели разных типов нельзя присваивать друг другу без операции приведения типа.
б) Индексы массива обычно должны иметь тип float.

1: верно только а

2: верно только б

3: верны и а, и б

4: оба утверждения ложны

Вопрос 128 (42010)
Для инициализации указателя можно использовать

1: null

2: 0
3: адрес
4: все перечисленное

  • Если сотруднику ошибочно перечислили суммы ошибка расчета как вернуть
  • Если сотрудник мфц допустил ошибку что делать
  • Если сотрудник банка допустил ошибку при переводе денег что делать
  • Если совершил серьезную ошибку на работе
  • Если сзв тд не принят срок исправления ошибок