Nickolay.info. Алгоритмы

По просьбам трудящихся открыт отдельный раздел, где будут накапливаться короткие программки (алгоритмы) с комментариями к ним. Реализовано всё на Паскале и Си/C++ (ниже).

Тем не менее, вот список разделов сайта, где уже есть множество моих архивов с исходниками или статей по теме: Обучение, Софт, Технические статьи и заметки, PHP, JavaScript.

Напоминаю также, что я не размещаю на этом сайте созданных не мной материалов, то есть, это не коллекция надёрганных отовсюду примеров, пусть даже и систематизированных, а моя авторская подборка. Нужные учебные компиляторы, в частности, с Си и Паскаля, можно скачать здесь, вот тут лежит мой учебник по Паскалю, а это - лекции по Си. Проблему с сохранением русского языка при переносе исходника в консольный Паскаль или Си решаем здесь.

Если ссылка вот такая, значит, материал лежит в блоге.

Пишем на Паскале

Паскаль: 6 простых задач с "экономическим содержанием" - простые работы по Паскалю для тех, кто знакомится на нём с основными алгоритмическими конструкциями за несколько учебных часов :::

Математика, сортировки, числа:
Некоторые математические расчёты на Паскале :::
Нахождение всех корней заданного квадратного уравнения :::
Решение СЛАУ методом Гаусса :::
Сверхпростые числа :::
Совершенные числа :::
Самая длинная последовательность нулей :::
Объединение упорядоченных массивов :::
Перестановка значений двух переменных без использования дополнительной переменной :::
Наименьшие числа, не имеющие общих делителей :::
Сумма цифр целого числа :::
Перевод целого числа из десятичной и в десятичную систему счисления :::
Простые алгоритмы сортировки одномерного массива :::
Пример для сортировки на Паскале с визуализацией :::
Нахождение второго по величине максимального (минимального) значения в массиве :::
Нахождение максимального (минимального) значения в массиве без использования дополнительной переменной :::
Строим дерево игры (задача С3 ЕГЭ по информатике) :::
Разбиение массива на положительные и отрицательные элементы :::
Элементы матрицы, все соседи которых больше их :::
Окружность из единичек в нулевой матрице :::
Обход матрицы по раскручивающейся спирали :::
Пример для алгоритма расчёта с заданной точностью (первый замечательный предел) :::
Удаление повторяющихся значений из массива :::
Самый часто встречающийся элемент в массиве :::
Самая длинная повторяющаяся цепочка значений в массиве :::

Задачи с геометрической интерпретацией:
Площадь треугольника по длинам сторон (формула Герона) и координатам вершин :::
3 точки на одной линии :::
Попадание точки в треугольник :::
Площади выпуклого и невыпуклого многоугольников :::
Существование треугольника и четырёхугольника :::
Расстояние от точки до отрезка :::
Минимум расстояния от точки на оси абсцисс до концов отрезка :::
Часовая и минутная стрелки на одной линии :::
Ромб или квадрат? :::
Обход точек ломаной без самопересечений :::

Строки, файлы, множества:
Разбор на слова за 1 проход по строке :::
Самая длинная подстрока, являющаяся записью числа :::

Численные методы, инженерные расчёты:
Метод Ньютона решения нелинейного уравнения :::
Реализация основных методов интерполяции функции одной переменной :::
Интерполяционный полином Лагранжа на Паскале :::
Построение кубического интерполяционного сплайна :::
Метод наименьших квадратов (МНК) :::
Решение задачи Коши методом Эйлера :::
Количество тепла на единичном сопротивлении (метод Рунге-Кутта 2 порядка и метод Симпсона) :::
Краевая задача для дифференциального уравнения 2 порядка :::

Графика, форматы данных, интерфейсы:
Читаем 16-цветный BMP на Паскале :::
Реализация выпадающего меню :::

Дата, время, случайная генерация:
Дата следующего дня по введенной дате :::
Определение дня недели по дате :::
Количество дней от даты рождения до сегодняшней :::
Программно вычисляем время+(-)минуты=новое время :::
Заполнение экрана случайными символами с учётом частоты встречаемости :::
Генерируем вещественные случайные числа из диапазона [-N,N] :::

