Файл: Лабораторная работа 01 Среды разработки программ на языке С Драчева Кристина Проверил Савин Н. И. Тула 2023.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.02.2024

Просмотров: 59

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


3.Постановка задачи

Решить заданные задачи и ответить на контрольные вопросы.

Способ решения. Для решения поставленной задачи будет использован объектно-ориентированный язык программирования С++.

4. Ход работы

Задание №1

Листинг программы:

usingnamespace std;

int main() {

setlocale(LC_ALL, "rus");

int q[7] = {5,2,9,4,5,6,7};

int start = 0, end = 0;

for (int h = 0; h < 7; h++) {
q[start++];

}

cout <<"Первый элемент в очереди: "<< q[start - 1] << endl;
start--;
cout <<"Новый первый элемент (после удаления): "<< q[start - 1] << endl;
cout <<"Последний элемент в очереди: "<< q[end];

if (start != end) cout << endl <<"Очередьнепуста!";

system("pause");

}

Задание№2

Листинг программы:

intmain() {

setlocale(LC_ALL, "rus");

int q[7];

int start = 0, end = 0;
cout <<"Введите 7 чисел: "<< endl;
for (int h = 0; h < 7; h++) {

int a; cin >> a;
q[start++] = a;

}

cout<<"Первыйэлементвочереди: "<start--;
cout <<"Новый первый элемент (после удаления): "<< q[start - 1] << endl;
cout <<"Последний элемент в очереди: "<< q[end];

if (start != end) cout << endl <<"Очередьнепуста!";

system("pause");

}

Задание№3

Листингпрограммы

usingnamespace std;
int main() {

setlocale(LC_ALL, "rus");

int q[7] = { 5,2,9,4,5,6,7 };

int start = 0, end = 0;
cout <<"Введите 7 чисел: "<< endl;
for (int h = 0; h < 7; h++) {

q[end++];

}

cout <<"Первый элемент в очереди: "<< q[start] << endl;
++start;
cout <<"Новый первый элемент (после удаления): "<< q[start] << endl;
cout <<"Последний элемент в очереди: "<< q[end - 1];

if (start != end) cout << endl <<"Очередьнепуста!";

system("pause");

}

Задание№4

Листингпрограммы

usingnamespace std;
int main() {

setlocale(LC_ALL, "rus");

int q[7];

int start = 0, end = 0;

cout <<"Введите 7 чисел: "<< endl;

for (int h = 0; h < 7; h++) {

int a; cin >> a;
q[end++] = a;

}

cout <<"Первый элемент в очереди: "<< q[start] << endl;

++start;

cout <<"Новый первый элемент (после удаления): "<< q[start] << endl;

cout <<"Последний элемент в очереди: "<< q[end - 1];

if (start != end) cout << endl <<"Очередьнепуста!";

system("pause");

}

Задание№5

Листинг программы

charbufRus[256];
char* Rus(constchar* text) {

CharToOem(text, bufRus);

return bufRus;
}
int main()

{

int i, k;

int a[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };

cout << Rus("Дерево:") << endl;

cout << Rus("Кореньдерева - a[0] = ") << a[0] << endl;

k = 0;
for (i = 1; i <= 14; i++)

{

if (i % 2 == 0) k = k + 1;

if (i % 2 != 0) cout << Rus(" левыйсынузла a[") << i - k - 1 <<"]="<< a[i] << endl;

if (i % 2 == 0) cout << Rus(" правыйсынузла a[") << i - k - 1 <<"]="<< a[i] << endl;
}
return 0;

}
int main()

{

fifo q;

int val = 1;

while (!q.isFull()) q.enqueue(val++);

while (!q.isEmpty()) std::cout << q.dequeue() <<' ';

}

Задание№6

Листингпрограммы:

usingnamespace std;

structNode

{

Node* l, * r;

int x;

};
void kkk(intx, Node*&Derevo)

{

if (NULL == Derevo)

{

Derevo = newNode;

Derevo->x = x;

Derevo->l = Derevo->r = NULL;

}

if (xx)

{

if (Derevo->l != NULL) kkk(x, Derevo->l);

else

{

Derevo->l = newNode;

Derevo->l->l = Derevo->l->r = NULL;

Derevo->l->x = x;

}

}
if (x>Derevo->x)

{

if (Derevo->r != NULL) kkk(x, Derevo->r);

else

{

Derevo->r = newNode;

Derevo->r->l = Derevo->r->r = NULL;

Derevo->r->x = x;

}

}

}

