Ввести три числа: S – количество страниц в учебнике, A – количество страниц, прочитанных студентом в первый день, и P – ежедневный процент увеличения количества прочитанных страниц. Каждый день студент прочитывает на P процентов страниц больше, чем в предыдущий день.
Содержание пояснительной записки (объем 25-30 листов без приложений):
— задание на курсовую работу (данный лист);
— алгоритмы решения задачи;
— логическая структура программы;
— входные и выходные данные;
— технология программирования и отладки программы;
— контрольный пример и анализ результатов реализации программы
— приложение: исходные тексты программы.
Требования к оформлению. Пояснительная записка должна быть набрана на компьютере, отформатирована по ширине, распечатана на листах формата А4 (297×210мм) и сброшюрована в папку с прозрачной обложкой. Требования к тексту:
– шрифт Times New Roman, размер шрифта – 14 пунктов, интервалы – 0 пт;
– междустрочный интервал – полуторный, отступ первой строки абзаца – 10 мм;
Использование сложных логических операторов (правил) при описании бизнес-процессов
– все листы нумеруются, лист содержания имеет номер 3.
Дата выдачи задания « » марта 201 г.
Срок предоставления КП к защите « » мая 201 г.
Руководитель _______________________ Бунаков П.Ю.
Содержание
1. Постановка задачи. 5
2. Назначение и цель разработки. 6
3. Разработка проекта. 7
3.1 Алгоритмы решения задачи. 7
3.2 Логическая структура программы. 13
3.3 Входные и выходные данные. 16
3.4 Программные средства. 16
3.5 Проектирование программы. 18
3.6 Структура программы. 21
4. Инструкция пользователю. 22
5. Контрольный пример. 23
Список литературы. 26
Приложение. Исходный текст программы. 27
Введение
В настоящее время в самых разных областях человеческой деятельности компьютерные технологии занимают одно из ведущих мест. Фактически умение пользоваться компьютером — одно из обязательных качеств современного человека. Применение компьютера значительно повышает производительность труда и является объективной предпосылкой для достижения успеха в жизни.
Цели курсовой работы:
— систематизация и закрепление теоретических знаний и практических умений, полученных за время обучения дисциплины «Основы алгоритмизации и программирования»;
— разработка программы для определения через сколько дней студент прочитает весь учебник;
— вывести найденное количество дней и количество страниц, прочитываемых студентом каждый день.
— найти среднее количество ежедневно прочитываемых страниц учебника.
Постановка задачи
Необходимо разработать программу на языке Pascal для решения следующей задачи:
Ввести три числа: S – количество страниц в учебнике, A – количество страниц, прочитанных студентом в первый день, и P – ежедневный процент увеличения количества прочитанных страниц. Каждый день студент прочитывает на P процентов страниц больше, чем в предыдущий день.
Логические выражения, таблицы истинности ,структурная логическая схема
Проанализировав задание, были определены следующие функциональные требования к разрабатываемой программе:
— соблюдение правильности вычислений;
— программа должна иметь простой, но в то же время понятный и наглядный интерфейс, который не должен перегружать ресурсы компьютера;
— ввод исходных данных — с клавиатуры, вывод результата — на экран;
— программа не должна занимать большой объем памяти и не должна требовать специальной установки на жесткий диск компьютера;
— работоспособность приложения в среде Windows.
Назначение и цель разработки
Программа предназначена для определения через сколько дней студент прочитает весь учебник, а также определения среднее количество ежедневно прочитываемых страниц учебника.
Программа может быть использована как в обучающих целях, так и для практического применения.
Цели разработки: систематизация и закрепление теоретических знаний и практических умений, полученных за время обучения дисциплины «Основы алгоритмизации и программирования» и применение их для проектирования программы для поиска среднего количества ежедневно прочитываемых страниц учебника.
Разработка проекта
Алгоритмы решения задачи
Алгоритм решения задачи представлен на рис. 1. «Алгоритм решения задачи»
Рис. 1. «Алгоритм решения задачи»
Алгоритм представляет собой порядок работы программы, визуализацию решения требуемой задачи. Алгоритм понятный обычному пользователю.
В данном алгоритме не описывается механизм работы программы. Язык программирования Pascal прост и понятен, по тому не нуждается в детальной алгоритмизации каждого процесса и оператора.
Логическая структура программы
Рассмотрим логическую структуру программы.
При запуске программы пользователю необходимо ввести:
– «S» количество страниц в книге;
– «A» количество страниц, прочитанных в первый день;
– «P» ежедневный процент увеличения прочитанных страниц в день.
Для данной операции воспользуемся процедурой «read(читать)»
Программа сравнивает текущее значение прочитанных страниц после первого дня, если книга прочитан за 1 день, тогда происходит вывод результата, в котором говорится, что книга прочитана за 1 день.
Для этого используем логические операции «if (если) then(тогда) else(иначе)», сравнивается количество страниц в книге и прочитанной количество страниц в первый день.
Вводится счетчик для определения количества дней, требуемых для прочтения книги.
Если условие не выполняется, книга не прочитана за день, тогда вводится дополнительное значение «i» в котором прибавляется процент «Р» к каждому дню. Открывается цикл «while» увеличения дней, работающий до тех пор, пока текущее количество прочитанных страниц меньше числа страниц в книге. Когда цикл прекращается, происходит вывод результата.
Вывод и информационные сообщения программы выполняются процедурой «writeln(вывод в строчку)»
Входные и выходные данные
Одной из самых важных функций любой программы является ввод и вывод данных. Выводимые данные это то, что сообщается пользователю. Входные данные это то, что пользователь сообщает программе.
Входные данные к программе:
– «S» количество страниц в книге;
– «A» количество страниц, прочитанных в первый день;
– «P» ежедневный процент увеличения прочитанных
– День 1: прочитано страниц;
– Время чтения (дней);
– Среднее количество страниц в день.
Программные средства
Язык программирования ПАСКАЛЬ (PASCAL) получил свое название не от сокращения каких-то слов, как другие языки: он назван так в честь великого французского математика и физика Блеза Паскаля, который в 1642 г. изобрел счетную машину для арифметических операций — паскалево колесо, как назвали её современники.
В 1978 году в Калифорнийском университете в Сан-Диего была разработана система UCSD p-System, включавшая порт компилятора Вирта с языка Паскаль в переносимый p-код, редактор исходных кодов, файловую систему и прочее, а также реализовывавшая значительное число расширений языка Паскаль, такие как модули, строки символов переменной длины, директивы трансляции, обработка ошибок ввода-вывода, обращение к файлам по именам и другое. Впоследствии основные реализации языка Паскаль основывались на этом диалекте.
Основная статья: Object Pascal
В 1986 году фирма Apple разработала объектное расширение языка Паскаль, получив в результате Object Pascal. Он был разработан группой Ларри Теслера, который консультировался с Никлаусом Виртом.
Turbo Pascal и Object Pascal
Основная статья: Turbo Pascal
В 1983 году появилась первая версия интегрированной среды разработки Turbo Pascal фирмы Borland, основывавшаяся на одноимённой реализации Паскаля.
В 1989 году объектное расширение языка было добавлено в Turbo Pascal версии 5.5.
Последняя версия (7.0) была переименована в Borland Pascal.
Объектные средства были позаимствованы из Object Pascal от Apple, языковые различия между объектным Turbo Pascal 5.5 и Object Pascal от Apple крайне незначительны.
Почти в то же самое время, что и Borland, Microsoft выпустил свою версию объектно-ориентированного языка Паскаль. Эта версия Паскаля не получила широкого распространения.
Дальнейшее развитие реализации Паскаля от Borland породило вариант Object Pascal от Borland, впоследствии, в ходе развития среды программирования Delphi, получивший одноимённое название.
Современные версии Object Pascal
Важным шагом в развитии языка является появление свободных реализаций языка Паскаль Free Pascal и GNU Pascal, которые не только вобрали в себя черты множества других диалектов языка, но и обеспечили чрезвычайно широкую переносимость написанных на нём программ (например GNU Pascal поддерживает более 20 различных платформ, под более чем 10 различными операционными системами, Free Pascal обеспечивает специальные режимы совместимости с различными распространёнными диалектами языка, такими как Turbo Pascal (полная совместимость), Delphi и другими).
Начиная с Delphi 2003, создана реализация языка для платформы .Net, хотя разработчики продолжают использовать Delphi более ранних версий.
О коммерческих разработках на Free Pascal, GNU Pascal и TMT Pascal на данный момент известно мало.
На данный момент набирают популярность сайты онлайн программирования на паскале, на одном из таких и был выполнен данный проект: «https://www.onlinegdb.com/online_pascal_compiler»
Проектирование программы
Для качественного проектирования программы, необходимо обратиться к заданию, составленному выше алгоритму решения задачи и логической структуре программы.
В программе выполняются несложные процедуры, операторы и логические условия.
Данная задача была решена с помощью одного условия и цикла.
Структура программы
Введу того, что онлайн версия не является объектно-ориентированной, весь интерфейс программы будет «консолью» с возможностью лишь ввести заданные значения и получить выходные результаты.
Инструкция пользователю
Программа предназначена для определения через сколько дней студент прочитает весь учебник, а также определения среднего количества ежедневно прочитываемых страниц учебника.
Программное обеспечение написано на сайте «https://www.onlinegdb.com/online_pascal_compiler», для работы с сайтом необходимо наличие современного браузера для использования интернет ресурсов.
Минимальные системные требования к программному продукту соответствуют минимальным требованиям к операционной системе.
Для установки программы необходимо 10 КБ свободного места на жестком диске (под исполняемый модуль программы).
После запуска программы на экран будет выведено окно консоли.
Пользователь вводит числа (рис. 2. «Ввод заданных значений»), программа выполняет обработку и выводит результат на экран. (рис. 3. «Вывод результата»).
Рис. 2. «Ввод заданных значений»
Рис. 3. «Вывод результата»
Контрольный пример
Для теста проверим как программа работает в случае, если книга прочитана за день рис. 4. и как программа отрабатывает в стандартных условиях эксплуатации рис. 5, 6, 7, 8.
Рис. 4
Рис. 5 Рис. 6
Рис.7
Заключение
Результатом выполнения курсовой работы было приобретение навыков программирования на языке Pascal при решении задач определения через сколько дней студент прочитает весь учебник, а также определения среднего количества ежедневно прочитываемых страниц учебника.
Разработана программа, которая удовлетворяет всем требованиям, предъявленным ему в задании.
Была освоена технология структурного программирования алгоритмов с использованием средств языка программирования Pascal.
Данная программа продемонстрировала хорошую работоспособность. Имеет интуитивно понятный интерфейс и не должна вызывать затруднений в работе конечного пользователя.
Созданная программа позволит значительно сократить время при определении через сколько дней студент прочитает весь учебник, а также определения среднего количества ежедневно прочитываемых страниц учебника.
Полученные практические результаты показали правильность составления программы.
В результате курсового проектирования были достигнуты все поставленные цели и выполнены задачи.
Список литературы
1. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. Учебное пособие. -М.: КноРус, 2016. -380 с.
2. Бежанова М.М., Москвина Л.А. Практическое программирование. Приемы создания программ на языке Паскаль. –М.: Научный мир, 2010. –270 с.
3. Дагене В.А. и др. 100 задач по программированию. –М.: Просвещение, 1993. –255 с.
4. Зеленяк О.П. Практикум программирования на Turbo Pascal. Задачи, алгоритмы, решения. -М.: ДМК, -2007. -311 с.
5. Зубов В.С. Программирование на языке Turbo Pascal. –М.: Филинъ, 2007. –304 с.
6. Поляков Д.Б., Круглов И.Ю. Программирование в среде Турбо Паскаль / Справочно–методическое пособие. –М.: КноРус, 2012. –506 с.
7. Потопахин В.В. Turbo Pascal. Освой на примерах. –СПб.: БХВ-Петербург, 2015. -240 с.
8. Эллиот Б. Коффман. Turbo Pascal. –М.: Вильямс, 2012. -896 с.
Дата добавления: 2019-07-15 ; просмотров: 1277 ; Мы поможем в написании вашей работы!
Источник: studopedia.net
КОНСТРУКТОРСКАЯ ЧАСТЬ. Логическая структура программы
§ Вес ребра (вес определяется исходя из длины ребра и его загруженности).
o Текущее положение машины
o Текущее состояние машины (ускорение или замедление машины, а так же ее скорость)
Чтобы перевести систему в новое состояние необходимо:
· Выполнить расчет новых текущих параметров машин с учетом алгоритма их поведения
· Вычислить новые положения машин с учетом вычисленных на предыдущем этапе параметров (ускорение, замедление)
· Перевести текущее время системы в новое значение t’
Непрерывно переводя систему в новое положение, получаем непрерывный процесс изменения состояния системы от времени.
2 Структура классов
Для моделирования структуры проезжих частей и допустимых траекторий движения на перекрестке используется направленный граф. Вершины графа — точки слияния траекторий, а ребра графа — траектории движения на данном участке полосы.
Класс vertex — описывает отдельный узел графа.
· double X,Y; — координаты для отображения узла на экране.
· TList *s_owners; — список ребер, исходящих из этой вершины.
· TList *e_owners; — список ребер, заканчивающихся в этой вершине.
· bool checked; — флаг проверки, используемый в алгоритме Дейкстры для поиска пути
· double W; — текущая цена пути до этой вершины, используется в алгоритме Дейкстры
· bool is_open; — флаг, показывающий, разрешен ли в настоящий момент проезд через эту вершину (состояние светофора, влияющего на эту вершину)
· TDateTime LastCh; — время последнего изменения состояния светофора
· int period_in_msec; — период работы светофора, принимает положительные значения и -1. Если значение данного параметра равно -1, значит данная вершина всегда открыта (не регулируется светофором)
· float closed_to_per; — соотношение времени закрытия светофора к его периоду работы в процентах.
· bool main; — принадлежность к «главной» траектории на перекрестке, имитирует знак «главная дорога».
· bool in_out; — флаг, показывающий, является ли данная вершина въездом на перекресток или выездом с перекрестка.
· vertex::vertex(); — конструктор вершины
· int vertex::time_to_change(); — функция, возвращает время, оставшееся до изменения состояния светофора
Структура edge — ребро графа.
· double r_length; — длина ребра в метрах.
· vertex *start; — вершина, являющаяся началом этого ребра.
· vertex *end; — вершина, являющаяся концом этого ребра.
· double angles[2]; — углы направлений входящего и исходящего ребер.
· double angle; — угол направления данного ребра
· TList *cars; — динамический список машин, находящихся на ребре.
· TList *cross_pts; — список пересечений с другими ребрами, не являющихся вершинами.
· bool linear; — флаг, показывающий, является ли ребро прямой или дугой.
· TColor C; — цвет для отображения ребра на экране
· int w; — динамический вес ребра (зависит от плотности потока на ребре)
· double scale; — масштаб отображения
· void edge::get_point(double p, double Y); — функция, возвращает переменных X и Y значения координат в точке p траектории. (р изменяется от 0 до 1, 0 — начало ребра, 1 — конец ребра).
Структура e_cross — информация о пересечении ребер, не являющемся вершиной.
· double p; — положение пересечения на первом ребре.
· edge *E; — первое ребро
· double p_; — положение пересечения на втором ребре
· edge *E_; — второе ребро.
· bool you_major; — флаг приоритета первого ребра над вторым.
· bool finding; — флаг, отмечающий, что в данный момент на графе производится поиск пути одной из его машин. Если данный флаг установлен в значение истины, параметры вершин и ребер графа изменять нельзя.
· double scale; — масштаб отображения графа.
· TList *Verts; — динамический список вершин графа
· TList *Edges; — динамический список ребер графа
· TList *Cars; — динамический список машин, находящихся на графе
· graph::graph(); — конструктор графа
· void graph::add_v(vertex *V); — добавить вершину V в граф
· void graph::connect_v(vertex *V1, vertex *V2, bool l); — связать две вершины V1 и V2 ребром, если флаг l — истина — ребро является прямой, иначе — ребро является дугой.
· void graph::draw(); — функция, отображающая граф и все машины на экране.
· void graph::reconnect(); — функция, проверяющая связность графа и правильность параметров отображения ребер.
· TList *graph::path(vertex *V1, vertex *V2); — функция, возвращает список вершин, через которые проходит маршрут между вершинами V1 и V2.
· bool graph::is_reachable(vertex *V1, vertex *V2); — проверяет, достижима ли вершина V2 из вершины V1.
· void graph::find_crosses(); — найти все пересечения ребер
· TList *graph::find_cross_pts(edge *E); — найти пересечения для ребра Е.
Класс car — класс описывает отдельную машину и реализует ее поведение.
· edge *line; — текущее ребро
· edge *next_line; — следующее ребро маршрута
· vertex *Aim; — целевая вершина
· vertex *start; — стартовая вершина
· TList *otherCars; — указатель на список всех машин в системе
· TList *path_edges; — список ребер, составляющих путь следования к целевой вершине
· bool pomeha; — флаг наличия помехи
· bool stop_on_red; — флаг остановки на светофоре
· double place — текущее положение на ребре
· int e_index; — номер позиции на ребре
· int cX,cY; — координаты для отображения
· car *main_car; — указатель на машину, представляющую собой помеху
· e_cross *danger_cross; — пересечение, на котором существует помеха.
· float max_speed; — максимальная скорость в м/мсек
· float curr_speed; — текущая скорость в м/мсек
· float max_uskor; — максимальное ускорение в м/мсек2
· float max_zamedl; — максимальное замедление в м/мсек2
· float curr_uskor; — текущее ускорение в м/мсек2
· float curr_zamedl; — текущее замедление в м/мсек2
· TDateTime PrevTime; — время последнего изменения состояния
· graph *road; — указатель на граф, содержащий текущую траекторию
· car::car(double m_s, double m_u, double m_z, double c_s, vertex *Start, vertex *Finish, graph *Road, TList *otCars); — конструктор машины, параметры m_s — максимальная скорость, m_u — максимальное ускорение, m_z — максимальное замедление, c_s — начальная скорость, Start — исходная вершина, Finish — конечная вершина, Road — граф траекторий, otCars — указатель на списокостальных машин.
· void car::start_first_line(vertex *V, vertex *Vn); — получить начальное состояние, в вершине V с целевой вершине Vn.
· void car::get_state(); — вычислить новое состояние.
· void car::move(); — перейти в новое состояние.
· void car::get_next_line(double Ln); — перейти на новую траекторию
· void car::draw(); — отобразить машину
· double car::dX_now(); — получить текущее смещение между текущим и следующим состоянием
· double car::next_pos_now(); — получить значение следующего положения машины на траектории.
· double car::crit_dist(); — получить критическую дистанцию для данной машины
· double car::dist_by_time(double accel, double time_ms); — определить путь, пройденный с указанным ускорением, за указанное время.
· double car::dist_to_stop(double accel); — определить тормозной путь с заданнымзамедлением.
· double car::accel_by_dist_to_stop(double Ln); — получить ускорение необходимое для того, чтобы остановиться на указанном отрезке.
· double car::accel_by_next_car(double s_next, double dist41, double realdist); — получить ускорение для коррекции состояния по следующей машине (следование за лидером)
· double car::time_for_dist(double dist); — определить время прохождения дистанции
· double car::check_distance(double — скорректировать состояние относительно скорости впереди едущей машины для соблюдения оптимальной дистанции.
· double car::nearest_car_dist(); — определить дистанцию до ближайшей машины впереди на текущей траектории.
· void car::follow(); — определить состояние с учетом только следования за лидером
· void car::is_danger(); — определить состояние с учетом помех
· void car::is_not_danger(); — определить состояние с учетом существующей помехи, проверить условие отмены помехи.
· void car::check_light(); — проверить ближайший светофор впереди
· car *car::take_prev_car(double — получить указатель на идущую сзади машину
Источник: studbooks.net
Общие сведения
Программа именуется «реализация метода Гаусса». Для нормального функционирования программы необходимо следующее программное обеспечение:
операционная система MS-Windows XP;
Пакет программ Microsoft Visual Studio 2010.
Программа написана на языке высокого уровня Си.
Функциональное назначение
Программа предназначена для решения системы линейных уравнений методом Гаусса.
Пусть исходная система порядка n выглядит следующим образом:
Первое, что надо сделать – проверить коэффициенты на равенство нулю, по меньшей мере хотя бы один из коэффициентов должен быть отличен от нуля. Если они все равны нулю, то у системы нет решений Предположим, что 1 из коэффициентов отличен от нуля, но первый коэффициент ( равен нулю, тогда нужно делать перестановку уравнений, пока не будет отличен от нуля.
Затем вводим множитель = , умножаем первое уравнение системы на и вычитаем из второго уравнения, тогда получим новое второе уравнение:
; где j=1, …, n – номер столбца.
Потом тоже самое проделываем с другими строками:
; где i=3,…,n – номер уравнения из которого исключается неизвестное; j=1,…,n – номер столбца.
В результате получаем новую систему:
Новая система полностью эквивалентна старой системе, за исключением того что во всех строках системы, кроме первой, отсутствует , то есть мы имеем n-1 уравнение с n-1 неизвестным.
Затем проделываем те же самые действия с новой системой порядка n-1:
Затем вводим множители , где i=k+1,…,n, k-е уравнение системы на этот множитель и вычитаем из i-го уравнения, тогда элементы этого уравнения буду находиться по формулам:
где i=k+1,…,n – номер уравнения, которое вычитается из остальных, j=k,…,n – номер столбца.
В результате получим систему вида:
Процедура приведения системы к треугольному виду называется прямым ходом.
Затем мы проверяем коэффициент и элемент на равенство нулю, если они оба равны нулю, то у системы бесконечно много решений, если , то у системы нет решений, если отличен от нуля, то у системы единственное решение, и в этом случае корни вычисляются следующим образом:
Процедура нахождения корней называется обратным ходом.
- Порядок системы n должен быть целым положительным числом;
Описание логической структуры
Описание логической структуры программы представлено схемой алгоритма.
Схема алгоритма функции main().
Схема алгоритма функции vvodstr(a[100], k).
Схема алгоритма функции preobr(a[100], n).
3.1 Руководство пользователя
После запуска программы на выполнение на экране появится сообщение:
«Введите порядок системы: n=», — Пользователю необходимо ввести значение n на клавиатуре и завершить ввод клавишей (Рисунок 1).
После этого на экране появится сообщение: «Введите коэффициент a11 системы: », — Пользователю необходимо ввести нужно значение на клавиатуре и завершить ввод клавишей . Аналогично Пользователь должен ввести остальные элементы системы (Рисунок 2).
Затем на экране появится введенная Пользователем система и сообщение: «Нажмите Y, если хотите редактировать систему, или N, чтобы продолжить», — Пользователю необходимо нажать клавишу , чтобы редактировать систему, или клавишу , чтобы продолжить .
Если Пользователь нажал клавишу , то на экране появится сообщение:
Затем на экране появится сообщение: «Введите номер этого элемента в уравнении (j>0, j. Если номера введены корректно, то Пользователю будет предложено ввести новое значение редактируемого элемента (Рисунок 3). Затем снова будет предложено нажать клавишу , чтобы редактировать систему, или клавишу , чтобы продолжить.
Если Пользователь нажал клавишу , то на экране появится сообщение: «Нажмите на любую клавишу для вычисления корней», — Пользователю необходимо нажать на любую клавишу на клавиатуре для начала процедуры вычисления корней. Затем, если у системы есть решения, программа будет приводить матрицу системы к треугольному виду, и потом на экране появится ответ (Рисунок 4).
После этого Пользователю будет предложено сделать выбор: закрыть программу (нажав на клавишу ) или запустить заново (нажав любую другую клавишу).
3.2 Руководство программиста
В программе использованы следующие процедуры и функции:
А) vyvod() – функция для вывода системы уравнений.
Целочисленная переменная n (тип int) – порядок системы;
матрица действительных элементов system[ ][ ] (тип double) – расширенная матрица системы.
Выходные данные: отсутствуют.
Вызывается из main() и из vychislenie().
Б) vychislenie() – функция для вычисления корней системы методом Гаусса.
Целочисленная переменная n (тип int) – порядок системы;
массив действительных элементов x[] (тип double) – содержит корни системы;
матрица действительных элементов system[ ][ ] (тип double) – расширенная матрица системы.
Выходные данные: отсутствуют.
Вызывается из main().
- Используемые технические средства
Для создания программы использовался компьютер на платформе ЭВМ IBM PC, с процессором Intel Pentium 4, тактовой частотой 3,06Ггц, оперативной памятью 512Мб, под управлением операционной системы Windows XP.
- Вызов и загрузка
Для загрузки данной программой необходимо запустить файл «Гаусса.cpp» из среды Microsoft Visual Studio. На экране появится текст программы. Для запуска программы на исполнение пользователю необходимо нажать комбинацию клавиш Ctrl+F5. Вызов программы производится с жесткого диска. Объем программы составляет 28,5 Кбайт.
Входными данными являются:
Целая переменная n (тип int) – порядок системы;
матрица действительных элементов system[ ][ ] (тип double) – матрица системы.
Матрица действительных элементов system[ ][ ] (тип double) – матрица системы;
массив действительных элементов x[ ] (тип double) – корни системы.
- Контрольные примеры
Проведём следующие действия:
Из строки № 2 вычтем строку № 1 (Строка 2 — строка 1);
из строки № 3 вычтем строку № 1 умноженную на 2 (Строка 3 — 2 × строка 1);
из строки № 4 вычтем строку № 1 (Строка 4 — строка 1).
Проведём следующие действия:
К строке № 3 прибавим строку № 2 (Строка 3 + строка 2);
строку № 4 поделим на 3 (Строка 4 = строка 4 / 3).
Проведём следующие действия:
Строку № 4 поставим на место строки № 2;
строку № 3 поставим на место строки № 4;
строку № 2 поставим на место строки № 3.
Проведём следующие действия:
К строке № 3 прибавим строку № 2 умноженную на 6 (Строка 3 + 6 × строка 2).
Теперь начинаем вычисление корней:
Результат выполнения программы:
Проведём следующие действия:
К строке №2 прибавим строку №1, умноженную на -2 (Строка 2 + (-2) × строка 1);
к строке №3 прибавим строку №1, умноженную на -4 (Строка 3 + (-4) × строка 1);
к строке №4 прибавим строку №1, умноженную на -5 (Строка 3 + (-4) × строка 1).
Проведём следующие действия:
К строке №3 прибавим строку №2, умноженную на -1 (Строка 3 + (-1) × строка 2).
В третьей строке все элементы равны нулю, а элемент не равен нулю, значит система не имеет решений.
Ответ: решений нет.
Результат выполнения программы:
Проведём следующие действия:
К строке №2 прибавим строку №1, умноженную на -2 (Строка 2 + (-2) × строка 1);
к строке №3 прибавим строку №1, умноженную на -4 (Строка 3 + (-4) × строка 1);
к строке №4 прибавим строку №1, умноженную на -5 (Строка 3 + (-4) × строка 1).
Проведём следующие действия:
К строке №3 прибавим строку №2, умноженную на -1 (Строка 3 + (-1) × строка 2).
В третьей строке все элементы равны нулю, значит система имеет бесконечно много решений.
Результат выполнения программы:
Проведём следующие действия:
Поменяем местами строку № 1 и строку № 4.
Проведём следующие действия:
Из строки № 2 вычтем строку № 1 умноженную на 2 (Строка 2 — 2 ×
из строки № 3 вычтем строку № 1 умноженную на 2 (Строка 3 — 2 ×
из строки № 4 вычтем строку № 1 умноженную на 3 (Строка 4 — 3 ×
Проведём следующие действия:
Строку № 3 умножим на -1 (Строка 3 = строка 3 * -1);
поменяем местами строку № 2 и строку № 3.
Проведём следующие действия:
К строке № 3 прибавим строку № 2 умноженную на 3 (Строка 3 + 3 × строка 2);
к строке № 4 прибавим строку № 2 умноженную на 2 (Строка 4 + 2 × строка 2).
Проведём следующие действия:
Строку № 4 поделим на -3 (Строка 4 = строка 4 / -3);
поменяем местами строку № 3 и строку № 4.
Проведём следующие действия:
К строке № 4 прибавим строку № 3 умноженную на 7 (Строка 4 + 7 × строка 3).
Теперь начинаем вычисление корней:
Результат выполнения программы:
Источник: studfile.net