Развлечения, игры:
"Код матрицы" :::
Дамка и две шашки :::
Игра "Угадай число" :::
Ханойская башня :::

Особенности языка, системные:
Обработка матрицы и вектора одной подпрограммой :::
Открытый массив на Паскале и проверка правильности ввода :::
Контроль правильности ввода целых чисел на Паскале :::
Перегрузка функций на Паскале с помощью type :::
Отключение текстового курсора в окне консоли Паскаля :::
Модуль мыши на Паскале и пример на работу с ним для графики :::

Пишем на Си/C++

В некоторых кодах с сайта и из блога могут потребоваться незначительные изменения, например, по новым стандартам C++ некоторые файлы заголовков подключаются без расширения .h:

#include <iostream>

вместо

#include <iostream.h>

Просто учебные коды я по привычке пишу, сохраняя совместимость с прежними стандартами.

Кроме того, некоторые компиляторы добавляют к коду свои специфические директивы #pragma, требуют, чтобы функция main() обязательно имела тип int и т.д.

Математика, числа:
Конвертируем римские цифры в арабские :::
Как преобразовать систему счисления без переворачивания строки цифр? :::
Наибольший общий делитель (алгоритм Евклида) и Наименьшее общее кратное - НОД и НОК для пары чисел и массива :::
Раскраска карты или матрица смежности :::
Вычисление суммы ряда в C++ :::
Рекурсивная функция для вычисления чисел Фибоначчи :::
Считая без приоритета... (рекурсивный подбор знаков операций в выражении) :::
Round в C++ :::
Степень двойки, ближайшая сверху к заданному числу :::
Работа с отдельными битами на Си :::
Класс-шаблон bitset и пример на него :::
Цикл, выполняемый "туда и обратно" :::
Генерируем равномерное распределение целых чисел из интервала [-n,n] :::
Генерируем случайные числа для основных распределений :::
Гипотеза Гольдбаха :::
Как извлечь любую цифру из числа :::
Ищем максимальную серию чисел, на которой не выполняется признак :::
Самая длинная цепочка элементов, для которой выполняется признак, или "указатель на шаблон функции" :::
Мультипростые числа :::
Циклический сдвиг числа влево/вправо на k бит :::
Кодирование сдвигом полубайтов и инверсией :::
Варианты получения суммы из комбинации заданных слагаемых :::
Алгоритм Дейкстры на C++ :::
Вычисляем сумму больших степеней двойки :::
Сколько "чёрных пятниц" или считаем количество чисел, выпавших на день недели :::
О программном поиске INT_MAX и дополнительном коде числа :::
Короткий рекурсивный QuickSort для целочисленного массива и массива строк :::
Индикатор прогресса для консоли :::

Типовая обработка массивов, векторы, матрицы:
Минимальный модуль разности сумм элементов в правой и левой части массива :::
Количество различных элементов в массиве :::
Массив случайных целых чисел без повторений :::
Как удалить из целочисленного массива повторяющиеся элементы :::
Количество монотонных цепочек значений в массиве :::
Симметричный одномерный и двумерный массивы :::
Обработка матриц функциями, работающими с параметром - одномерным массивом :::
Объединение, пересечение и разность множеств, реализация через массивы :::
Считаем определитель матрицы :::
Чередование значений в массиве :::
Заполнение матрицы "змейкой" :::
Поиск седловых точек матрицы :::
Максимальная и минимальная цепочка элементов с чередованием признака :::
Выполняем поворот матрицы :::
Поиск в матрице подматриц из совпадающих элементов :::
Проверка матрицы на магический квадрат :::
Ищем в матрице количество повторяющихся элементов :::
Размеры "областей" из одинаковых элементов в матрице :::
Вычисление среднего значения и дисперсии элементов массива :::

Строки, указатели:
Выводим только те символы, которые встречаются в каждой из строк s1, s2 :::
Количество вхождений строки в строку :::
Алгоритм Бойера—Мура :::
Простейший "гипертекст" на C++ :::
*s++ или *(s+i) :::
Функция возвращает указатель на функцию... :::
Как узнать номер символа в строке :::
strcpy и "нарушение прав доступа при записи"; корректные показания часов словами :::
Строка из нулей заданной длины и сложение строк, содержащих двоичные числа :::
Как разобрать строку на слова средствами класса string? :::
getline getlin'у рознь или доля гласных в русском тексте :::
Простейшее введение в "умные указатели" :::
Проверить правильность расстановки скобок в строке :::