void pokaz(Node*&tree)

{

if (NULL == tree) return;
pokaz(tree->l);

pokaz(tree->r);

cout <x << endl;

}

void main()

{

setlocale(LC_ALL, "Russian");

int x;

Node* MyTree = NULL;
for (int i = 0; i < 7; i++)

{

cout <<"X = "; cin >> x;

kkk(x, MyTree);

}

pokaz(MyTree);

system("pause");

}

Задание№7

Листинг программы:

structNode

{

Node* l, * r;

int x;

};
void add(intx, Node*&MyTree)

{

if (NULL == MyTree)

{

MyTree = newNode;

MyTree->x = x;

MyTree->l = MyTree->r = NULL;

}
if (xx)

{

if (MyTree->l != NULL) add(x, MyTree->l);

else

{

MyTree->l = newNode;

MyTree->l->l = MyTree->l->r = NULL;

MyTree->l->x = x;

}

}
if (x>MyTree->x)

{

if (MyTree->r != NULL) add(x, MyTree->r);

else

{

MyTree->r = newNode;

MyTree->r->l = MyTree->r->r = NULL;

MyTree->r->x = x;

}

}

}

void Show(Node*&tree)

{

if (NULL == tree) return;
Show(tree->l);

cout <x << endl;

Show(tree->r);

}
void main()

{

int x[7] = {1,8,3,9,5,6,7};

Node* MyTree = NULL;
for (int i = 0; i < 7; i++)

{

add(x[7], MyTree);

}

Show(MyTree);

system("pause");

}

Задание 8

usingnamespace std;

structNode

{

Node* l, * r;

int x;

};
void add(intx, Node*&MyTree)

{

if (NULL == MyTree)

{

MyTree = newNode;

MyTree->x = x;

MyTree->l = MyTree->r = NULL;

}
if (xx)

{

if (MyTree->l != NULL) add(x, MyTree->l);

else

{

MyTree->l = newNode;

MyTree->l->l = MyTree->l->r = NULL;

MyTree->l->x = x;

}

}
if (x>MyTree->x)

{

if (MyTree->r != NULL) add(x, MyTree->r);

else

{

MyTree->r = newNode;

MyTree->r->l = MyTree->r->r = NULL;

MyTree->r->x = x;

}

}

}

void Show(Node*&tree)

{

if (NULL == tree) return;
Show(tree->r);

cout <x << endl;

Show(tree->l);

}
void main()

{

int x; //

Node* MyTree = NULL;
for (int i = 0; i < 7; i++)

{

cout <<"X = "; cin >> x;

add(x, MyTree);

}

Show(MyTree);

system("pause");

}
1   2   3   4   5   6


5.Ответы на контрольные вопросы.

  1. Прототипом функции в языке Си или C++ называется объявление функции, не содержащее тела функции, но указывающее имя функции, арность, типы аргументов и возвращаемый тип данных. В то время как определение функции описывает, что именно делает функцияпрототип функции может восприниматься как описание её интерфейса.

  2. Для обеспечения значения по умолчанию необходимо присваивать значение параметру с помощью оператора присваивания С++ прямо при объявлении функции

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

  4. Перезагрузкой функции

  5. это особенность в C++, которая позволяет определять несколько функций с одним и тем же именем, но с разными параметрами.

  6. Формальными параметрами называются переменные описанные в заголовке программы и используемые только внутри процедуры (функции).
     Фактическими параметрами называются параметры, которые задаются при вызове процедуры (функции).


6. Вывод по проделанной работе

Освоил методы программирования с использованием структур, перечислений и объединений.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ТУЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Институт Прикладной математики и компьютерных наук

Кафедра Вычислительной техники
Учебная дисциплина

Программирование

Уровень профессионального образования: (высшее образование – бакалавриат)

Направление подготовки: Информатика и вычислительная техника

Профиль подготовки: Электронно-вычислительные машины, комплексы, системы и сети
Лабораторная работа № 06

Ввод-вывод по стандарту ANSI C

Выполнила: Драчева Кристина

Проверил Савин Н.И.



Тула 2023

1. Цель работы

Освоить методы ввода-вывода из библиотеки ввода-вывода, описанную стандартом ANSIC.

2. Техническое задание

1. Написать программу –базу данных, в которой в файле хранится контактная информация на людей со следующими полями: Фамилия, Телефон, Город, Улица, Дом, Квартира. В качестве разделителя полей выступает символ табуляции. Предусмотреть возможность вывода всех записей на экран, сортировку по полям Фамилия и Телефон, ввод новых записей.

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

