Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование билеты-ответы.doc
Скачиваний:
16
Добавлен:
24.09.2019
Размер:
113.15 Кб
Скачать

6. Условный оператор и оператор множественного выбора. Операторы для организации циклов.

Ветвление – ситуация в программе, когда некоторая её часть выполняется либо не выполняется в зависимости от условия. В С++ используется if. Схема такая:

If (условие) инструкция

[ else инструкция 2]

  1. условие – некоторое выражение, переменная, константа или литерал логического типа.

  2. инструкция 1 – простая или составная инструкция, выполняемая  когда условие истинно.

  3. Инструкция 2 – простая или составная инструкция, выполняемая  когда условие ложно, при этом она может отсутствовать вместе с командой else, т.е. при ложности условия ничего выполняться не будет.

Оператор множественного выбора

switch (count) // начало оператора switch

{

case 1: // если count = 1

{

cout << a << " + " << b << " = " << a + b << endl; // выполнить сложение

break;

}

case 2: // если count = 2

{

cout << a << " - " << b << " = " << a - b << endl; // выполнить вычитание

break;

}

case 3: // если count = 3

{

cout << a << " * " << b << " = " << a * b << endl; // выполнить умножение

break;

}

case 4: // если count = 4

{

cout << a << " / " << b << " = " << a / b << endl; // выполнить деление

break;

}

Цикл – простая или составная инструкция, которая при опр. Условиях должна повторяться. Типы циклов: 1) циклы пока - выполняются до наступления некоторого условия. 2) n раз заранее заданное кол-во раз.

Каждое очередное выполнение инструкции называется шагом цикла. При некорректно составленном условии цикл может повторяться бесконечно раз.

Цикл «пока»

Повторяется пока условие истинно.

Пример вечного цыкла. ( do, while)

While ( true) {

Cout << “fjdb;b”;

}

Цикл for (1;2;3)

1.- начальное значение счётчика

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

3. выражение, которое будет изменять счётчик после каждого шага цикла.

В первом параметре можно создать локальный счётчик.

7.Стандартные потоки ввода вывода. Средства работы с потоками ввода, Вывода. Специальные символы(перевод строки, Табуляции, Конец строки).

8. Псевдослучайные числа. Генерация псевдослучайных чисел на С++.

псевдослучайные величины — вырабатываемая алгоритмически последовательность чисел, обладающих свойствами случайных чисел.

для генерации случайных чисел в С++ используют функцию rand()

1. srand(time(0));

2.a=rand()%1000;

генерация случ. чисел от 0 до 1000, за начальное значение для генерации берется текущее время(секунды)

Генерация псевдослучайных чисел в C++

В стандартной библиотеке C++ (в заголовочном файле cstdlib) существует функция rand(), которая при каждом вызове возвращает псевдослучайное целое число в диапазоне от 0 до константы RAND_MAX (обычно она равна 32767, но её значение зависит от настроек среды и, соответсвенно, может изменяться, самый простой способ избавиться от сомнений — вывести значение этой константы на экран).

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

#include <iostream>

#include <cstdlib>

using namespace std;

int main() {

cout << "Выводим 2 случайных значения от 0 до " << RAND_MAX << endl;

cout << rand() << ' ' << rand();

return 0;

}

9. Массивы в С++. Алгоритмы сортировки. символьные массивы. Многомерные массивы.

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

Индексы элементов в массиве начинаются с 0:начальный элемент имеет 0 следующий за ним 1-и т.дпоследний элемент имеет на 1 меньше чем кол-во элементов в массиве-это кол-во называют также размером или длинной массива.

Тип_имя[размер]

1)тип-допустимый тип данных с++

2)имя-уникальный в данной области видимости индификатор

3)размер-целое неотрицательное переменная.константа или литерал.

Сортировка массива.

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

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

Сортировка выбором:

  1. находим в массиве минимальный элемент и перемещаем его на первое место, меняя минимальный элемент местами с первоначальным.

  2. Рассматриваем часть массива со 2 места и до конца. Находим там минимальный элемент и ставим на 2 место.

  3. Рассматриваем с 3 места до конца, минимальный на третье. И т.д.

Сортировка методом пузырька

Суть алгоритма такова. Если пройдёмся по любому массиву установив правильный порядок в каждой паре соседних элементов, то после того прохода на последнем месте массива гарантированно будет стоять нужный элемент (самый большой для сортировки по возрастанию или самый маленький для сортировки по убыванию). Если ещё раз пройтись по массиву с такими же преобразованиями, то и на предпоследнем месте гарантированно окажется нужный элемент. И так далее.

Пример:

2 9 1 4 3 5 2 → порядок правильный, не будет перестановки

2 9 1 4 3 5 2 → 2 1 9 4 3 5 2

2 1 9 4 3 5 2 → 2 1 4 9 3 5 2

2 1 4 9 3 5 2 → 2 1 4 3 9 5 2

2 1 4 3 9 5 2 → 2 1 4 3 5 9 2

2 1 4 3 5 9 2 → 2 1 4 3 5 2 9

Символьные массивы (строки)

При объявлении символьного массива (типа char), даже в том случае, если мы не производим его инициализации и он является локальным, все элементы массива по-умолчанию получают значение нулей-терминаторов (символов с ASCII-кодом 0). При этом, метод cout, получающий в качестве аргумента указатель на символьный массив, начинает вывод на экран с элемента, связанного с данным указателем (т.е. с начального) и продолжает до первого встреченного нуля-терминатора.

Именно это позволяет нам отправлять на вывод символьный массив, не передавая методу cout его размера.

Признаком окончания вывода является символ нуля-терминатора ('\0').

Метод cin в качестве своего аргумента также может принимать указатель на символьный массив, куда будет записана строка введённая с клавиатуры, при этом, за последним элементом строки метод cin автоматически разместит нуль-терминатор. Более того, при задании строковой константы (когда строка явно задаётся в двойных кавычках в коде программы), вслед за последним символом в строке также автоматически размещается нуль-терминатор. Соответственно, длина строки будет на один символ больше, чем мы явно укажем.

Многомерные массивы.

В случае, когда в каждой ячейке некоторого массива хранится не конкретное значение, а ссылка на другой массив, исходный массив называется много мерным.

Например двумерный массив : в каждой ячейке хранит ссылку на числовой массив со значениями. N- мерный массив для обращения к конкретному значению требует n индексов..

10. Указатели в с++. Операция раззыменования. Константные указатели и указатели на константы.

Указатель — элемент программы хранящий адреса памяти некоторого объекта (например, переменной) определённого типа.

Общая схема объявления указателя:

type* name; // объявили указатель с именем name на объект типа type

type *another; // объявили указатель на объект того же типа, звёздочку можно ставить и перед именем указателя

Для перехода по известному адресу — используется оператор *, размещаемый перед адресом или указателем хранящем адрес. Под переходом по адресу понимается, что от адреса мы переходим к действиям над значением, хранимом по данному адресу. Это операция называется иногда разыменованием.

int a = 15; // переменная a со значением

int* p = &a; // указатель с адресом переменной a

cout << *p << endl; // увидим 15, т.е. значение переменной

Константный указатель -- не может быть перенаправлен на другой адрес. Хранимый в нём адрес задаётся при инициализации и далее не может быть изменён. Подобный указатель автоматически создаётся при объявлении массива и всегда остаётся направленным на его первый элемент. Но может быть объявлен и явно:

int a = 5, b = -5;

const int* p = &a;

*p = 15; // разименовывать можно

p = &b; // ошибка, перемещать нельзя

Указатель на константу -- может быть перенаправлен на другой адрес, но не допускает разименование. Используется для того, чтобы хранить адреса констант (C++ не позволяет направить на константу обычный указатель). Но кроме этого может быть направлен и на обычную переменную (хотя практического смысла в такой возможности нет).

int a = 5;

const int b = -5;

const int* pc; // создали константный указатель

pc = &b; // направили на константу

*pc = 15; // ошибка, разименовывать нельзя

pc = &a; // можно направить на переменную

*pc = 15; // но разименовывать всё равно нельзя

11. Указатели и массивы. Операции над указателями. Ссылки в С++.

Указатель и массив

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

Действия над указателем.

Кроме объявления указателей и присваивания им адресов(с помощью ссылок или из др. указателей.) существуют следующие операции с участием указателей:

  1. p++ - смещение указателя на ячейку вправо. Размер ячейки зависит от типа указателя, например для int* смещение будет происходить на 4 байта.

  2. p-- - смещение на ячейку влево.

  3. p+n – смещение указателей на n ячеек, где n – целое число. Если n отрицательное, то смещение будет происходить влево. Р++=р+1 р--=р-1

  4. p-q – разность указателей одного типа, равное целому числу смещений от указателя р до указателя q.

Указатель на указатель

Int a=3;

Int *p=&a;

Cout<<&p

Int **q=&p // создан указатель на указатель ( двумерный указатель)

При создании двумерного массива появляется двумерный указатель. Разыменовав 1 раз мы переходим к адресу начальной строки массива, разыменовав ещё раз перехдим к начальному элементц в этой строке.