Работа с файлами:
Задачи на строки и файлы, C vs C++ :::
Как всё-таки победить fscanf при чтении чисел из текстового файла :::
Может ли ifstream извлечь вещественные числа из произвольного текстового файла... :::
Про fgets и fflush(stdin) в Studio 2015 :::
ASCII-код наиболее часто встречаемого символа в файле :::
Строим частотную таблицу символов на C++ :::
Выделяем динамическую память под файл :::
Читаем текстовый файл в вектор строк :::

Графика, форматы данных, интерфейсы:
Считаем определенные интегралы и выводим график - методы трапеций, Симпсона, разложения в ряд (метод Гаусса с двумя узлами) :::
Алгоритмы Сазерленда-Ходжмена - отсечение многоугольника прямоугольным окном, объединение двух многоугольников :::
Создаём файлы BMP на Си :::
Чтение и запись формата PCX на Си :::
Конвертируем из Лексикона в HTML :::
Генерация таблицы имен цветов Internet Explorer и Netscape Navigator :::
Пишем в текстовый файл ведомость студентов :::
Многоуровневое консольное меню на классах :::
Простейшее меню и окно вывода для консоли C++ (функции библиотеки conio.h) :::
Простейший граф на C++ в графическом режиме консоли :::

Развлечения, игры:
Расстановка слонов и ладей на шахматной доске :::
Путь коня по шахматной доске :::
Делаем "односвязный" лабиринт и решаем его :::
Поиск кратчайшего пути на графе :::

Особенности языка, системные:
Простые реализации atoi и itoa :::
Пишем собственную функцию atof :::
Используем указатель на функцию :::
     Ещё раз про указатель на функцию... :::
Пример на функции с переменным числом параметров :::
Пишем на Си функции нижнего уровня :::
Упражнения на разбор по словам с функцией token :::
Упражнения на резидентные программы под DOS :::
Массив как параметр функции :::
Вернуть строку string с датой и временем, отформатированными с учётом локали :::
С++: как обработать исключения самостоятельно? :::
Есть ли регулярные выражения в C++? :::

Статические и динамические структуры данных:
Работаем с составными типами данных C++ :::
Структура для геометрической фигуры :::
Cортировка односвязного списка перестановкой указателей :::
Динамическая матрица из строк переменной длины :::
Делаем динамическую структуру на основе двусвязного списка :::
Произвольное и бинарное деревья :::
     Произвольное дерево из чисел с ограниченным количеством потомков узла :::
Упражнения на бинарные деревья и списки :::
Точки и прямоугольники... :::
C++: изучаем стандартный контейнер vector :::
Как сделать бинарное дерево средствами STL :::
Делаем простой мультимап в консоли :::

Классовый подход:
Примеры на работу с классами в C++ :::
Класс "паскалевских" массивов на C++ :::
Класс "тетрадки" :) :::
C++: общее о перегрузке операторов :::
Переопределяем префиксный, постфиксный, унарный и бинарный операторы :::
Что происходит, если вернуть из функции ссылку? :::
Как поддерживать динамическое свойство класса и нужно ли это делать? :::
Пишем маленькие классы :::
С++: шаблон класса, использующего шаблоны функций :) :::

Просто алгоритмы

О заменяемости циклов :::
Об остатке от деления и округлении до числа, кратного чему-то... :::
Не больше двух третей положительных... :)
Волк, коза и капуста :::
Устройство с двумя кнопками :::
Выбор случайной строки за 1 проход по файлу :::
Два сомнительных алгоритма из книжки :::
"Универсальная" блок-схема и 3 типовых алгоритма :::

Разное и несортированное

Ещё 31 алгоритмическая задача на Си и Паскале - архив за дек.2013 :::
Ещё 20 алгоритмических задач на Си и Паскале - архив за июн.2014 :::
Ещё 5 учебных задачек, 26.06.2015 :::
31 не пригодившаяся в октябре задачка (2015) :::
15 не пригодившихся задачек за декабрь-2015 :::
17 не пригодившихся задач за начало 2016 года :::

Рейтинг@Mail.ru

вверх гостевая; E-mail