- •1. Понятия алгоритма и программы. Свойства алгоритмов. Составление алгоритмов различной структуры.
- •2. Описание и типы алгоритмов поиска. Примеры.
- •3. Описание и виды алгоритмов сортировки. Примеры.
- •4. Арифметические операции. Операции отношения. Операции инкремента и декремента в языке программирования с.
- •5. Понятие массивов, векторов, матриц данных. Способы обращения к массивам в языке программирования с.
- •6.Понятие указателя, объявление указателя. Операции над указателями.
- •7. Описание и определение пользовательских функций в языке программирования с
- •8.Строковый тип данных и функции работы с ними в языке программирования с.
- •9.Организация работы с файлами. Функции работы с файлами в языке с.
- •10.Динамические структуры данных в с. Абстрактные типы данных.
3. Описание и виды алгоритмов сортировки. Примеры.
Обычно сортировку подразделяют на два класса: внутреннюю и внешнюю. При внутренней сортировке все элементы хранятся в оперативной памяти, таким образом, как правило, это сортировка массивов. При внешней сортировке — элементы хранятся на внешнем запоминающем устройстве, это сортировка файлов.
Сортировка обменом (пузырьковая). Массив просматривается N-1 раз. При каждом просмотре сравниваются каждые два соседних элемента. Если элемент с меньшим индексом оказывается больше, производится их обмен.
var i, j: byte; vsp : integer;
begin
for i := 1 to n - 1 do
for j := 1 to n - i do
if a[j]>a[j+1] then
begin
vsp:=a[j];
a[j]:=a[j+1];
a[j+1]:=vsp;
end
end;
Сортировка вставками. Пусть часть массива отсортирована. Выбираем в неотсортированной части очередной элемент и вставляем его в отсортированную так, чтобы упорядоченность элементов сохранилась. При поиске места вставки осуществляем сдвиг элементов в сторону возрастания номеров.
var i, j: byte; vsp : integer;
begin
for i := 2 to n do
begin vsp:=a[i];
j:= i-1;
while (a[j]>vsp) and (j>1) do
begin
a[j+1]:=a[j];
j:=j-1
end;
if (a[j]>vsp) and (j=1)
then begin
a[2]:=a[1];
a[1]:= vsp
end
else a[j+1]:=vsp;
end
end;
4. Арифметические операции. Операции отношения. Операции инкремента и декремента в языке программирования с.
В языке С к арифметическим операциям относятся следующие операции:
- вычитание или унарный минус; + сложение; * умножение; / деление; % деление по модулю; ++ увеличение на единицу; -- уменьшение на единицу;
Список операций отношения в языке С.
"<" - меньше. "<=" - меньше или равно. ">" - больше. ">=" - больше или равно. "==" - равно.
"!=" - не равно.
операции инкремента и декремента (или увеличения и уменьшения). Операторы этих операций выглядят соответственно так: ++ и -- . При операции увеличения значение операнда увеличивается на 1, а при операции уменьшения - уменьшается на 1. Но если вы точно уверены, что переменная ваша будет изменяться в большую или меньшую сторону только на 1, лучше будет использовать инкремент или декремент соответственно. И выглядеть это будет так: х++ или х—
Если эти операторы записаны перед переменной, вот так: ++х или --х, то это префиксная форма. При этом последовательность действий такая: СНАЧАЛА переменная изменяется на 1; и только после этого используется в выражении.
5. Понятие массивов, векторов, матриц данных. Способы обращения к массивам в языке программирования с.
Массивы представляют из себя множество переменных с определенным типом данных (int,char,float и т.д.) и состоит из двух частей: имени массива и индекса элемента.
Для создания массива надо написать тип (аналогичен типам переменных) затем имя массива и в квадратных скобках количество элементов:
int numbers[1000]; // массив на 1000 числовых элементов.
float test[10] // массив на 10 вещественных чисел
А для доступа к n-ому элементу необходимо написать имя массива[номер элемента] и работать с ним как с обычной переменной.
Пример:
numbers[200]=201; //записать в 200 элемент число 201
test[1]=0,5; // в 1 элемент записать 0,5
test[9]=10; // в 9 элемент записать число 10
int a=5;
numbers[test[9]]=111; /*записать в элемент массива numbers с номером, равным содержимому test[9], число 111*/
test[a]=2; // записать в элемент массива с номером, равным а
Кроме массивов в c++ существуют еще контейнеры, которые позволяют вам немного по другому хранить данные и, вдобавок, применять к ним различные функции (поиск, сортировка и т.д.) Вектор-один из видов контейнеров.
Для создания вектора необходимо подключить <vector>. Затем создание вектора почти ничем не отличается от создания переменной и/или массива:
vector <type> name; //здесть type- тип данных в векторе, а name - имя вектора
Для записи в вектор достаточно набрать имя вектора.push_back(что положить)
vector <int> test;
test.push_back(10);
test.push_back(20);
Обращение к n-ому элементу ничем не отличается от обращения к элементу массива:
test[0]++;
cout<<test[1];
test[1]=222;
Для удаления последнего элемента вектора используется функция pop_back()
test.pop_back();
Ма́трица — математический объект, записываемый в виде прямоугольной таблицы элементов кольца или поля (например, целых или комплексных чисел), которая представляет собой совокупность строк и столбцов, на пересечении которых находятся её элементы. Количество строк и столбцов матрицы задают размер матрицы.
Матрица Данных - средство представления данных исследования; квадратная таблица, строки которой предназначены для информации об обследованных объектах, столбцы - для измеряемых переменных: на пересечении строки и столбца указывается значение переменой для конкретного объекта.