3. Написать программу –базу данных, в которой в файле хранится информация о спортсменах-футболистах со следующими полями: Фамилия, Команда, ГодРождения, ЧислоЗабитыхГолов, Лига, ЧислоМатчей. В качестве разделителя полей выступает символ тире. Предусмотреть возможность вывода всех записей на экран, ввод новых записей, поиск записи по полю Фамилия, сортировка записей по полю ЧислоМатчей.

4. Написать программу – базу данных, в которой в файле хранится информация о собаках со следующими полями: Кличка, Клуб, ГодРождения, Порода, Хозяин, ЧислоМедалей. В качестве разделителя полей выступает символ точки. Предусмотреть возможность вывода всех записей на экран, ввод новых записей, поиск записи по полю Хозяин, сортировка записей по полю ЧислоМедалей.

5. Написать программу –базу данных, в которой в файле хранится информация о компьютерах со следующими полями: ИмяКомпьютера, СетевойАдрес, ДатаОбслуживания, Процессор, ОбъемПамяти, ЧислоПоломок. В качестве разделителя полей выступает символ подчеркивания. Предусмотреть возможность вывода всех записей на экран, ввод новых записей, поиск записи по полю СетевойАдрес, сортировка записей по полю ОбъемПамяти.

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


3.Постановка задачи

Решить заданные задачи и ответить на контрольные вопросы.

Способ решения. Для решения поставленной задачи будет использован объектно-ориентированный язык программирования С++.

4. Ход работы

Задание №1

Листинг программы:

usingnamespace std;

structsportsman

{

char surname[20];

int tel[20];

char city[20];

char ul[20];

char dom[20];

char kv[20];

};

int main()

{
vector a;

sportsman tmp;

FILE* f = fopen("bd.txt", "r");
while (fscanf(f, "%[^-]\%[^-]\%[^-]\%[^-]\%[^-]\%[^-]", tmp.surname, tmp.tel, &tmp.city, &tmp.ul, tmp.dom, &tmp.kv) == 6) {

a.push_back(tmp);

}

std::ofstream out;

out.open("bd.txt");

if (out.is_open())

{

cout <<"ВведитеФамилию "<< endl;

out<<' ';

cout <<"Введите телефон "<< endl;

out<<' ';

cout<<"Введитегород "<
out<<' ';

cout <<"Введите улицу "<< endl;

out <<' ';

cout <<"Введите дом "<< endl;

out <<' ';

cout <<"Введите квартиру "<< endl;

out <<' ';

}
return 0;

}

Задание№2

Листинг программы:

usingnamespacestd;

structsportsman

{

char mark[20];

int model[20];

char gosnomer[20];

char probeg[20];

char color[20];

char godvipyska[20];

};

int main()

{
vector a;

sportsman tmp;

FILE* f = fopen("bd.txt", "r");
while (fscanf(f, "%[^-],%[^-],%[^-],%[^-],%[^-],%[^-]", tmp.mark, tmp.model, &tmp.gosnomer, &tmp.probeg, tmp.color, &tmp.godvipyska) == 6) {

a.push_back(tmp);

}

std::ofstream out;

out.open("bd.txt");

if (out.is_open())

{

cout <<"Введите марку "<< endl;

out <<' ';

cout <<"Введите модель"<< endl;

out <<' ';

cout <<"Введите госномер "<< endl;

out <<' ';

cout <<"Введите пробег "<< endl;

out <<' ';

cout <<"Введите цвет "<< endl;

out <<' ';

cout <<"Введите год выпуска "<< endl;

out <<' ';

}
return 0;

}

Задание№3

Листингпрограммы:

usingnamespace std;

structsportsman

{

char surname[20];

char team[20];

char league[20];

unsigned year;

unsigned g;

unsigned m;

};

int main()

{
vector a;

sportsman tmp;

FILE* f = fopen("bd.txt", "r");
while (fscanf(f, "%[^-]-%[^-]-%u-%u-%[^-]-%u", tmp.surname, tmp.team, &tmp.year, &tmp.g, tmp.league, &tmp.m) == 6) {

a.push_back(tmp);

}
cout <<"ВведитеФамилию: ";

gets(stf);

cout << endl;

while (!feof(f))

{

fgets(str, 15000, f);

surname = strstr(str, stf);

}

if (surname == NULL)

cout << surname << endl;

else

cout<<"Ненайденно!"<< endl;

}

