- •Приложение 1. Некоторые полезные примеры и иллюстрации к разделам конспекта
- •Примеры к разделу 5 Вычисление факториала числа
- •Быстрое возведение чисел в целую степень
- •Нахождение наибольшего общего делителя (алгоритм Евклида)
- •Примеры к разделу 7 Библиотека функций случайных чисел
- •Библиотека функций по работе с массивами общего назначения
- •Библиотека функций сортировки массивов
- •Библиотека функций поиска в массивах
- •Приложение 2. Функции стандартного ввода/вывода в стиле c (printf, scanf) Автор: Бардин п.Б. Введение
- •Функция стандартного вывода printf()
- •Int printf(char *управляющая строка, ...);
- •Примеры программ.
- •Функция стандартного ввода scanf()
- •Int scanf(char *управляющая строка);
- •Int scanf(char *управляющая строка);
- •Примеры программ.
- •Приложение 3. Библиотека консольного ввода-вывода
- •Приложение 4. Библиотека управления консолью (MyCrt.H)
- •Приложение 5. Библиотека Menu.H и пример ее использования Библиотека Menu.H
- •Пример использования библиотеки Menu.H
Библиотека функций сортировки массивов
/*
Функции сортировки массивов
Сохраните этот текст в файле с именем arr_sort.h. Поместите
этот файл в каталог проекта и в тексте программы используйте директиву
#include " arr_sort.h"
*/
#pragma once
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include "my_rand.h"
using namespace std;
//
// Прототипы функций
//
void Sort1_1(double A[], int n, bool Inc);
// Сортировка методом "пузырька" (вариант 1)
// A - сортируемый массив
// n - количество элементов в массиве
// Inc - порядок сортировки (true - по возрастанию)
void Sort1_2(double A[], int n, bool Inc);
// Сортировка методом "пузырька" (вариант 2)
// A - сортируемый массив
// n - количество элементов в массиве
// Inc - порядок сортировки (true - по возрастанию)
void Sort1_2(int A[], int n, bool Inc);
// Сортировка методом "пузырька" (вариант 2)
// A - сортируемый массив
// n - количество элементов в массиве
// Inc - порядок сортировки (true - по возрастанию)
void Sort2(double A[], int n, bool Inc);
// Сортировка методом обмена
// A - сортируемый массив элементами типа double
// n - количество элементов в массиве
// Inc - порядок сортировки (true - по возрастанию)
void Sort2(int A[], int n, bool Inc);
// Сортировка методом обмена типа int
// A - сортируемый массив
// n - количество элементов в массиве
// Inc - порядок сортировки (true - по возрастанию)
//
// Реализация
//
void Sort1_1(double A[], int n, bool Inc)
{
for (int i = 1; i < n; ++i)
{
int j = i;
while ((j > 0) && ((Inc && (A[j] < A[j - 1])) || (!Inc && (A[j] > A[j - 1]))))
{
Swap(A[j], A[j - 1]);
--j;
}
}
}
void Sort1_2(double A[], int n, bool Inc)
{
for (int i = 1; i < n; ++i)
for (int j = i;
(j > 0) && ((Inc && (A[j] < A[j - 1])) || (!Inc && (A[j] > A[j - 1]))); --j)
Swap(A[j], A[j - 1]);
}
void Sort2(double A[], int n, bool Inc)
{
for (int i = 0; i < n - 1; ++i)
for (int j = i + 1; j < n; ++j)
if ((Inc && (A[j] < A[i])) || (!Inc && (A[j] > A[i])))
Swap(A[i], A[j]);
}
void Sort2(int A[], int n, bool Inc)
{
for (int i = 0; i < n - 1; ++i)
for (int j = i + 1; j < n; ++j)
if ((Inc && (A[j] < A[i])) || (!Inc && (A[j] > A[i])))
Swap(A[i], A[j]);
}
Программа для проверки функций сортировки массивов
/*
Sort.cpp: определяет точку входа для консольного приложения.
Заголовочные файлы arr_common.h, arr_sort.h и my_rand.h должны находиться в папке этого проекта, либо путь к ним должен быть указан в настройках параметров проекта:
Меню среды: Проект – Свойства – Свойства конфигурации – Каталоги VC++ - Каталоги включения и добавляем здесь путь к нашим заголовочным файлам
*/
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include "arr_common.h"
#include "arr_sort.h"
#include "my_rand.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
const int N = 10;
double M[N];
setlocale(0, "");
RandInit(); // Инициализируем датчик случайных чисел (#include "my_rand.h")
cout << " Проверка алгоритмов сортировки.\n";
cout << " -------------------------------\n";
for (char b = '1'; b != 27; cout << "\n\t\t\tПродолжим? (нет - Esc) ",
b = _getch(), cout << endl)
{
RandMakeArr(M, N, 1, 5); // Заполняем массив М из N элементов случайными числами в диапазоне от 1 до 5 (#include "arr_common.h")
cout << "Исходный массив:\n";
ArrOut(M, N); // Выводим исходный массив М из N элементов на экран (#include "arr_common.h")
// Sort1_1(M, N, 1); // Сортируем массив М из N элементов по возрастанию методом "пузырька" (#include "arr_sort.h")
// Sort1_2(M, N, 1); // Сортируем массив М из N элементов по возрастанию методом "пузырька" (#include "arr_sort.h")
Sort2(M, N, 1); // Сортируем массив М из N элементов по возрастанию методом обмена (#include "arr_sort.h")
cout << "Массив, отсортированный по возрастанию:\n";
ArrOut(M, N); // Выводим отсортированный массив М из N элементов на экран (#include "arr_common.h")
Sort2(M, N, 0); // Сортируем массив М из N элементов по убыванию методом обмена (#include "arr_sort.h")
cout << "Массив, отсортированный по убыванию:\n";
ArrOut(M, N); // Выводим отсортированный массив М из N элементов на экран (#include "arr_common.h")
}
return 0;
}