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

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




































Главная

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

Изучение основных этапов проектирования программных систем, создание прикладной программы, которая выполняет решение систем линейных алгебраических уравнений методом Гаусса. Вычисление определителя и обращение матриц. Листинг разработанной программы.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

2.2 Компьютерная реализация алгоритма решения СЛАУ
- программирование в машинных кодах (включая языки типа Ассемблер);
- программирование на языках высокого уровня (включая объектно-ориентированное программирование);
Разработка программы требует и соответствующей подготовки (назовем ее «программистской»), и достаточно большего количества времени (и то и другое часто отсутствует у «обычного пользователя»). Поэтому, начиная с 90-х годов прошлого века, широкую известность и заслуженную популярность приобрели так называемые системы компьютерной математики или, проще, математические пакеты.
Для решения СЛАУ существует множество программных средств: MathCad, Mathematica, MatLab и др.
MathCAD -- математически ориентированные универсальные системы. Помимо собственно вычислений они позволяют с блеском решать задачи, которые с трудом поддаются популярным текстовым редакторам или электронным таблицам. С их помощью можно не только качественно подготовить тексты статей, книг, диссертаций, научных отчетов, дипломных и курсовых проектов, они, кроме того, облегчают набор самых сложных математических формул и дают возможность представления результатов, в изысканном графическом виде.
С момента своего появления системы класса MathCAD имели удобный пользовательский интерфейс -- совокупность средств общения с пользователем в виде масштабируемых и перемещаемых окон, клавиш и иных элементов. У этой системы есть и эффективные средства типовой научной графики, они просты в применении и интуитивно понятны. Словом, системы MathCAD ориентированы на массового пользователя -- от ученика начальных классов до академика.
MatLab -- язык программирования и система научных и инженерных расчетов, построенная на основе интерпретатора этого языка. Matlab, сокращение от «Matrix Laboratory», предназначен в первую очередь для выполнения алгоритмов, использующих векторы и матрицы.
Matlab имеет большое число пакетов (toolboxes) -- как собственных, так и распространяемых независимыми разработчиками часто на условиях открытого кода. В Matlab включен Simulink -- визуальный редактор для моделирования динамических систем.
В конце прошлого века получила широкое распространение и сейчас быстро развивается система Mathematica. Ее успех в значительной степени объясняется ее широкими графическими возможностями, а также электронной документацией, которую можно рассматривать как электронную библиотеку, посвященную различным разделам математики и информатики. Mathematica имеет высокую скорость и практически не ограниченную точность вычислений, что позволяет ей работать как на очень мощных компьютерах, так и не очень сильных персональных компьютерах. Огромным достоинством программы Mathematica является справочная система. Она включает в себя не только очень качественное описание функций с примерами, а также учебник. В ней есть все материалы для тех кто только начинает работу с приложением, и для тех кто работает с ней очень давно.
Но часто бывает неудобно использовать вышеперечисленные программы для реализации конкретной задачи, каковой является решение СЛАУ, нахождение определителя и обратной матрицы. Иногда удобней реализовать задачу как отдельное приложение. В качестве языка программирования предполагается использовать среду визуального программирования Delphi.
Среди большого разнообразия продуктов для разработки приложений Delphi занимает одно из ведущих мест. В основе такой общепризнанной популярности лежит тот факт, что Delphi, как никакая другая система программирования, удовлетворяет изложенным выше требованиям. Delphi-приложения эффективны, если разработчик соблюдает определенные правила (и часто - если не соблюдает). Эти приложения надежны и при эксплуатации обладают предсказуемым поведением.
Пакет Delphi - продолжение линии компиляторов языка Pascal корпорации Borland. Pascal как язык очень прост, а строгий контроль типов данных способствует раннему обнаружению ошибок и позволяет быстро создавать надежные и эффективные программы.
Как язык Turbo Pascal естественно сравнивать с его ближайшими конкурентами - многочисленными вариациями на тему языка Basic и с C++. Я считаю, что Turbo Pascal существенно превосходит Basic за счет полноценного объектного подхода, включающего в себя развитые механизмы инкапсуляции, наследование и полиморфизм. Последняя версия языка, применяемая в Delphi, по своим возможностям приближается к C++. Из основных механизмов, присущих C++, отсутствует только множественное наследование. Плюсы применения языка Pascal очевидны: с одной стороны, в отличие от Visual Basic, основанного на интерпретации промежуточного кода, для него имеется компилятор, генерирующий машинный код, что позволяет получать значительно более быстрые программы. С другой - в отличие от C++ синтаксис языка Pascal способствует построению очень быстрых компиляторов.
1.3 Этапы разработки программных систем
Исходным этапом создания и является этап разработки требований, в процессе которого проводятся поисковые, исследовательские работы, формируется комплекс требований, выражающий потребности пользователя в конкретном ПИ. На данном этапе будущий комплекс программ тщательно анализируется с учетом выполняемых им функций и основных свойств, обосновывается целесообразность их разработки, предварительно оцениваются трудовые и стоимостные затраты и сроки создания, вырабатываются рекомендации по выбору инструментальных средств и методов. Обязательным в содержании данного этапа является также формирование требований к качеству программ в соответствии с условиями их функционирования и реализации конкретных функций. Выполнение этих работ в процессе формирования требований и формирование необходимых эксплуатационных свойств в ПИ на данном и последующих этапах их разработки позволяет предотвратить дополнительные расходы, вызванные модификацией программ при их внедрении и сопровождении.
Следующим этапом в создании программы является этап проектирования, в процессе которого требования пользователей формируются в более точном и конкретном виде.
Проектирование программ охватывает комплекс работ по разработке структуры программ и их компонентов; выбору языка программирования и конкретной конфигурации комплекса технических средств, на котором предполагается реализация разрабатываемой программы.
В процессе проектирования решается задача выбора оптимальной структуры программы, определяющая содержание и характер работ на последующих этапах разработки. На данном этапе качества ПИ обеспечивается конкретными решениями и зависит в основном от организации управления разработкой, квалификации специалистов, использованием перспективных методов, приемов, правил и средств проектирования программ.
После проектирования программ следует их кодирование. На практике эти этапы, как правило, частично перекрываются, т.е. за проектированием отдельных модулей выполняется их программирование, а затем, возможно, и предварительная проверка правильности функционирования разработанного модуля.
Программирование характеризуется большим числом разнообразных правил, приемов, методов и средств его выполнения, применение которых зависит от квалификации, опыта и индивидуальных особенностей программистов. В настоящее время существуют десятки языков программирования и средств автоматизации, облегчающих труд программистов и повышающих их производительность. К тому же создание и использование современных приемов программирования, средств автоматизации, проведение различных видов проверок и контроля программирования способствует предотвращению и выявлению значительного числа ошибок, что сокращает время и расходы на этапе отладки и тестирования программ, повышает их качество.
Этап отладки и тестирования программ, следующий за этапом программирования, имеет целью выявление и устранение ошибок в них, а также определения, в какой мере разработанные программы удовлетворяют требованиям, сформулированным в спецификациях.
Работы по отладке и тестированию программ характеризуются большой степенью повторяемости и являются наиболее утомительными и дорогостоящими. В связи с этим уделяется большое внимание разработке и использованию различных системных и инструментальных средств, автоматизирующих выполнение работ на данном этапе, что позволяет повысить качество разрабатываемых программ и снизить трудоемкость их создания. По оценкам специалистов на отладку и тестирование программ затрачивается до половины общих средств на разработку программ, что тем не менее не исключает наличие в них ошибок.
2.1 Описание алгоритма решения СЛАУ
Системы уравнений появляются почти в каждой области прикладной математики. В некоторых случаях эти системы уравнений непосредственно составляют ту задачу, которую необходимо решать, в других случаях задача сводится к такой системе. Например, для проведения кривой, наилучшим образом соответствующей экспериментальным данным, приходится решать систему линейных уравнений, для решения уравнений в частных производных, также требуется решать системы алгебраических уравнений. Существует множество других задач, сводящихся к решению систем алгебраических уравнений.
Далее мы будем рассматривать системы из n уравнений с n неизвестными. Каждый член такого уравнения содержит только одно неизвестное, и каждое неизвестное входит только в первой степени. Такая система уравнений называется линейной. В случае двух неизвестных каждое уравнение графически изображается прямой линией, в случае трех неизвестных ему соответствует плоскость в трехмерном пространстве, а для четырех и более неизвестных -- гиперплоскость. Искомое решение системы уравнений представляет собой набор значений неизвестных, удовлетворяющих одновременно всем уравнениям.
Рассмотрим один из наиболее известных и широко применяемых прямых методов решения систем линейных уравнений. Обычно этот метод называют методом исключения или методом Гаусса.
Если задана некоторая произвольная система уравнений, то без предварительного исследования нельзя сказать, имеет ли она какое-либо решение и, в случае если решение существует, является ли оно единственным. На этот вопрос существуют три и только три ответа,
1. Решение системы уравнений существует и является единственным.
2. Система уравнений вообще не имеет решения.
3. Система уравнений имеет бесконечное множество решений.
В методе Гаусса матрица СЛАУ с помощью равносильных преобразований преобразуется в верхнюю треугольную матрицу, получающуюся в результате прямого хода. В обратном ходе определяются неизвестные.
Запишем расширенную матрицу системы:
На первом шаге алгоритма Гаусса выберем диагональный элемент (если он равен 0, то первую строку переставляем с какой-либо нижележащей строкой) и объявляем его ведущим, а соответствующую строку и столбец, на пересечении которых он стоит - ведущими. Обнулим элементы a 21 , …, a n 1 ведущего столбца. Для этого сформируем числа . Умножая ведущую строку на число , складывая со второй и ставя результат на место второй строки, получим вместо элемента a 21 нуль, а вместо элементов , b 2 - соответственно элементы , и т.д. Умножая ведущую строку на число , складывая с n-ой строкой и ставя результат на место n-ой строки, получим вместо элемента a n 1 нуль, а остальные элементы этой строки будут иметь вид: . Сохраняя ведущую строку неизменной, получим в результате 1-го шага алгоритма Гаусса следующую матрицу:
На втором шаге алгоритма Гаусса в качестве ведущего элемента выбирается элемент (если он равен нулю, то вторую строку взаимно меняем на нижележащую строку). Формируются числа , которые ставятся около ведущей строки. Умножая ведущую строку на число и складывая результат с третьей строкой, получим вместо элемента нуль, а вместо элементов , , - элементы , , и так далее. Умножая ведущую строку на число , складывая результат с n-ой строкой и ставя полученную сумму на место n-ой строки, получим вместо элемента нуль, а вместо элементов , , - элементы , . Сохраняя 1-ую и 2-ую строки матрицы неизменными, получим в результате второго шага алгоритма
После (n-1) - го шага алгоритма Гаусса получаем следующую расширенную матрицу, содержащую верхнюю треугольную матрицу СЛАУ:
Прямой ход алгоритма Гаусса завершен.
В обратном ходе алгоритма Гаусса из последнего уравнения сразу определяется x n , из предпоследнего - x n - 1 и т.д. Из первого уравнения определяется x 1 .
Если элементы какой-либо строки матрицы системы в результате преобразований стали равными нулю, а правая часть не равна нулю, то СЛАУ несовместна, поскольку не выполняются условия теоремы Кронекера-Капелли.
Если элементы какой-либо строки матрицы системы и правая часть в результате преобразований стали равными нулю, то СЛАУ совместна, но имеет бесконечное множество решений, получающееся с помощью метода Гаусса для СЛАУ порядка r, где r - ранг матрицы исходной СЛАУ.
В результате прямого хода метода Гаусса можно вычислить определитель матрицы A исходной СЛАУ:
При этом с помощью множителя , где p - число перестановок строк в процессе прямого хода, учитываются соответствующие перемены знаков вследствие перестановок строк.
Метод Гаусса можно применить для обращения невырожденной () матрицы.
Действительно, пусть требуется обратить невырожденную матрицу , . Тогда, сделав обозначение , , , можно выписать матричное уравнение AX = E, где E - единичная матрица
на основе которого можно записать цепочку СЛАУ
каждую из которых можно решить методом Гаусса. При этом, поскольку верхняя треугольная матрица для всех этих СЛАУ будет одной и то же, то метод Гаусса применяется один раз. Строится следующая расширенная матрица:
В результате применения (n - 1) - го шага метода Гаусса получаем:
При этом первый столбец обратной матрицы определяется в обратном ходе метода Гаусса с правой частью b 1 , столбец - с правой частью b 2 и так далее. Столбец определяется с правой частью b n .
Программа работает на ПК под управлением ОС Windows 95/98/Me или Windows NT/2000/XP/2003/Vista/Seven. Работа всех компонентов под управлением Windows 95 возможна только, начиная с версии Windows 95 OSR2 (v.4.00.950B). Минимальные требования к конфигурации ПК совпадают с таковыми для соответствующих ОС, однако корректная работа программы возможна только при наличии не менее 32 Мб оперативной памяти, установленной на компьютере. ПК должен полностью поддерживать систему команд процессора i80386.
Следует установить все рекомендуемые производителем ОС критические обновления. Если поддержка ОС производителем прекращена, рекомендуется перейти на более современную версию системы.
Размер свободного дискового пространства не менее 600 Кбайт (для выполняемого модуля программы).
Программа состоит из четырех модулей: main - отвечает за вывод результатов выполнения программы, vvod - отвечает за ввод данных и загрузку текстового примера, gausss_lu - решение системы линейных уравнений, opro - содержит информацию о программе.
Совокупность данных модулей представляет собой монолитно-модульную структуру программы (рисунок 3).
Рисунок 3 - Монолитно - модульная структура программы
Сцепление модулей main и vvod - по образцу (3). Сцепление main и gausss_lu - по образцу (3). Сцепление main и opro - по данным (1).
Уровень связности модуля main - процедурный (сила связности 5), vvod - информационный (сила связности 9), gauss_lu - процедурный (сила связности 5), opro - функциональный (сила связности 10).
Типы: matr - двумерный массив действительных чисел максимальной размерности 1010. vect - одномерный массив действительных чисел максимальной размерности 10.
Процедура LU(A, n, L, U, norm) находит LU разложения.
Переменные: n (тип integer) - размерность матрицы, A (тип matr) - исходная матрица, norm (тип real) - норма матрицы, L, U (тип matr) - матрицы LU - разложения.
Процедура PRINT_MATR(A, n) выводит матрицу.
Переменные: n (тип integer) - размерность матрицы, A (тип matr) - исходная матрица.
Процедура SLU(L, U, n, B, x) решает системы линейных уравнений.
Переменные: n (тип integer) - размерность матрицы, L, U (тип matr) - матрицы LU - разложения. B (тип vect) - вектор правых частей. X (тип vect) - решение системы.
Процедура Det(L, U, n, d) вычисляет определитель.
Переменные: n (тип integer) - размерность матрицы, L, U (тип matr) - матрицы LU - разложения, d (тип real)- определитель матрицы.
Процедура Obr(L, U, n, O) обращает матрицу.
Переменные: n (тип integer) - размерность матрицы, L, U (тип matr) - матрицы LU - разложения. O (тип matr)- обратная матрица.
Процедура SpinEdit1Change изменяет размеры таблицы ввода исходных данных.
Процедура FormCreate загружает тестовый пример.
Процедура aVyhodExecute позволяет выходить из программы.
Процедура aVvodExecute вызывает окно ввода данных.
Процедура aGaussExecute управляющая процедура метода Гаусса.
Процедура aOprgExecute выводит информацию о программе.
3.3 Описание диалога с пользователем
Для запуска необходимо выполнить следующую последовательность действий:
1) нажать кнопку «Пуск» «Выполнить» «Обзор»;
2) найти файл с именем GAUSS.EXE и установить на него указатель;
После запуска на экране монитора компьютера появляется главное окно программы (рисунок 4).
- главное меню, расположенное в верхней строке окна (рисунок 5).
- инструментальная панель с кнопками управления, дублирующими наиболее часто используемые команды меню (рисунок 6).
Рисунок 6 - Инструментальная панель
- область вывода решения (рисунок 7).
Пользователю необходимо выбрать из меню Файл команду Ввод данных (или нажать кнопку ввода данных). На экран выводится форма ввода (рисунок 8).
Пользователю необходимо ввести число уравнений системы - целое число от 1 до 10. После этого необходимо задать матрицу системы, вектор правых частей (последний столбец).
2. После ввода исходных данных пользователю необходимо из меню Решение выбрать команду Метод Гаусса (или нажать соответствующие кнопки инструментальной панели). Полученные результаты выводятся в окно вывода.
3. Выход из программы - меню Файл, команда Выход или кнопка закрытия окна.
Задание: Методом Гаусса решить систему линейных алгебраических уравнений Аx = b, найти определитель и обратную матрицу.
87/5 · x 4 = 37/3; x 4 = 185/261 ? 0,708812;
-5 · x 3 - 33 · x 4 = -5; x 3 = -320/87 ? -3,67816;
1/3 · x 2 + 2 · x 3 + 20/3 ·x 4 = 1; x 2 = 2843/261 ? 10,8927;
-9 · x 1 + 2 · x 2 + 3 ·x 3 - 5 ·x 4 = 0; x 1 = 209/261 ? 0,80076;
det A = - 9 · 1/3 · (-5) · 87/5 = 261
Рисунок 9 - Пример работы программы
Как видно из полученного решения оно совпадает с точным, что дает нам возможность убедиться в правильности работы разработанной программы.
(Программная реализация решения систем СЛАУ. Модули программы: main, opro, gauss_lu, vvod).
{Модуль main является главным модулем программы. В этом модуле выводятся результаты выполнения программы, предоставляется доступ к модулям opro, gauss_lu, vvod.}
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ActnList, StdCtrls, ComCtrls, ToolWin, ImgList, XPMan;
procedure aVyhodExecute(Sender: TObject);
procedure aVvodExecute(Sender: TObject);
procedure aGaussExecute(Sender: TObject);
procedure aOprgExecute(Sender: TObject);
procedure TForm1.aVyhodExecute(Sender: TObject); //выход
procedure TForm1.aVvodExecute(Sender: TObject); //вызов окна ввода данных
procedure TForm1.aGaussExecute(Sender: TObject); //управляющая процедура
n: integer; //число уравнений системы
s, norm: real; //определитель, норма матрицы
A, //расширенная матрица коэффициентов системы размерности n x n+1
L, U: matr; //L,U матрицы LU-разложения
X, //вектор решения системы методом Гаусса
Procedure PRINT_MATR(var A: matr; n: integer); //печать матрицы
n := Form2.SpinEdit1.Value; //размерность матрицы
A[i, j]:=StrToFloat(Form2.sg1.Cells[j, i]);
B[i]:=StrToFloat(Form2.sg1.Cells[N + 1, i]);
AssignFile(fl, 'resgauss'); Rewrite(fl);
WriteLn(fl, 'Исходная матрица:'); //вывод матрицы
WriteLn(fl, 'Правые части:'); //вывод правой части матрицы
LU(A, n, L, U, norm); //вывод LU-разложения
WriteLn('Нет LU-разложения для A');
WriteLn(fl, 'Результаты разложения A=LU');
WriteLn(fl, ' L-матрица:'); //вывод L-матрицы
WriteLn(fl, ' U-матрица:'); //вывод U-матрицы
WriteLn(fl, 'Контроль по LU=A:'); //вывод конрроля по LU
WriteLn(fl, 'Решение системы'); //вывод решения системы
WriteLn(fl, 'X', i, '=', x[i]:7:5);
WriteLn(fl, 'Определитель матрицы det(A)=', s:7:5); //вывод определителя
WriteLn(fl, 'Обратная матрица:'); //вывод обратной матрицы
Memo1.Lines.LoadFromFile('resgauss');
procedure TForm1.aOprgExecute(Sender: TObject); //информация о программе
{В модуле gauss_lu производятся все вычисления}
matr = array [1..10,1..10] of real; //двумерный массив действительных чисел
vect = array [1..10] of real; //одномерный массив действительных чисел
Procedure Obr(L, U: matr; n: integer; var O: matr);
Procedure LU(A: matr; n: integer; var L, U: matr; var norm: real);
Procedure SLU(L, U: matr; n: integer; B: vect; var x: vect);
Procedure Det(L, U: matr; n: integer; var d: real);
Procedure LU(A: matr; n: integer; var L, U: matr; var norm: real); //нахождение //LU разложения
for i := 1 to n do //факторизация-разложение
Procedure SLU(L, U: matr; n: integer; B: vect; var x: vect); //решение системы
x[n] := g[n] / u[n, n]; //обратный ход
Procedure Det(L, U: matr; n: integer; var d: real); //вычисление определителя
Procedure Obr(L, U: matr; n: integer; var O: matr); //обращение матрицы
O[i, j] := O[i, j] + O1[i, k] * O2[k, j];
Системы линейных алгебраических уравнений. Код программы для решения систем линейных алгебраических уравнений. Математические и алгоритмические основы решения задачи методом Гаусса. Программная реализация решения. Алгоритмы запоминания коэффициентов. лабораторная работа [23,5 K], добавлен 23.09.2014
Алгоритм решения систем линейных уравнений методом Гаусса, его этапы. Система уравнений для определения коэффициентов сплайна, представляющая собой частный случай систем линейных алгебраических уравнений. Программная реализация, тестовый пример. курсовая работа [431,8 K], добавлен 15.06.2013
Метод Гаусса-Зейделя как модификация метода Якоби, его сущность и применение. Разработка программы решения системы линейных алгебраических уравнений на языке VB, проверка правильности работы программы в MS Excel и математических пакетах MathCad и MatLab. курсовая работа [325,5 K], добавлен 27.10.2013
Системы линейных алгебраических уравнений. Матричный метод решения систем линейных уравнений. Решение задачи математическим методом. Блок-схема алгоритма и листинг программы. Расчет трудоемкости разработки программы. Расчет себестоимости и цены программы. дипломная работа [144,8 K], добавлен 25.04.2012
Решение систем линейных алгебраических уравнений по методу Гаусса. Разработка прикладной программы формирования видеотеки с использованием технологии разработки программ "сверху-вниз". Алгоритм добавления, удаления и корректировки элемента видеотеки. курсовая работа [305,0 K], добавлен 18.06.2012
Решение систем алгебраических линейных уравнений методом Крамера. Сущность метода прогонки. Программная реализация метода: блок-схема алгоритма, листинг программы. Проверка применимости данного способа решения для конкретной системы линейных уравнений. курсовая работа [581,0 K], добавлен 15.06.2013
Преобразование матрицы системы линейных алгебраических уравнений (СЛАУ) с помощью алгоритма Гаусса. Решение задачи методом простой итерации. Создание блок-схемы и текста программы для решения СЛАУ, реализованной на языке программирования Turbo Pascal. курсовая работа [1,2 M], добавлен 15.06.2013
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Разработка прикладной программы для решения систем линейных алгебраических уравнений курсовая работа. Программирование, компьютеры и кибернетика.
Реферат по теме Социальная ответственность и этика поведения
Реферат: Большое Cолёное озеро. Скачать бесплатно и без регистрации
Объект Практики Отчет
Курсовая работа: Основы организации бухгалтерского учета на предприятии ЗАО "Черемшанская МСО-ТАПС"
Топик: Eyck, Jan van: altarpiece in Ghent
Эссе Википедия В Литературе Определение
Иван Царевич И Серый Волк Сочинение 5
Дипломная работа по теме Разработка интернет-дневника
Реферат На Тему Филосфские И Научные Взгляды Галена
Контрольная работа: Виды скидок и методы их расчета
Сочинение О Дале Его Словаре
Курсовая работа по теме Теория спроса и предложения
Реферат по теме Этнография Казахстана и Средней Азии
Реферат: Творчість і життя Лесі Українки. "Ні, я жива, я буду вічно жити"
Курсовой Проект 12 Ти Этажный Односекционный Панельный Жилой Дом
Системы Закаливания Реферат
Курсовая работа по теме Особенности ведения переговоров в Великобритании
Средства выражения категории вежливости в современном немецком языке
Сочинение На Тему Причастие Интересная Часть Речи
Контрольная Работа 2 По Математике 7 Класс
Боротьба козацтва проти турецько-татарської агресії в кінці XVI – першій половині XVII ст. - История и исторические личности реферат
Анализ современного опыта исполнительного производства в Российской Федерации - Государство и право дипломная работа
Правовой режим исполнения и отбывания наказания в учреждениях УИС - Государство и право дипломная работа


Report Page