Задание№4

Листинг программы:

usingnamespacestd;

structsportsman

{

char klichka[20];

char club[20];

char godrozdenia[20];

char poroda[20];

char hozyain[20];

char chislomedal[20];

};

int main()

{
vector a;

sportsman tmp;

FILE* f = fopen("bd.txt", "r");
while (fscanf(f, "%[^-].%[^-].%[^-].%[^-].%[^-].%[^-]", tmp.klichka, tmp.club, &tmp.godrozdenia, &tmp.poroda, tmp.hozyain, &tmp.chislomedal) == 6) {

a.push_back(tmp);

}

std::ofstream out;

out.open("bd.txt");

if (out.is_open())

{

cout <<"Введитекличку "<< endl;

out <<' ';

cout <<"Введите клуб"<< endl;

out <<' ';

cout <<"Введите год рождения "<< endl;

out <<' ';

cout <<"Введите породу "<< endl;

out <<' ';

cout <<"Введите хозяина "<< endl;

out <<' ';

cout <<"Введите число медалей "<< endl;

out <<' ';
cout <<"Введите хозяина: ";

gets(stf);

cout << endl;

while (!feof(f))

{

fgets(str, 15000, f);

hozyain = strstr(str, stf);

}

if (hozyain == NULL)

cout << hozyain << endl;

else

cout<<"Ненайденно!"<< endl;

}
}

Задание№5

Листинг программы:

usingnamespacestd;

structsportsman

{

char komp[20];

char ip[20];

char datapodkl[20];

char dataobsl[20];

char proz[20];

char ozy[20];

int chislopolomok[5];

};

int main()

{
vector a;

sportsman tmp;

FILE* f = fopen("bd.txt", "r");
while (fscanf(f, "%[^-]_%[^-]_%[^-]_%[^-]_%[^-]_%[^-]_%[^-]", tmp.komp, tmp.ip, &tmp.datapodkl, &tmp.dataobsl, tmp.proz, &tmp.ozy, &tmp.chislopolomok) == 7) {

a.push_back(tmp);

}

std::ofstream out;

out.open("bd.txt");

if (out.is_open())

{

cout <<"Введите название компьютера "<< endl;

out <<' ';

cout <<"Введите сетевой адрес"<< endl;

out <<' ';

cout <<"Введите дату подключения "<< endl;

out <<' ';

cout <<"Введите дату бслуживания "<< endl;

out <<' ';

cout <<"Введите процессор "<< endl;

out <<' ';

cout <<"Введитепамять "<< endl;

out <<' ';

cout <<"Введите число поломок "<< endl;

out <<' ';
cout <<"Введите Сетевой адрес: ";

gets(stf);

cout << endl;

while (!feof(f))

{

fgets(str, 15000, f);

ip = strstr(str, stf);

}

if (ip == NULL)

cout << ip << endl;

else

cout<<"Ненайденно!"<< endl;

}
}

Задание№6

Листинг программы:

usingnamespacestd;

structsportsman

{

char fam[20];

char ip[20];

char datapodkl[20];

char obmtrafica[20];

char schet[20];

char nschet[20];

};

int main()

{
vector a;

sportsman tmp;

FILE* f = fopen("bd.txt", "r");
while (fscanf(f, "%[^-] %[^-] %[^-] %[^-] %[^-] %[^-] %[^-]", tmp.fam, tmp.ip, &tmp.datapodkl, &tmp.obmtrafica, tmp.schet, &tmp.nschet) == 6) {

a.push_back(tmp);

}

std::ofstream out;

out.open("bd.txt");

if (out.is_open())

{

cout <<"Введитефамилию "<< endl;

out<<' ';

cout <<"Введите сетевой адрес"<< endl;

out <<' ';

cout <<"Введите дату подключения "<< endl;

out <<' ';

cout <<"Введите обьем трафика "<< endl;

out <<' ';

cout <<"Введите кол во денег на счету "<< endl;

out <<' ';

cout <<"Введите номер счета "<< endl;

out <<' ';

cout <<"Введите Сетевой адрес: ";

gets(stf);

cout << endl;

while (!feof(f))

{

fgets(str, 15000, f);

nschet = strstr(str, stf);

}

if (nschet == NULL)

cout << nschet << endl;

else

cout <<"Не найденно!"<< endl;

}
}
5.Ответы на контрольные вопросы

  1. Необязательное поле флаги определяет дополнительные особенности вывода

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

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

  4. Необязательное поле точность интерпретируется следующим образом:
     при выводе чисел формата е, Е и f определяет количество цифр после десятичной точки (последняя цифра округляется);
     при выводе чисел формата g и G определяет количество значащих цифр (по умолчанию 6);

  5.  при выводе целых чисел определяет минимальное количество цифр (если цифр недостаточно, число дополняется ведущими нулями);
     при выводе строк определяет максимальное количество символов, лишние символы отбрасы

  6. Обязательное поле спецификатор указывает на способ интерпретации переменной: как символа, строки или числа (таблица 1). Необязательное поле флаги определяет дополнительные особенности вывода (таблица 2)

  7. Для вывода форматированных данных, как правило, применяются функции printf() и fprintf(). Первая записывает данные в поток stdout, а вторая — в указанный файл или поток. Аргументами функции printf() являются строка форматирования и список выводимых переменных. (В функции fprintf() первый аргумент — указатель файла.)


