
- •Основы алгоритмизации и программировани
- •Тема . Подставляемые (встраиваемые) функции. Перегрузка функций
- •Тема. Рекурсивные функции
- •Тема 4. Производные типы. Тип указатель: указатели на объекты.
- •Тема. Тип указатель: указатели на функции.
- •Тема. Символьные данные и строки.
- •Тема. Функции для работы со строками.
- •Тема . Массивы: одномерные массивы.
- •Тема. Одномерные массивы: задачи сортировок элементов массива.
- •Тема. Двумерные массивы.
- •Тема. Структуры
- •Тема. Структуры и указатели
- •Тема . Объединения
- •Тема. Битовые поля
- •Тема . Стандартные файлы и функции по работе с ними.
- •Тема. Распределение памяти. Динамическое выделение памяти.
- •Тема. Одномерные динамические массивы.
- •Тема 19. Двумерные динамические массивы.
- •Тема. Динамические структуры данных.
- •Тема . Динамические структуры данных: однонаправленные и двунаправленные списки.
- •Тема. Динамические структуры данных: очередь и стек.
- •Тема. Динамические структуры данных: бинарные деревья.
- •4 Контрольные задания Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Задание 6
- •5. Примеры выполнения домашних заданий
- •1. Запуск приложения:
- •2. Создание консольного приложения:
- •4. Ввод программного кода:
- •5. Построение проекта:
- •1. Запуск приложения:
- •2. Создание консольного приложения:
- •4. Ввод программного кода:
- •5. Построение проекта:
- •Лабораторные работы
- •Лабораторная работа. Подставляемые (встраиваемые) функции. Перегрузка функций.
- •Лабораторная работа. Рекурсивные функции.
- •Лабораторная работа. Производные типы. Тип указатель: указатели на объекты.
- •Лабораторная работа. Тип указатель: указатели на функции.
- •Лабораторная работа. Решение задач с использованием указателей.
- •Лабораторная работа. Символьные данные и строки.
- •Лабораторная работа. Функции для работы со строками.
- •Лабораторная работа. Одномерные массивы: задачи сортировок элементов массива.
- •Лабораторная работа. Двумерные массивы: задачи поиска, замены и суммирования элементов двумерного массива.
- •Лабораторная работа . Двумерные массивы: задачи сортировок и перестановок в двумерных массивах.
- •2.5. Контроль знаний (тесты, образец билета, вопросы для экзамена, зачета)
- •2.5.2 Итоговый контроль знаний
Лабораторная работа . Двумерные массивы: задачи сортировок и перестановок в двумерных массивах.
Цель работы: изучить особенности применения алгоритмов сортировок и перестановок в двумерных массивах, научиться решать задачи сортировок и перестановок в двумерных массивах на языке C++.
Задания к лабораторной работе.
Выполните приведенные ниже задания.
Объявите двумерный вещественный массив, в котором n m элементов. Заполните его числами, полученными по закономерности:
. Отсортируйте каждую строку массива по убыванию. Распечатайте его в виде таблицы с точностью до 3 знаков после запятой дважды – до и после сортировки. Оформите генерацию, вывод массива и сортировку строк с помощью функций.
Объявите двумерный целочисленный массив, в котором n строк по m элементов. Выполните генерацию массива случайными целыми числами из промежутка [a; b). Переставьте столбцы массива так, чтобы их максимальные элементы образовали возрастающую последовательность. Выведите массив на экран в виде таблицы дважды – до и после перестановки. Оформите генерацию, вывод массива и перестановку столбцов с помощью функций.
Объявите двумерный вещественный массив, в котором n m элементов. Выполните генерацию массива случайными вещественными числами из промежутка [a; b). Отсортируйте каждый столбец массива по возрастанию. Распечатайте его в виде таблицы с точностью до 2 знаков после запятой дважды – до и после сортировки. Оформите генерацию, вывод массива и сортировку столбцов с помощью функций.
Дана квадратная матрица размера 2n 2n. Получите новую матрицу, переставляя ее блоки размера n n в соответствии с рисунком.
Приведите квадратную целочисленную матрицу n n к треугольному виду. Способ генерации матрицы выберите самостоятельно.
2.5. Контроль знаний (тесты, образец билета, вопросы для экзамена, зачета)
2.5.1. Текущий контроль знаний
Модуль 1 «Алгоритмы поиска, замены и сортировки данных»
Тесты «Массивы»
Задача 1.
Вариант 1 Задачи 1. В программе объявлен и проинициализирован массив int a[]={9,8,7,6,5,4,3,2,1,0}. Укажите значение a[a[a[9]]].
а) 9
б) +0
в) 1
г) элемент с таким индексом в данном массиве не определен
Вариант 2 Задачи 1. В программе объявлен и проинициализирован массив int a[]={2,4,6,8,10,12,14,16}. Укажите значение *(a+a[2]).
а) элемент с таким индексом в данном массиве не определен
б) 2
в) 10
г) +14
Вариант 3 Задачи 1. В программе объявлен и проинициализирован массив int a[]={1,3,8,5,0,4,9,2,13}. Укажите значение a(a[7]+a[1]).
а) элемент с таким индексом в данном массиве не определен
б) 8
в) +4
г) 13
Задача 2.
Вариант 1 Задачи 2. Укажите название алгоритма сортировки, фрагмент кода которой представлен ниже.
void Sort (int k,int x[max]) {
int i,j,min,temp;
for (i=0;i<k-1;i++) {
min=i;
for (j=i+1;j<k;j++){
if (x[j]<x[min])
min=j;
}
temp=x[i];
x[i]=x[min];
x[min]=temp;
}
}
а) пузырьковая сортировка
б) шейкерная сортировка
в) + сортировка методом простого выбора
г) сортировка методом простого включения
Вариант 2 Задачи 2. Укажите название алгоритма сортировки, фрагмент кода которой представлен ниже.
void Sort (int k,int x[max]) {
int i,j, temp;
for (i=0;i<k;i++) {
temp=x[i];
for (j=i-1; j>=0 && x[j]>temp; j--)
x[j+1]=x[j];
x[j+1]=temp;
}
}
а) пузырьковая сортировка
б) шейкерная сортировка
в) +сортировка методом простого выбора
г) сортировка методом простого включения
Вариант 3 Задачи 2. Укажите название алгоритма сортировки, фрагмент кода которой представлен ниже.
void Sort (int k,int x[max]) {
int i,j,buf;
for (i=k-1;i>0;i--)
for (j=0;j<i;j++)
if (x[j]>x[j+1]) {
buf=x[j];
x[j]=x[j+1];
x[j+1]=buf;
}
}
а)+пузырьковая сортировка
б) шейкерная сортировка
в) сортировка методом простого выбора
г) сортировка методом простого включения
Задача 3.
Вариант 1 Задачи 3. Укажите обращение, аналогичное обращению mas[i][j] к элементу двумерного массива размерности M×N.
а) mas[i,j]
б) +*(*(mas+i)+j)
в) mas[N*i+j]
г) mas[0][0]+ N*i+j
Вариант 2 Задачи 3. Укажите обращение, аналогичное обращению *(*(mas+i)+j) к элементу двумерного массива размерности M×N.
а) *(mas+N*i+j)
б)+mas[i][j]
в) mas[0][0]+ N*i+j
г) mas[i,j]
Вариант 2 Задачи 3. Укажите обращение, аналогичное обращению (*(arr+i))[j] к элементу двумерного массива размерности M×N.
а) *(mas+N*i+j)
б) +mas[i][j]
в) +*(*(mas+i)+j)
г) mas[i,j]
Задача 4.
Вариант 1 Задачи 4. Укажите в байтах размер памяти, занимаемой массивом, который объявлен так:
int m[][5][3]={{{1,2,3},{1}},{{4},{7,8}}};
а) 28
б) 32
в) +120
г) для безразмерного массива размер не определен
Вариант 2 Задачи 4. Укажите в байтах размер памяти, занимаемой массивом, который объявлен так:
float m[][6]={{6.2},{14.3,0.3},{7.0,1.0,5.5,7.8}};
а) 28
б) 48
в) +72
для безразмерного массива размер не определен
Вариант 3 Задачи 4. Укажите в байтах размер памяти, занимаемой массивом, который объявлен так:
а) int m[][7]={{6,2,4,8},{13},{5,6,7}};
б) +84
в) 32
г) 48
для безразмерного массива размер не определен
Модуль 2 «Динамические структуры данных»
Задача 1.
Вариант 1 Задачи 1. Чем ограничен размер динамической памяти?
а) +размером оперативной памяти
б) размером внешних накопителей
в) размером стековой области
г) нет никаких ограничений
Вариант 2 Задачи 1. Из какой области выделяются блоки динамической памяти?
а) стековой области
б) области программы
в) +области свободной памяти
г) области глобальных переменных
Вариант 3 Задачи 1. Динамическая память явно не освобождена в программе. Тогда:
а) она будет занята и после завершения программы
б) +она автоматически освободится после завершения работы программы
в) она освободится только при выходе из среды программирования
г) она освободится только после выключения компьютера
Задача 2.
Вариант 1 Задачи 2. Укажите некорректное выделение динамической памяти, если выполнено объявление int *pt;.
а) pt = new int;
б) pt = new int [15];
в) +pt = new int [];
г) pt = new int (15);
Вариант 2 Задачи 2. Укажите корректное выделение динамической памяти, если выполнено объявление float *pf;.
а) *pf = new float;
б) +pf = new float [15];
в) pf = new float [];
г) pf = new sizeof(float);
Вариант 3 Задачи 2. Укажите ошибку при использовании операции выделения динамической памяти, если выполнено объявление char *ph;.
а) ph = new char [20];
б) +ph = *(new char);
в) ph = new char ('&');
г) ph = new char;
Задача 3.
Вариант 1 Задачи 3. Какая область динамической памяти, выделенной под одномерный массив mass, будет освобождена следующим действием: delete mass;?
а) вся используемая динамическая память
б) область, занятая всеми элементами массива mass
в) +область, занятая только первым элементом массива mass
г) к массиву данная операция не применима
Вариант 1 Задачи 3. Укажите верное освобождение динамической памяти, занятой всеми элементами массива mass.
а) +delete [] mass;
б) delete mass;
в) +free (mass);
г) free (*mass);
Вариант 3 Задачи 3. Какая область динамической памяти, выделенной под одномерный а
массив mass, будет освобождена следующим действием: free (mass);?
а) вся используемая динамическая память
б) +область, занятая всеми элементами массива mass
в) область, занятая только первым элементом массива mass
г) к массиву данная операция не применима
Задача 4.
Вариант 1 Задачи 4. Какие действия выполняет приведенный фрагмент кода?
int *mas, n=10, i;
mas = new int [n];
mas[0]= a[1]=1;
for (i=2; i<n; i++)
mas[i]= mas[i-1]+ mas[i-2];
а) динамическая память под массив не выделена, фрагмент ошибочный
б) обращение к элементам массива неверно, фрагмент ошибочный
в) выделяет динамическую память для 10 целочисленных элементов и заполняет его случайными числами
г) +выделяет динамическую память для 10 целочисленных элементов массива и заполняет его числами Фибоначчи
Вариант 2 Задачи 4. Какие действия выполняет приведенный фрагмент кода?
int n=20, i;
float *mas;
mas = calloc(n,sizeof(float));
for (i=0; i<n; i++)
mas[i]= exp(i);
а) выделяет динамическую память для 20 вещественных элементов и заполняет его случайными числами
б) выделяет динамическую память для 20 вещественных элементов массива и заполняет его значениями экспоненциальной функции
в) +не выполнено явное преобразование типа указателя при выделении динамической памяти, фрагмент ошибочный
г) во фрагменте ошибка вследствие неверного обращения к элементам массива
Вариант 3 Задачи 4. Какие действия выполняет приведенный фрагмент кода?
int n=15, i;
double *mas;
mas = (double *)malloc(sizeof(double));
for (i=0; i<n; i++)
cin >> mas[i];
а) выделяет динамическую память для 15 вещественных элементов и считывает в него элементы с клавиатуры
б) не выполнено явное преобразование типа указателя при выделении динамической памяти, фрагмент ошибочный
в) во фрагменте ошибка вследствие неверного обращения к элементам массива
г) +динамическая память выделена только для одного вещественного числа, фрагмент ошибочный
Модуль 3 «Алгоритмы обработки данных»
Задача 1.
Вариант 1 Задачи 1. Укажите последовательности, которые являются бинарными пирамидами.
а) +8, 4, 7, 3, 1, 5, 2, 2, 0
б) 8, 7, 4, 3, 1, 5, 2, 2, 0
в) +8, 5, 7, 4, 3, 3, 2, 2, 3
г) 8, 5, 7, 4, 6, 3, 2, 2, 3
Вариант 2 Задачи 1. Укажите последовательности, которые не являются бинарными пирамидами.
а) 7, 5, 7, 4, 2, 6, 5, 3, 2
б) +7, 5, 7, 4, 6, 2, 5, 3, 2
в) 8, 6, 8, 3, 0, 7, 6, 1, 3
г) +8, 6, 8, 3, 0, 7, 6, 1, 3, 1
Вариант 3 Задачи 1. Укажите последовательности, которые являются бинарными пирамидами.
а) +9, 6, 8, 3, 5, 7, 4, 2, 1, 4
б) 9, 5, 8, 3, 4, 7, 4, 2, 1, 6
в) 9, 6, 6, 2, 5, 8, 7, 0, 1, 3
г) +9, 6, 8, 2, 5, 6, 7 0, 1, 3
Задача 2.
Вариант 1 Задачи 2. В вершину пирамиды помещен элемент. На какой позиции он остановится в результате спуска вниз? Нумерация элементов начинается с нуля.
а) 1
б) 3
в) +4
г) 7
Вариант 2 Задачи 2. В вершину пирамиды помещен элемент. На какой позиции он остановится в результате спуска вниз? Нумерация элементов начинается с нуля.
а) 2
б) +5
в) 6
г) 8
Вариант 3 Задачи 2. В вершину пирамиды помещен элемент. На какой позиции он остановится в результате спуска вниз? Нумерация элементов начинается с нуля.
а) 8
б) 4
в) +3
г) 2