
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра ЭПУ
отчет
по лабораторной работе №5
по дисциплине «Информационные технологии»
Тема: «Алгоритмы поиска медианы и генерирования перестановок»
Студент гр. 1205 |
|
Агеев А.А. |
Преподаватель |
|
Ларионов И. А. |
Санкт-Петербург 2022
Цель работы: решить задачи по реализации поиска медианы и генерирования перестановок, проверить корректность результатов работы программы.
Блок-схемы:
Рисунок 1 – блок-схема алгоритма поиска медианы
Рисунок 2 – блок-схема алгоритма генерирования перестановок
Код программы:
1) Поиск медианы #include <iostream>
#include <algorithm>
using namespace std;
int main() {
setlocale(LC_ALL, "Russian");
int N; //размерность
float m;
cout << "Введите размерность массива: ";
cin >> N;
int* A = new int[N];
cout << "Массив: ";
for (int i = 0; i < N; i++) {
cout << endl << " Введите значение массива A[" << i << "]: ";
cin >> A[i];
}
cout << endl;
if (N % 2 != 0) m = A[N / 2];
else m = (A[N / 2] + A[N / 2 - 1]) / 2.0;
cout << "Медиана: " << m << endl;
return 0;
}
2) Перестановки
#include <iostream>
using namespace std;
void swap(int x, int y, int* A) {
int t = A[x];
A[x] = A[y];
A[y] = t;
}
void Generate(int k, int N, int* A) {
if (k == N) {
for (int j = 0; j < N; j++) {
cout << A[j] << " ";
}
cout << endl;
}
else {
for (int j = k; j < N; j++) {
swap(k, j, A);
Generate(k + 1, N, A);
swap(k, j, A);
}
}
}
int main() {
setlocale(LC_ALL, "Russian");
int N; //размерность
float m;
cout << "Введите размерность массива: ";
cin >> N;
int* A = new int[N];
cout << "Массив: ";
for (int i = 0; i < N; i++) {
A[i] = i + 1;
cout << A[i] << " ";
}
cout << endl;
Generate(0, N, A);
return 0;
}
Листинг результатов:
Поиск медианы:
Рисунок 3 – результат работы алгоритма поиска медианы
Перестановки
Рисунок 4 - результат работы алгоритма генерирования перестановок
Выводы: написаны программы, выведены результаты.