6. Вывод по проделанной работе

Освоил методы ввода-вывода из библиотеки ввода-вывода, описанную стандартом ANSIC

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ТУЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Институт Прикладной математики и компьютерных наук

Кафедра Вычислительной техники
Учебная дисциплина

Программирование

Уровень профессионального образования: (высшее образование – бакалавриат)

Направление подготовки: Информатика и вычислительная техника

Профиль подготовки: Электронно-вычислительные машины, комплексы, системы и сети
Лабораторная работа № 07

Алгоритмические основы программирования на языке С++. Сортировки
Выполнила: Драчева Кристина

Проверил Савин Н.И.

Тула 2023

1. Цель работы

Ознакомится с основными алгоритмами сортировки.

2. Техническое задание

1. Реализовать сортировку пузырьком для одномерного массива.

2. Реализовать сортировку вставками для одномерного массива.

3. Реализовать «быструю» сортировку для одномерного массива.

4. Реализовать сортировку пузырьком для двумерного массива.

5. Реализовать сортировку вставками для двумерного массива.

6. Реализовать «быструю» сортировку для двумерного массива.

3.Постановка задачи

Решить заданные задачи и ответить на контрольные вопросы.

Способ решения. Для решения поставленной задачи будет использован объектно-ориентированный язык программирования С++.

4. Ход работы

Задание№1

Листинг программы:

usingnamespace std;
int main()

{

intn;

cout<<"Количествоэлементов: ";

cin >> n;
int mass[n];

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

{

cout << i + 1 <<"-ыйэлемент: ";

cin >> mass[i];

}
cout <<"Исходныймассив: ";

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

{

cout << mass[i] <<" ";

}

cout << endl;
for (int i = 1; i < n; ++i)

{

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

{

if (mass[r] < mass[r + 1])

{

int temp = mass[r];

mass[r] = mass[r + 1];

mass[r + 1] = temp;

}

}

}
cout <<"Отсортированный массив: ";

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

{

cout << mass[i] <<" ";

}

cout << endl;


return 0;

}

Задание№2

Листингпрограммы:

usingnamespace std;

int i, j, key = 0, temp = 0;

void InsertSort(int* mas, intn)

{

for (i = 0; i
{

key = i + 1;

temp = mas[key];

for (j = i + 1; j > 0; j--)

{

if (temp
{

mas[j] = mas[j - 1];

key = j - 1;

}

}

mas[key] = temp;

}

cout << endl <<"Результирующиймассив: ";

for (i = 0; i
cout <
}

void main()

{

setlocale(LC_ALL, "Rus");

int n;

cout <<"Количество элементов в массиве > "; cin >> n;

int* mas = newint[n];

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

{

cout << i + 1 <<" элемент> "; cin >> mas[i];

}

InsertSort(mas, n);

delete[] mas;

system("pause>>void");

}

Задание№3

Листингпрограммы:

usingnamespace std;
template

void quickSortR(T* a, longN)

{

long i = 0, j = N;

T temp, p;

p = a[N>> 1];

do {

while (a[i] < p) i++;

while (a[j] > p) j--;

if (i <= j)

{

temp = a[i]; a[i] = a[j]; a[j] = temp;

i++; j--;

}

} while (i <= j);

if (j > 0) quickSortR(a, j);

if (N> i) quickSortR(a + i, N - i);

}
int main()

{

setlocale(0, "Rus");

int a[] = { 2, 5, 1, 19, 8 };

quickSortR(a, 4);

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

cout << a[i] <<" ";

cout << endl;

return 0;

}

Задание№4

Листингпрограммы:

usingnamespace std;
int main()

{

setlocale(LC_ALL, "rus");
int rows, cols, k, temp;
cout <<"Задайте размерность массива:\n";

cout <<"Количество строк: ";

cin >> rows;

cout <<"Количество столбцов: ";

cin >> cols;
cout <<"Номер строки для сортировки: ";

cin >> k;

k--;
int** mas = newint* [rows];
cout <<"Исходныймассив: "<< endl;

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

mas[i] = newint[cols];
for (int i = 0; i < rows; ++i)

{

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

{

mas[i][j] = rand() % 100;

cout << mas[i][j] <<"\t";

}

cout << endl;

}
for (int i = 0; i < cols; ++i)

{

for (int j = 0; j < cols - 1; ++j)

{

if (mas[k][j] > mas[k][j + 1])

{

temp = mas[k][j];

mas[k][j] = mas[k][j + 1];

mas[k][j + 1] = temp;

}

}

}
cout <<"Новыймассив: "<< endl;
for (int i = 0; i < rows; ++i)

{

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

cout << mas[i][j] <<"\t";

cout << endl;

}


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

delete[] mas[i];
delete[] mas;
system("pause");

return 0;

}

Задание№5

Листингпрограммы:

usingnamespace std;

void sort()

{

int tmp, pos;

constint n = 5, k = 5;

int ar[n][k];
for (int i = 0; i < n; ++i) {

for (int j = 0l; j < k; ++j)

{

pos = j;

tmp = ar[i][j];

for (int h = j + 1; h < size; ++h)

{

if (ar[i][h] < tmp)

{

pos = h;

tmp = ar[i][h];

}

}

ar[i][pos] = ar[i][j];

ar[i][j] = tmp;

}

}

}

Задание№6

Листингпрограммы:

int main() {

setlocale(LC_ALL, "Russian");

usingnamespace std;

constint ROWS = 3;

constint COLS = 4;

int matrix[ROWS][COLS] = {

{ 6, 1, 8, 0 },

{ 3, 2, 9, 7 },

{ 4, 1, 8, 5 }

};
std::cout<<"Несортированнаяматрица:"<<:endl>
for (int i = 0; i < ROWS; ++i) {

std::copy(matrix[i], matrix[i] + COLS, std::ostream_iterator(std::cout, " "));

std::cout << std::endl;

}
std::multiset ms;

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

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

ms.insert(matrix[i][j]);

assert(ms.size() == ROWS * COLS);

for (int i = 0; i < ROWS; ++i) {

for (int j = 0; j < COLS; ++j) {

matrix[i][j] = *ms.begin();

ms.erase(ms.begin());

}

}
std::cout<<"Сортированнаяматрица:"<<:endl>
for (int i = 0; i < ROWS; ++i) {

std::copy(matrix[i], matrix[i] + COLS, std::ostream_iterator(std::cout, " "));

std::cout << std::endl;

}
return 0;

}


5.Ответить на контрольные вопросы

  1. Идея метода: шаг сортировки состоит в проходе снизу вверх по массиву. По пути просматриваются пары соседних элементов. Если элементы некоторой пары находятся в неправильном порядке, то меняем их местами.

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

  3. Оригинальность «быстрой» сортировки заключается во взаимодействии двух индексов в процессе сканирования списка. Индекс scanUp перемещается вверх по списку, а scanDown – вниз. Мы продвигаем scanUp вперед и ищем элемент A[scanUp] больший, чем центральный. В этом месте сканирование останавливается, и мы готовимся переместить найденный элемент в верхний подсписок

  4. «быстрая» сортировка самая эффективная, которую изобрел К.Хоар, для большинства приложений превосходит пирамидальную сортировку и является самой быстрой из известных до сих пор


6. Вывод по проделанной работе

Ознакомился с основными алгоритмами сортировки.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ТУЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Институт Прикладной математики и компьютерных наук

Кафедра Вычислительной техники
Учебная дисциплина

Программирование

Уровень профессионального образования: (высшее образование – бакалавриат)

Направление подготовки: Информатика и вычислительная техника

Профиль подготовки: Электронно-вычислительные машины, комплексы, системы и сети
Лабораторная работа № 08

Алгоритмические основы программирования на языке С++.
Выполнила: Драчева Кристина

Проверил Савин Н.И.


Тула 2023

1. Цель работы