230101_ВС_ЛР

Министерство образования и науки Российской Федерации
Государственное образовательное учреждение
Высшего профессионального образования
“Кубанский государственный технологический
университет”



Кафедра информатики










ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ.
ЛАБОРАТОРНЫЙ ПРАКТИКУМ

для студентов всех форм обучения специальности 230101 - Вычислительные машины, комплексы, системы и сети
(8, 9 семестры)














Краснодар
2010
Составитель: канд. техн. наук, доц. Р. А. Дьяченко



Вычислительные системы. Лабораторный практикум
Для студентов всех форм обучения специальности 230101- Вычислительные машины, комплексы, системы и сети / Сост.
Р.А.Дьяченко; Кубан. гос. технол. ун-т. Кафедра информатики. – Краснодар: Издат. КубГТУ, 2010. - 54 с.



Лабораторный практикум состоит из описания лабораторных работ по изучению технологий разработки вычислительных систем и составлен в соответствии с рабочей программой курса “Вычислительные системы” для студентов специальностей 230101.
В лабораторном практикуме рассмотрены вопросы исследования и проектирования программного обеспечения вычислительных систем на базе новых информационных технологий. Даны основные сведения по базовым алгоритмам и структурам данных, языку программирования C#, изложены основные методики работы в визуальных средах создания приложений.
Лабораторный практикум содержат как теоретические, так и практические сведения по работе на компьютере.
Для студентов всех форм обучения.





Печатается по решению Редакционно-издательского совета Кубанского государственного технологического университета.



Рецензенты:
канд. техн. наук, проф. каф. Безопасности информации Бухонский М.И.(КВВУ (ВИ) им. С.М.Штеменко,
канд. техн. наук, доц. каф. Информатики Ю.А. Кабанков (КубГТУ)
Содержание
13 TOC \o "1-3" \h \z \u 1413 LINK \l "_Toc275332748" 14Содержание 13 PAGEREF _Toc275332748 \h 1431515
13 LINK \l "_Toc275332749" 14Введение 13 PAGEREF _Toc275332749 \h 1441515
13 LINK \l "_Toc275332750" 14Лабораторная работа №1 13 PAGEREF _Toc275332750 \h 1461515
13 LINK \l "_Toc275332751" 14Лабораторная работа №2 13 PAGEREF _Toc275332751 \h 14191515
13 LINK \l "_Toc275332752" 14Лабораторная работа №3 13 PAGEREF _Toc275332752 \h 14231515
13 LINK \l "_Toc275332753" 14Лабораторная работа №4 13 PAGEREF _Toc275332753 \h 14281515
13 LINK \l "_Toc275332754" 14Лабораторная работа №5 13 PAGEREF _Toc275332754 \h 14351515
13 LINK \l "_Toc275332755" 14Лабораторная работа №6 13 PAGEREF _Toc275332755 \h 14391515
13 LINK \l "_Toc275332756" 14Лабораторная работа №7 13 PAGEREF _Toc275332756 \h 14451515
13 LINK \l "_Toc275332757" 14Лабораторная работа №8 13 PAGEREF _Toc275332757 \h 14511515
13 LINK \l "_Toc275332758" 14Список литературы 13 PAGEREF _Toc275332758 \h 14531515
15
Введение
В настоящее время развитие современной техники, прежде всего, характеризуется широчайшим проникновением вычислительной техники в процессы принятия решения в сложных системах. Программные и технические средства различного уровня и масштаба выполняют значительное число отдельных процедур и начинают эффективно использоваться для составления наборов процедур и контроля за ходом решения задачи в целом. Особое место при анализе и принятии решения занимают специализирующиеся на вычислениях информационные системы.
Дисциплина "Вычислительные системы" имеет целью ознакомить студентов с основными понятиями и моделями теории вычислительных систем, основами компьютерных технологий и алгоритмов вычислений, моделями и структурами данных, внутренними структурами современных операционных систем; обучить студентов основным принципам программирования на языке C#, применению эффективных вычислительных алгоритмов для решения практических задач.
Большую, во многом определяющую роль в курсе имеет комплекс лабораторных работ, главными задачами которого являются обучение студентов алгоритмам реализации вычислительных процессов и алгоритмам обработки данных, изучению новых технологий разработки программного обеспечения ВС. В процессе такого обучения студенты получают навыки использования различных источников информации как во внутреннем, так и в международном информационном пространстве, а также наглядно убеждаются в эффективности компьютерных методов решения сформулированных задач. При этом основное внимание уделяется освоению студентами современных компьютерных технологий на материале проблемной среды из области их будущей профессиональной деятельности.
Лабораторный практикум построен на принципе последовательного изучения основных теоретических положений с развитием и закреплением знаний и навыков работы в современных системах разработки программного обеспечения, с использованием языков программирования Pascal и C#.
Структурно лабораторный практикум объединяет восемь лабораторных работ, каждая из которых содержит теоретический материал, порядок выполнения работы и оформления результатов. Результаты работы представляются, как правило, в виде файлов, формат и наименование которых определяются требованиями по оформлению результатов.
Каждая работа заканчивается контрольными вопросами, позволяющими провести самоконтроль и укрепить теоретические знания и практические навыки.
Лабораторная работа №1
Тема работы: "Упорядочивание (сортировка) массивов"
Краткий справочный материал и примеры
Выполнение лабораторной работы направлено на освоение основных приемов использования массивов, методов доступа к элементам массивов, их реорганизации и модификации. В качестве практической проблемы, требующей решения, рассматривается известная задача сортировки (упорядочивания) массива в порядке возрастания (убывания) его элементов. При решении этой задачи требуется исходный массив, содержащий произвольные целые числа, преобразовать к виду, когда каждый элемент массива находится перед другим элементом этого массива, если его значение меньше (больше), чем значение сравниваемого элемента.
В данной лабораторной работе необходимо изучить ряд известных алгоритмов сортировки и создать комплекс программ, реализующий
линейный поиск элемента в массиве;
метод двоичного поиска элемента в упорядоченном массиве;
метод сортировки выбором;
метод сортировки пузырьком;
метод сортировки включением;
метод быстрой сортировки.
Разрабатываемый программный комплекс должен обеспечивать
вывод на экран меню;
ввод исходной информации;
формирования массивов с большим числом элементов;
выбор метода сортировки;
сортировку массива;
печать результата;
замеры времени выполнения сортировок массива.
Демонстрация работоспособности разработанных программных средств должна обеспечивать два варианта контроля: контроль работоспособности каждого из методов и контроль временных характеристик всех реализованных методов.
Данная задача представляет собой упрощенный учебно-ознакомительный вариант широко распространенной задачи сортировки, которая применяется в широком классе реальных задач, и умение и знание алгоритмов сортировки и их особенностей является необходимой частью образования специалиста по программному обеспечению. Наряду с ознакомлением с проблемой упорядочивания массивов и методами ее решения, выполнение работы направлено на достижение следующих учебно-методических целей:
приобретение навыков и приемов использования массивов, доступа к их элементам и преобразований массивов;
практическое освоение принципов модульного программирования (использование процедур и функций);
освоение и изучение встроенных функций языка Zonnon и модуля System (применение генератора псевдослучайных чисел и замеры датчиков времени);
получения навыков сравнительного анализа эффективности разных алгоритмов.
Программа должна обеспечить сортировку массивов размером произвольной длины до 10000 элементов и выводить для контроля:
- при небольшом количестве элементов (например, менее 20) - неупорядоченный массив и массив после сортировки для каждого из предложенных алгоритмов;
- при значительном объеме данных (более 20) выводить время сортировки одного и того же массива для всех четырех предложенных алгоритмов.
Содержимое массива рекомендуется формировать с помощью генератора псевдослучайных чисел, замеры времени производить средствами модуля System (Random, DateTime).
В ходе выполнения лабораторной работы предполагается реализация методов линейного и двоичного поиска элемента массива и разработка программ для четырех широко используемых алгоритмов сортировки:
метод выбора;
метод пузырька;
метод включения;
метод быстрой сортировки.
Для простоты изложения описания алгоритмов будут проводиться на примере задач сортировки массивов по возрастанию.
Поиск элемента массива на основе линейного просмотра
Результатом работы алгоритма линейного поиска значения Val в массиве А являются индекс Pos и логическая переменная ResultOk, которая принимает значение TRUE, если такой элемент содержится в массиве А, и FALSE - в противном случае. Индекс Pos принимает значение, равное номеру искомого элемента, если такой найден, и значение, равное -1 - в противном случае.
Алгоритм линейного поиска
Шаг 1. Полагается Pos:=-1 и ResultOk:=FALSE, и значение переменной цикла J:=0.
Шаг 2. Если A[J]=Val, то переменным Pos и ResultOk присваиваются соответственно значения Pos:=J, ResultOk:=TRUE и алгоритм завершает работу. В противном случае значение переменной цикла увеличивается на единицу J:=J+1.
Шаг 3. Если J < Last, где Last - число элементов массива А, то выполняется Шаг 2, в противном случае - работа алгоритма завершена.
Конец алгоритма.
[ Cкачайте файл, чтобы посмотреть картинку ]

Метод двоичного поиска
Результатом работы алгоритма является индекс Pos, показывающий на место в упорядоченном массиве А с номерами элементов от First до Last, на которое необходимо поставить значение Val так, чтобы вновь образованный массив остался упорядоченным. Формируется в качестве результата и логическая переменная ResultOk, которая принимает значение TRUE, если искомый элемент содержится в массиве А, и - FALSE - в противном случае.
Алгоритм двоичного поиска
Шаг 1. Пока справедливо условие First < Last, выполняется Шаг 2.
Шаг 2. Вычисляется середина массива Middle:= (Last+First) div 2. Если Val равно А[Middle], то полагается First:=Middle и Last:=First , в противном случае проверяется условие - Val больше А[Middle]? Если это условие справедливо, то полагается First:=Middle+1, в противном случае полагается Last:=Middle-1. После чего управление передается на Шаг 1.
Шаг 3. Полагается Pos:=First.
Шаг 4. Проверка успеха поиска элемента Val в массиве. Полагается ResultOk:=FALSE. После чего проверяется, содержится ли элемент со значением Val в массиве, и при положительном ответе на этот вопрос переменной ResultOk присваивается значение TRUE.
Конец алгоритма.
[ Cкачайте файл, чтобы посмотреть картинку ]

Метод сортировки выбором
Исходный массив длиной N разбивается на две части: итог и остаток. Участок массива, называемый итогом, располагается с начала массива и должен быть упорядоченным, а участок массива, называемый остатком, располагается вплотную за итогом и содержит исходные числа не отсортированной части исходного массива. Пусть первый элемент остатка является J-ым элементом массива.
Алгоритм сортировки выбором
Шаг 1. Полагается J:=0, т.е. считается, что итоговый участок - пуст.
Шаг 2. В остатке массива ищется минимальный и меняется местом с первым элементом остатка (J-ым элементом массива). После чего значение J увеличивается на единицу, тем самым расширяя итоговый участок массива (отсортированную часть исходного массива).
Шаг 3. Если J < N-1, то повторяется Шаг 2. В противном случае - конец алгоритма, т.к. итог становится равным всему массиву.
Конец алгоритма.
[ Cкачайте файл, чтобы посмотреть картинку ]

Метод сортировки пузырьком
Аналогично, как и в методе выбора, исходный массив длиной N разбивается на две части: отсортированную (итог) и не отсортированную (остаток). Пусть первый элемент остатка будет J-ым элементом массива.
Алгоритм сортировки пузырьком
Шаг 1. Пусть J:=1 , т.е. итоговый участок состоит из одного элемента.
Шаг 2. Берется первый элемент остатка и перемещается на место в итоговый участок массива так, чтобы итог остался упорядоченным. Первый элемент остатка назовем перемещаемым. Перемещение выполняется путем сравнения перемещаемого элемента с предшествующим ему элементом. Если предшествующий элемент меньше сравниваемого элемента, то процесс перемещения закончен. В противном случае сравниваемые элементы переставляются и, если элемент не достиг начала массива, то повторяется Шаг 2.
Шаг 3. После того, как первый элемент остатка переместился в итоговый участок, увеличивается на единицу значение переменной J, тем самым увеличивая отсортированную часть массива. Если J < N, то управление передается на Шаг 2, в противном случае - работа алгоритма завершена.
Конец алгоритма.
[ Cкачайте файл, чтобы посмотреть картинку ]

Метод сортировки включением
Этот метод похож на метод пузырька. Происходит такое же разбиение массива на отсортированную и не отсортированную части, но перемещение первого элемента остатка на принадлежащее ему место в итоге делается не сравнением двух соседних элементов, а с помощью метода двоичного поиска, который удобно оформить в виде отдельной процедуры.
Алгоритм метода включения
Шаг 1. Пусть J=1 , т.е. итоговый участок состоит из одного элемента.
Шаг 2. Берется первый элемент остатка и перемещается в отсортированную часть массива так, чтобы итоговый участок остался упорядоченным. Делается это с помощью обращения к процедуре двоичного поиска, которая в качестве выходного параметра дает номер элемента массива, на месте которого должен бы находиться перемещаемый элемент. Если этот номер указывает на место в итоговом участке массива, то сдвигаются все элементы итогового участка массива, начиная с этого номера на одно место вправо, а перемещаемый элемент ставится на освободившееся место.
Шаг 3. После того, как первый элемент остатка переместился в итоговый участок, увеличивается на единицу значение переменной J, тем самым увеличивая отсортированную часть массива. Если J < N, то управление передается на Шаг 2, в противном случае - работа алгоритма завершена.
Конец алгоритма.
[ Cкачайте файл, чтобы посмотреть картинку ]
Метод быстрой сортировки
Исходным является массив А с номерами элементов от First до Last. В алгоритме используются еще два индекса массива, обозначенные как Index и ContrIndex. Первый из них всегда указывает на переставляемый элемент, а второй на элемент, который сравнивается по значению с переставляемым. В процессе вычислений применяются переменная h (равная либо 1, либо -1) - шаг движения индексов навстречу друг другу, используемая для обозначения направления движения индекса ContrIndex, и логическая переменная Condition (равная либо TRUE, либо FALSE), используемая для изменения условия сравнения на противоположное при обратном движении индекса ContrIndex.
Алгоритм быстрой сортировки
Шаг 1. Если First >= Last, то происходит выход из алгоритма. В противном случае полагается h:=1, Condition:=TRUE, Index:=First, ContrIndex:=Last и делаются шаги: Шаг 2 - Шаг 3.
Шаг 2. Пока Index не равно ContrIndex, делаются шаги: Шаг 2а -Шаг 2b.
Шаг 2а. Если справедливо ((A[Index]>A[ContrIndex])=Condition), то переставляются как сами элементы, на которые указывают Index и ContrIndex, (Val:=A[Index], A[Index]:=A[ContrIndex], A[ContrIndex]:=Val), так и сами вспомогательные индексы массивов (Val:=Index, Index:=ContrIndex, ContrIndex:=Val). Затем меняется направление движения (h:= -h) и условие сравнения (Condition: = not Condition). В процессе таких перестановок слева от переставляемого элемента всегда будут находиться меньшие значения, а справа - большие значения.
Шаг 2b. Сдвигается вспомогательный индекс массива ContrIndex навстречу индексу Index , т.е. ContrIndex:= ContrIndex +h.
Шаг 3. Перед выполнением этого шага индексы Index = ContrIndex и элемент A[Index] находится на нужном месте. Т.е. исходный массив разбит на три части: часть массива до этого элемента, значения в котором меньше величины A[Index], часть массива после этого элемента с значениями большими значения A[Index] и сам этот элемент A[Index]. Поэтому для дальнейшего упорядочивания массива достаточно рекурсивно обратиться к алгоритму быстрой сортировки два раза: для первой и второй частей массива. Т.к. длина сортируемых участков массива уменьшается, то в итоге алгоритм конечен и после применения алгоритма массив будет полностью отсортирован.
Конец алгоритма.
[ Cкачайте файл, чтобы посмотреть картинку ]
Задание
В данной лабораторной работе требуется разработать программу, выполняющую следующие действия:
1. Ввод размера массива (или двух - в зависимости от задания)
2. Ввод исходного массива (массивов)
3. Вывод введенных массивов
4. Обработка массива (массивов) в соответствии с вариантом
5. Вывод получившихся массивов
Замечания:
1) Количество элементов в исходных массивов до 20 ШТУК.
2) Элементами массивов являются целые числа.
3) Множества в программах не использовать.
4) После каждого изменения массивов новое состояние необходимо вывести на экран.
5) "Скопировать элементы" элементы из исходного массива добавляются в результирующий массив.
6) "Перенести элементы" элементы из исходного массива добавляются в результирующий массив, после чего удаляются из исходного.
Варианты
Ввести массив А. В массив В скопировать все элементы массива А имеющие четный индекс и четное значение. Массив В отсортировать по убыванию, используя метод выбора.
Ввести массив А. В массив В перенести все элементы массива А имеющие четный индекс и нечетное значение. Массив В отсортировать по возрастанию, используя метод пузырька.
Ввести массив А. В массив В скопировать все элементы массива А, имеющие четный индекс, слева от которых расположены элементы снечетным значением. Массив В отсортировать по возрастанию, используя метод вставок.
Ввести массив А. В массив В перенести все элементы массива А, имеющие четный индекс, справа от которых расположены элементы с нечетным значением. Массив В отсортировать по убыванию, используя метод слияния.
Ввести массив А. В массив В перенести все элементы массива А, имеющие нечетный индекс, справа от которых расположены элементы с нечетным значением, а слева - с четным. Массив В отсортировать по убыванию, используя быструю сортировку.
Ввести массив А. В массив В перенести все элементы массива А, стоящие левее минимального элемента, и имеющие нечетный индекс. Массив В отсортировать по убыванию, используя быструю сортировку.
Ввести массив А. В массив В перенести все элементы массива А, стоящие правее максимального элемента, и имеющие нечетный индекс. Массив В отсортировать по возрастанию, используя метод слияния.
Ввести массив А. В массив В перенести все элементы массива А, стоящие между минимальным и максимальным элементами. Массив В отсортировать по возрастанию, используя метод вставок.
Ввести массив А. В массив В перенести все элементы массива А, имеющие значение больше чем (min+max)/2, где min - значение минимального элемента массива, а mах - значение максимального элемента массива. Массив В отсортировать по убыванию, используя метод пузырька.
Ввести массив А. В массив В перенести все элементы массива А, имеющие значение меньше чем (min+max)/3, где min - значение минимального элемента массива, а mах - значение максимального элемента массива. Массив В отсортировать по убыванию, используя сортировку методом выбора.
Ввести массивы А и В. В массив С скопировать те элементы, которые есть и в массиве А и в массиве В. Из массива В удалить все четные элементы. Массивы А, В и С отсортировать по возрастанию, используя метод выбора.
Ввести массивы А и В. В массив С скопировать те элементы, которые есть в массиве А, но которых нет в массиве В. Из массива А удалить все нечетные элементы. Массивы А, В и С отсортировать по убыванию, используя быструю сортировку.
Ввести массивы А и В. В массив С скопировать те элементы массива А, которых нет в массиве В, и те элементы массива В, которых нет в массиве А. Из массива В удалить все четные элементы. Массивы А, В и С отсортировать по возрастанию, используя сортировку методом слияния.
Ввести массивы А и В. В массив С скопировать те элементы массива А, которых нет в массиве В, и те элементы массива В, которые встречаются в массиве А по крайней мере 2 раза. Из массива А удалить все элементы стоящие левее минимального элемента. Массивы А, В и С отсортировать по убыванию, используя сортировку методом вставок.
Ввести массивы А и В. В массив С скопировать те элементы массива А, которые встречаются в массиве В по крайней мере 2 раза, и те элементы массива В, которые встречаются в массиве А ровно 1 раз. Из массива А удалить все элементы стоящие левее максимального элемента. Массивы А, В и С отсортировать по убыванию, используя сортировку методом пузырька.
Ввести массивы А и В. В массив С перенести те элементы массива А, которые меньше минимального элемента массива В, и те элементы массива В, которые больше максимального элемента массива А. Массивы А, В и С отсортировать по возрастанию, используя сортировку методом выбора.
Ввести массивы А и В. В массив С перенести те элементы массива А, которые больше минимального элемента массива В, и те элементы массива В, которые больше максимального элемента массива А. Массивы А, В и С отсортировать по возрастанию, используя метод пузырька.
Ввести массивы А и В. В массив С перенести те элементы массива А, которые больше максимального элемента массива В, и те элементы массива В, которые меньше максимального элемента массива А. Массивы А, В и С отсортировать по убыванию, используя метод пузырька.
Ввести массивы А и В. В массив С перенести четные элементы массива А, и нечетные элементы массива В. Массивы А, В и С отсортировать по убыванию, используя сортировку методом вставок.
Ввести массивы А и В. В массив С перенести те четные элементы массива А, левее которых стоят элементы с нечетным значением. Также в массив С перенести элемент массива В, который по значению ближе всех к (min+max)/2, где min - значение минимального элемента массива В, mах значение максимального элемента массива В. Массивы А, В и С отсортировать по возрастанию, используя сортировку методом слияния.
Ввести массивы А, В и С. в массив D скопировать те элементы массивов А, В и с, которые встречаются во всех трех массивах. Массивы А, В, С и D отсортировать по возрастанию, используя быструю сортировку.
Ввести массивы А, В и С. в массив D скопировать те элементы массивов А и В, которых нет в массиве С. Массивы А, В, С и D отсортировать по убыванию, используя сортировку методом слияния.
Ввести массивы А, В и С. В массив О перенести из массива А те элементы, левее которых расположены элементы, имеющие значение больше (minB+maxC)/3, где minB - значение минимального элемента массива В, а mахС - значение максимального элемента массива С. Массивы А, В, С и D отсортировать по возрастанию, используя сортировку методом вставок.
Ввести массивы А, В и С. в массив О перенести из массива А те элементы, правее которых расположены элементы, имеющие значение меньше чем (minB+maxC)/2, где minB - значение минимального элемента массива В, а mахС - значение максимального элемента массива с. Массивы А, В, С и D отсортировать по возрастанию, используя сортировку методом пузырька.
Ввести массивы А, В и С. в массив D перенести из массива А те элементы, правее которых расположены элементы, имеющие значение меньше чем (minB+maxC)/2, где minB - значение минимального элемента массива В, а mахС - значение максимального элемента массива С. Из массива С удалить те элементы, которые имеют значение больше максимального элемента массива В. Массивы А, В, С и D отсортировать по убыванию, используя сортировку методом выбора.

Лабораторная работа №2
Тема работы: "Операции с матрицами"
Краткий справочный материал и примеры
Таблица чисел aij вида:
[ Cкачайте файл, чтобы посмотреть картинку ]
состоящая из m строк и n столбцов, называется матрицей размера m*n. Числа aij называются ее элементами. При m=n она называется матрицей n-го порядка.
Операции над матрицами
При умножении матрицы A=(aij) на число k получаем матрицу B=(bij), т.е. kA=B, элементы которой равны bij=kaij.
При сложении матриц A=(aij) и B=(bij) получаем матрицу C=(cij), A+B=C, элементы которой равны cij=aij+bij.
При умножении матриц A=(aij) на матрицу B=(bij) получаем матрицу C=(cij), A*B=C, при этом число столбцов A должно быть равно числу строк матрицы B. Каждый элемент
[ Cкачайте файл, чтобы посмотреть картинку ].
Матрица все элементы которой равны нулю называются нулевой матрицей.
Квадратная матрица у которой по диагонали расположены 1, а на остальных позициях 0 называется единичной матрицей.
В теории вычислительных систем матричную алгебру используют в связи с применением теории графов при исследовании структур систем.
Пример
Умножение матриц:
[ Cкачайте файл, чтобы посмотреть картинку ]
Задание
Задание включает в себя следующие пункты:
Составить программу, реализующую концепцию матриц (в виде класса или записи).
Реализовать процедуры: сложения матриц, умножения на число, умножения матриц, получения степени.
Законспектировать листинг корректно составленной программы (включая комментарии).
Зарисовать блок-схемы всех процедур ( с указанием входов и выходов алгоритма и их типов).
Рассчитать и записать в тетради общее количество операторов, количество операторов условного перехода и цикла в каждой процедуре.
Варианты
Действительные матрицы размером 3х3. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, процедуры ввода, вывода матрицы на экран. Реализовать процедуры нахождения максимума и сумму положительных элементов матрицы.
Действительные матрицы размером 4х4. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения максимума и сумму отрицательных элементов матрицы.
Действительные матрицы размером 5х5. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения количества и суммы элементов матрицы, меньших 2.
Действительные матрицы размером 6х6. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения наибольшего и наименьшего элементов матрицы.
Действительные матрицы размером 7х7. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения суммы и количества элементов больших 1.
Действительные матрицы размером 8х8. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения произведения элементов с нечетными индексами и их количество.
Действительные матрицы размером 9х9. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран. Реализовать процедуры нахождения минимума и суммы положительных элементов матрицы.
Действительные матрицы размером 3х3. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения количества и суммы элементов, больших 2.
Действительные матрицы размером 3х3. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения количества и произведения элементов, больших -2.
Действительные матрицы размером 4х4. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения произведения элементов с четными номерами и их количество.
Действительные матрицы размером 5х5. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения суммы элементов над главной диагональю и максимальный из них.
Действительные матрицы размером 6х6. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения произведения отрицательных элементов над главной диагональю и минимальный из них.
Действительные матрицы размером 7х7. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения суммы положительных элементов под главной диагональю и максимальный из них.
Действительные матрицы размером 8х8. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения произведения элементов с нечетными номерами и их количество.
Действительные матрицы размером 9х9. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения произведения элементов с нечетными номерами, большими -2, и их количество.
Действительные матрицы размером 3х3. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения произведение элементов с четными номерами и их количество.
Действительные матрицы размером 4х4. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения произведения элементов с нечетными номерами, значения которых больше10 и их количество.
Действительные матрицы размером 5х5. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуру поиска элемента массива по ключу.
Действительные матрицы размером 6х6. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения произведения элементов с нечетными номерами, меньшими -2, и их количество.
Действительные матрицы размером 3х3. Дополнительно реализовать процедуры создающие нулевые, единичные матрицы, матрицы со случайными элементами, процедуры ввода, вывода матрицы на экран, транспонирования. Реализовать процедуры нахождения количества и произведения элементов, больших 0.
Примечание. При наличии в используемом ЯП возможности перегрузки операторов, реализовать процедуры сложения, умножения матриц на число, умножения и т.д. перегрузкой соответствующей операции.

Лабораторная работа №3
Тема работы: "Графы"
Краткий справочный материал и примеры
Принцип представления структуры в виде графа весьма прост. Элементам системы при решении одних задач ставят в соответствие ребра графа, а связям вершины графа. При решении других задач поступают иначе: элементам ставят в соответствие вершины графа, а связям ребра графа. Граф, полученный в первом случае, называется реберным, во втором случае, вершинным.
Рассмотрим некоторые основные определения и понятия из теории графов, необходимые при решении задач структурного анализа БСУ.
Определение графа, виды графов
Пусть определено некоторое множество элементов V. Граф G = G (V) считается определенным, если задано некоторое семейство сочетаний элементов или пар вида Е = (а, b), где а, b V, указывающее, какие элементы считаются связанными. В соответствии с геометрической интерпретацией пара Е = (а, Ь) называется ребром, а элементы а, b концевыми точками ребра или вершинами.
Если порядок расположения концов безразличен, т. е. если Е = (а, b) = (b, а), то говорят, что Е есть неориентированное ребро; если же этот порядок важен, то Е называют ориентированным ребром дугой; при этом а называют начальной вершиной, а b-конечной вершиной.
В теории графов принята также следующая терминология: ребро Е инцидентно вершинам а, b, а вершины а, b инцидентны ребру Е.
Граф, составленный только из неориентированных ребер, называется неориентированным, а граф, составленный только из ориентированных ребер, ориентированным.
Графы, у которых часть ребер ориентированна, часть неориентированна, называются смешанными. Неориентированный граф G может быть превращен в ориентированный при помощи процесса удвоения, состоящего в замене каждого ребра Е парой ребер с теми же концами и приписывании им противоположных ориентации.
Граф называется конечным, если число ребер конечно, и бесконечным в противном случае. Граф, состоящий из изолированной вершины, называется нуль-графом, а граф, ребрами которого являются всевозможные пары для двух различных вершин а, b из V, называется полным графом.
В ориентированном полном графе имеются пары ребер по одному в каждом направлении, соединяющие любые две различные вершины (а, b).
Способы формализованного задания графа
А. Графическое представление. Данный способ является наиболее наглядной формой представления отношений между элементами, однако он не может быть использован при решении задач структурного анализа с использованием ЭВМ.
Б. Матричное представление. Существуют различные формы матричного представления графа G = G (V). Матрица смежности вершин для неориентированного графа имеет вид А = |aij|, где n число вершин в графе, а элементы аij определяется следующим образом:
[ Cкачайте файл, чтобы посмотреть картинку ]
При этом предполагается, что нумерация вершин графа уже проведена. Для неориентированного графа матрица смежности является симметрической, что следует учитывать при использовании ЭВМ для компактного использования оперативной памяти в задачах структурного анализа.
В матрице смежности вершин для ориентированного графа А = |aij| определяется следующим образом:
[ Cкачайте файл, чтобы посмотреть картинку ]
Матрица смежности вершин А является матрицей непосредственных путей графа, имеющих длину, равную 1. Общее число транзитных путей от вершины i к вершине j длиной k может быть получено в результате возведения в k-ю степень матрицы А.
Степень вершины
Число ребер, инцидентных вершине неориентированного графа, называют степенью вершины.
Число дуг ориентированного графа, которые имеют своей начальной вершиной вершину i, называют полустепенью исхода вершины i. Аналогично, число дуг, которые имеют своей конечной вершиной вершину j, называют полустепенью захода вершины j.
При проведении структурного анализа систем очень часто необходимо располагать методикой, позволяющей определять некоторые структурные характеристики систем и давать им количественную оценку. Целесообразность определения таких характеристик состоит в том, что уже на ранней стадии проектирования появляется необходимость оценивать качество структуры системы и ее элементов с позиций общего системного подхода. Рассмотрим некоторые из них.
Связность структуры
Данная количественная характеристика позволяет выявить наличие обрывов в структуре, висящие вершины и др. Наиболее полно количественно связность элементов ориентированного графа определяется матрицей связности С = || Сij ||.
Элементы матрицы С можно вычислить на основе матрицы
[ Cкачайте файл, чтобы посмотреть картинку ].

Элемент Сij = 1, если [ Cкачайте файл, чтобы посмотреть картинку ]
Сij = 0, если [ Cкачайте файл, чтобы посмотреть картинку ]
Структурная избыточность
Структурный параметр, отражающий превышение общего числа связей над минимально необходимым в неориентированных графах, будем называть структурной избыточностью R.
Cтруктурная избыточность R определяется следующим образом:
[ Cкачайте файл, чтобы посмотреть картинку ]

Данная структурная характеристика используется для косвенной оценки экономичности и надежности исследуемых систем. Для систем с максимальной избыточностью, имеющих структуру типа «полный граф», R > 0; для систем с минимальной избыточностью R = 0; для систем несвязных R < 0.
Таким образом, система с большей избыточностью R потенциально более надежна.
Задание
Задание включает в себя следующие пункты:
Составить матрицу соответствующего графа (по вариантам).
Реализовать функцию (для уже имеющегося матричного аппарата) подсчета числа транзитных путей от вершины i к вершине j длиной k.
Реализовать функцию (для уже имеющегося матричного аппарата) подсчета полустепени исхода вершны i.
Реализовать функцию (для уже имеющегося матричного аппарата) подсчета полустепени захода вершны i.
Реализовать процедуру расчета матрицы С.
Реализовать процедуру расчета структурной избыточности R.
Варианты
[ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ]

Лабораторная работа №4
Тема работы: "Динамические структуры данных"
Краткий справочный материал и примеры
Структурированные типы данных, такие, как массивы, множества, записи, представляют собой статические структуры, так как их размеры неизменны в течение всего времени выполнения программы.
Часто требуется, чтобы структуры данных меняли свои размеры в ходе решения задачи. Такие структуры данных называются динамическими, к ним относятся стеки, очереди, списки, деревья и другие. Описание динамических структур с помощью массивов, записей и файлов приводит к неэкономному использованию памяти ЭВМ и увеличивает время решения задач.
Каждая компонента любой динамической структуры представляет собой запись, содержащую по крайней мере два поля: одно поле типа указатель, а второе для размещения данных. В общем случае запись может содержать не один, а несколько укзателей и несколько полей данных. Поле данных может быть переменной, массивом, множеством или записью.
Для дальнейшего рассмотрения представим отдельную компоненту в виде:
[ Cкачайте файл, чтобы посмотреть картинку ]
где поле p - указатель; поле D - данные. Описание этой компоненты дадим следующим образом:
type
Pointer = ^Comp;
Comp = record
D:T;
pNext:Pointer
end;
Здесь T - тип данных. Рассмотрим основные правила работы с динамическими структурами данных типа стек, очередь и список, базируясь на приведенное описание компоненты.
Стеки
Стеком называется динамическая структура данных, добавление компоненты в которую и исключение компоненты из которой производится из одного конца, называемого вершиной стека. Стек работает по принципу LIFO (Last-In, First-Out) - поступивший последним обслуживается первым.
Обычно над стеками выполняется три операции:
1. начальное формирование стека (запись первой компоненты);
2. добавление компоненты в стек;
3. выборка компоненты (удаление).
Для формирования стека и работы с ним необходимо иметь две переменные типа указатель, первая из которых определяет вершину стека, а вторая вспомогательная. Пусть описание этих переменных имеет вид:
var pTop, pAux: Pointer;
где pTop - указатель вершины стека, pAux - вспомогательный указатель.
Начальное формирование стека выполняется следующими операторами:
[ Cкачайте файл, чтобы посмотреть картинку ]
Последний оператор или группа операторов записывает содержимое поля данных первой компоненты.
Добавление компоненты в стек призводится с использованием вспомогательного указателя:
[ Cкачайте файл, чтобы посмотреть картинку ]
Добавление последующих компонент производится аналогично.
Рассмотрим процесс выборки компонент из стека. Пусть к моменту начала выборки стек содержит три компоненты:
[ Cкачайте файл, чтобы посмотреть картинку ]
Первый оператор или группа операторов осуществляет чтение данных из компоненты вершины стека. Второй оператор изменяет значение указателя вершины стека:
[ Cкачайте файл, чтобы посмотреть картинку ]
Как видно из рисунка, при чтении компонента удаляется из стека.
Очереди
Очередью называется динамическая структура данных, добавление компоненты в которую производится в один конец, а выборка осуществляется с другого конца. Очередь работает по принципу FIFO (First-In, First-Out) - поступивший первым обслуживается первым.
Для формирования очереди и работы с ней необходимо иметь три переменные типа указатель, первая из которых определяет начало очереди, вторая конец очереди, третья вспомогательная.
Описание компоненты очереди и переменных типа указатель дадим следующим образом:
Type
PComp=^Comp;
Comp=record
D:T;
pNext:PComp
end;
var pBegin, pEnd, pAux: PComp;
где pBegin - указатель начала очереди, pEnd - указатель конца очереди, pAux - вспомогательный указатель. Тип Т определяет тип данных компоненты очереди.
Начальное формирование очереди выполняется следующими операторами:
[ Cкачайте файл, чтобы посмотреть картинку ]
Добавление компоненты в очередь производится в конец очереди:
[ Cкачайте файл, чтобы посмотреть картинку ]
Добавление последующих компонент производится аналогично. Выборка компоненты из очереди осуществляется из начала очереди, одновременно компонента исключается из очереди. Пусть в памяти ЭВМ сформирована очередь, состоящая из трех элементов:
[ Cкачайте файл, чтобы посмотреть картинку ]
Выборка компоненты выполняется следующими операторами:
[ Cкачайте файл, чтобы посмотреть картинку ]
Линейные списки
В стеки или очереди компоненты можно добавлять только в какой либо один конец структуры данных, это относится и к извлечению компонент.
Связный (линейный) список является структурой данных, в произвольно выбранное место которого могут включаться данные, а также изыматься оттуда.
Каждая компонента списка определяется ключом. Обычно ключ либо число, либо строка символов. Ключ располагается в поле данных компоненты, он может занимать как отдельное поле записи, так и быть частью поля записи.
Основные отличия связного списка от стека и очереди следующие:
для чтения доступна любая компонента списка;
новые компоненты можно добавлять в любое место списка;
при чтении компонента не удаляется из списка.
Над списками выполняются следующие операции:
начальное формирование списка (запись первой компоненты);
добавление компоненты в конец списка;
чтение компоненты с заданным ключом;
вставка компоненты в заданное место списка (обычно после компоненты с заданным ключом);
исключение компоненты с заданным ключом из списка.
Для формирования списка и работы с ним необходимо иметь пять переменных типа указатель, первая из которых определяет начало списка, вторая конец списка, остальные вспомогательные.
Описание компоненты списка и переменных типа указатель дадим следующим образом:
Type
PComp= ^Comp;
Comp= record
D:T;
pNext:PComp
end;
var pBegin, pEnd, pCKey, pPreComp
·, pAux: PComp;
где pBegin - указатель начала списка, pEnd - указатель конца списка, pCKey, pPreComp, pAux - вспомогательные указатели.
Начальное формирование списка, добавление компонент в конец списка выполняется так же, как и при формировании очереди.
[ Cкачайте файл, чтобы посмотреть картинку ]
Для чтения и вставки компоненты по ключу необходимо выполнить поиск компоненты с заданным ключом:
pCKey:=pBegin;
while (pCKey<>NIL) and (Key<>pCKey^.D) DO
pCKey:=pCKey^.pNext;
Здесь Key - ключ, тип которого совпадает с типом данных компоненты. После выполнения этих операторов указатель pСKey будет определять компоненту с заданным ключом или такая компонента не будет найдена.
Пусть pCKey определяет компоненту с заданным ключом. Вставка новой компоненты выполняется следующими операторами:
[ Cкачайте файл, чтобы посмотреть картинку ]
Для удаления компоненты с заданным ключом необходимо при поиске нужной компоненты помнить адрес предшествующей:
pCKey:=pBegin;
while (pCKey<>NIL) and (Key<>pCKey^.D) do
begin
pPreComp:=pCKey;
pCKey:=pCKey^.pNext
end;
Здесь указатель pCKey определяет компоненту с заданным ключом, указатель pPreComp содержит адрес предыдущей компоненты.
Удаление компоненты с ключом Key выполняется оператором:
[ Cкачайте файл, чтобы посмотреть картинку ]
Задание
Составить программу, которая формирует стек, добавляет в него произвольное количество компонент, а затем читает все компоненты и выводит их на экран дисплея. В качестве данных взять строку символов. Ввод данных с клавиатуры дисплея, признак конца ввода строка символов END.
Составить программу, которая формирует очередь, добавляет в нее произвольное количество компонент, а затем читает все компоненты и выводит их на экран дисплея. В качестве данных взять строку символов. Ввод данных с клавиатуры дисплея, признак
Составить программу, которая формирует список, добавляет в него произвольное количество компонент, выполняет вставку и удаление компоненты по ключу, а затем читает и выводит весь список на экран дисплея. В качестве данных взять строку символов. Ввод данных с клавиатуры дисплея, признак конца ввода строка символов END.
Лабораторная работа №5
Тема работы: "Знакомство с языком программирования и средой Visual C#"
Целью лабораторного занятия является освоение модуля №1 изучаемой дисциплины, приобретение навыков практического применения знаний для создания простейших программ с неразветвлённым вычислительным процессом.
В задачи лабораторного занятия входят:
закрепление, углубление и расширение знаний студентов в процессе выполнения анализа алгоритма решаемой задачи;
приобретение умений и навыков использования современных сред разработки программного обеспечения.
Формой выполнения лабораторной работы является поиск оптимальных алгоритмов решения программных задач с целью изучения основ программирования с формированием выводов и заключений.
Задание на лабораторную: Ознакомиться со средой Microsoft Visual C# , решить 3 задачи по вариантам и оформить отчёт.
Задание №1
Задачи на ввод и вывод данных , оператор присваивания , арифметические операторы , стандартные функции . Все входные и выходные данные в заданиях этой группы являются вещественными числами
Задачи по вариантам
1. Даны катеты прямоугольного треугольника a и b. Найти его гипотенузу c и периметр P.
2. Даны два круга с общим центром и радиусами R1 и R2 (R1 > R2). Найти площади этих кругов S1 и S2, а также площадь S3 кольца, внешний радиус которого равен R1, а внутренний радиус равен R2.
3. Дана длина L окружности. Найти ее радиус R и площадь S круга, ограниченного этой окружностью.
4. Даны три точки A, B, C на числовой оси. Точка C расположена между точками A и B. Найти произведение длин отрезков AC и BC.
5. Даны координаты двух противоположных вершин прямоугольника: (x1, y1), (x2, y2). Стороны прямоугольника параллельны осям координат. Найти периметр и площадь данного прямоугольника.
6. Даны координаты трех вершин треугольника: (x1, y1), (x2, y2), (x3, y3). Найти его периметр и площадь, используя формулу для расстояния между двумя точками на плоскости. Для нахождения площади треугольника со сторонами a, b, c использовать формулу Герона:S =(p·(p – a)·(p – b)·(p – c))1/2, где p = (a + b + c)/2 полупериметр.
7. Дано значение температуры T в градусах Фаренгейта. Определить значение этой же температуры в градусах Цельсия. Температура по Цельсию TC и температура по Фаренгейту TF связаны следующим соотношением:TC = (TF – 32)·5/9.
8. Известно, что X кг шоколадных конфет стоит A рублей, а Y кг ирисок стоит B рублей. Определить, сколько стоит 1 кг шоколадных конфет, 1 кг ирисок, а также во сколько раз шоколадные конфеты дороже ирисок.
9. Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (против течения) T2 ч. Определить путь S, пройденный лодкой (путь = время · скорость). Учесть, что при движении против течения скорость лодки уменьшается на величину скорости течения.
10. Скорость первого автомобиля V1 км/ч, второго V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили первоначально движутся навстречу друг другу.
Задание №2
Задачи на целочисленные операции . Все входные и выходные данные в заданиях этой группы являются целыми числами. Все числа, для которых указано количество цифр (двузначное число, трехзначное число и т. д.), считаются положительными
Задачи по вариантам
1. Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Используя операцию деления нацело, найти количество отрезков B, размещенных на отрезке AB.
2. Дано трехзначное число. Найти сумму и произведение его цифр.
3. Дано трехзначное число. Вывести число, полученное при прочтении исходного числа справа налево.
4. Дано трехзначное число. В нем зачеркнули первую слева цифру и приписали ее справа. Вывести полученное число.
5. Дано трехзначное число. В нем зачеркнули первую справа цифру и приписали ее слева. Вывести полученное число.
6. Дано трехзначное число. Вывести число, полученное при перестановке цифр сотен и десятков исходного числа (например, 123 перейдет в 213).
7. Дано целое число, большее 999. Используя только целочисленные операции, найти цифру, соответствующую разряду сотен в записи этого числа.
8. Дни недели пронумерованы следующим образом: 1 понедельник, 2 вторник, , 6 суббота, 7 воскресенье. Дано целое число K, лежащее в диапазоне 1–365, и целое число N, лежащее в диапазоне 1–7. Определить номер дня недели для K-го дня года, если известно, что в этом году 1 января было днем недели с номером N.
9. Даны целые положительные числа A, B, C. На прямоугольнике размера A * B размещено максимально возможное количество квадратов со стороной C (без наложений). Найти количество квадратов, размещенных на прямоугольнике, а также площадь незанятой части прямоугольника.
10. Дан номер некоторого года (целое положительное число). Определить соответствующий ему номер столетия, учитывая, что, к примеру, началом 20 столетия был 1901 год.
Задание №3
Задачи на использование логических операторов , операторов отношения . Во всех заданиях данной группы требуется вывести логическое значение True, если приведенное высказывание для предложенных исходных данных является истинным, и значение False в противном случае. Все числа, для которых указано количество цифр (двузначное число, трехзначное число и т. д.), считаются целыми положительными. Использование IF и оператора "?" недопустимо.
Задачи по вариантам
1. Даны координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8). Проверить истинность высказывания: «Данные поля имеют одинаковый цвет». Если пользователь введёт дважды координаты одной и той же клетки считать решение задачи ложью.
2. Даны координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8). Проверить истинность высказывания: «Ладья за один ход может перейти с одного поля на другое». Если пользователь введёт дважды координаты одной и той же клетки считать решение задачи ложью.
3. Даны координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8). Проверить истинность высказывания: «Король за один ход может перейти с одного поля на другое». Если пользователь введёт дважды координаты одной и той же клетки считать решение задачи ложью.
4. Даны координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8). Проверить истинность высказывания: «Слон за один ход может перейти с одного поля на другое». Если пользователь введёт дважды координаты одной и той же клетки считать решение задачи ложью.
5. Даны координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8). Проверить истинность высказывания: «Ферзь за один ход может перейти с одного поля на другое». Если пользователь введёт дважды координаты одной и той же клетки считать решение задачи ложью.
6. Даны координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8). Проверить истинность высказывания: «Конь за один ход может перейти с одного поля на другое». Если пользователь введёт дважды координаты одной и той же клетки считать решение задачи ложью.
7. Даны целые числа a, b, c, являющиеся сторонами некоторого треугольника. Проверить истинность высказывания: «Треугольник со сторонами a, b, c является прямоугольным».
8. Дано трехзначное число. Проверить истинность высказывания: «Цифры данного числа образуют возрастающую или убывающую последовательность».
9. Дано целое положительное число. Проверить истинность высказывания: «Данное число является нечетным трехзначным».
10. Даны координаты поля шахматной доски x, y (целые числа, лежащие в диапазоне 1–8). Учитывая, что левое нижнее поле доски (1, 1) является черным, проверить истинность высказывания: «Данное поле является белым».
Отчёт по лабораторной работе
Отчёт оформляется на сброшюрованных листах формата А4 (210х297мм) или в электронной версии. Отчёт составляется каждым студентом. Отчёт по лабораторной работе оформляется в соответствии с требованиями СТП 12 570-2006 и должен включать следующие структурные элементы:
1) титульный лист;
2) цель работы;
3) основную часть.
По каждой из решённых задач в отчёте должны быть:
постановка задачи;
словесное обьяснение алгоритма
текст программы;
не менее десяти тестовых примеров. Один из примеров подтверждается скриншотом исполняемой программы в обязательном порядке.
4) выводы;
5) список использованной литературы (при необходимости).
Лабораторная работа №6
Тема работы: "Условные операторы, операторы цикла C#"
Задание на лабораторную: В среде Microsoft Visual C# , решить 5 задач по вариантам и оформить отчёт.
Задание №1
Задачи на использование операторов условия . Осуществить ввод необходимых данных, выполнить реализацию алгоритма с использованием операторов условия, обеспечить вывод полученных результатов. Для решения задачи предварительно составляется блок-схема. Не допускается использование операторов, прерывающих ход программы (break, goto).
Задачи по вариантам
1.Ввести номер года (положительное целое число). Определить количество дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный 366 дней. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 являются). См. также: Високосный год
2.Ввести целочисленные координаты трех вершин прямоугольника, стороны которого параллельны координатным осям. Найти координаты его четвертой вершины. Если пользователь введёт координаты точек так, что нельзя получить прямоугольник со сторонами, параллельными координатным осям, вывести соответствующее сообщение.
3.На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту точку и ее расстояние от точки A.
4.Ввести четыре целых числа A, B, C, D, одно из которых отлично от трех других, равных между собой. Определить порядковый номер числа, отличного от остальных.
5.Ввести три числа А,В,С. Если среди них имеется хотя бы одно четное вывести максимальное из них, иначе - минимальное.
6.Ввести три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию или убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. Вывести новые значения переменных A, B, C.
7.Ввести три числа A, B, C. Найти сумму двух наибольших из них.
8.Ввести три числа A, B, C. Вывести вначале наименьшее, а затем наибольшее из данных чисел.
9.Ввести три числа A, B, C. Вывести среднее из них (то есть число, расположенное между наименьшим и наибольшим).
10.Ввести три целых числа A, B, C. Найти количество положительных и количество отрицательных чисел в исходном наборе.
Задание №2
Задачи на использование операторов варианта. Осуществить ввод необходимых данных, выполнить реализацию алгоритма с использованием операторов варианта, обеспечить вывод полученных результатов. Для решения задачи предварительно составляется блок-схема. Не допускается использование операторов, прерывающих ход программы (break, goto).
Задачи по вариантам
1.Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, предшествующей указанной.
2.Мастям игральных карт присвоены порядковые номера: 1 пики, 2 трефы, 3 бубны, 4 червы. Достоинству карт, старших десятки, присвоены номера: 11 валет, 12 дама, 13 король, 14 туз. Даны два целых числа: N достоинство (6 <= N <= 14) и M масть карты (1 <= M <= 4). Вывести название соответствующей карты вида «шестерка бубен», «дама червей», «туз треф» и т. п.
3.Дано целое число в диапазоне 20–69, определяющее возраст (в годах). Вывести строку-описание указанного возраста, обеспечив правильное согласование числа со словом «год», например: 20 «двадцать лет», 32 «тридцать два года», 41 «сорок один год».
4.Дано целое число в диапазоне 10–40, определяющее количество учебных заданий по некоторой теме. Вывести строку-описание указанного количества заданий, обеспечив правильное согласование числа со словами «учебное задание», например: 18 «восемнадцать учебных заданий», 23 «двадцать три учебных задания», 31 «тридцать одно учебное задание».
5.Дано целое число в диапазоне 100–999. Вывести строку-описание данного числа, например: 256 «двести пятьдесят шесть», 814 «восемьсот четырнадцать».
6.В восточном календаре принят 60-летний цикл, состоящий из 12-летних подциклов, обозначаемых названиями цвета: зеленый, красный, желтый, белый и черный. В каждом подцикле годы носят названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. По номеру года определить его название, если 1984 год начало цикла: «год зеленой крысы». См. также: Китайский гороскоп
7.Составить программу, которая бы присваивала переменной Т значение true, если дата d1,m1 предшествует(в рамках года) дате d2,m2 и значение false иначе(d1 и d2-дата,m1 и m2-месяц). Переменную T распечатать. Год считать невисокосным.
8.Составить программу, которая бы по введённому значению некоторой длины в метрах выводила бы это значение с использованием наиболее подходящей кратной или дольной приставки (км,м,дм,см,мм,мкм,нм) . Подсказка: для нахождения порядка числа использовать десятичный логарифм.
9.Для натурального числа К напечатать фразу "мы нашли К грибов в лесу", согласовав окончание слова "гриб" с числом К. Обратите внимание на особое согласование в случае когда 10<К<20.
10.Составить программу, которая бы реализовала следующий алгоритм: переменной Т присвоить значение true если сочетание D(день) M(месяц) G(год) образует правильную дату, и значение false- иначе(учитывая количество дней в месяце и название месяца). Переменную T распечатать. Примечание: високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 являются). См. также: Високосный год
Задание №3
Задачи на использование операторов цикла for . Осуществить ввод необходимых данных, выполнить реализацию алгоритма с использованием операторов цикла for, обеспечить вывод полученных результатов. Для решения задачи предварительно составляется блок-схема. Не допускается использование операторов, прерывающих ход программы (break, goto).
Задачи по вариантам
1.Ввести целое число N > 1 и две вещественные точки на числовой оси: A, B (A < B). Отрезок [A, B] разбит на N равных отрезков. Вывести H длину каждого отрезка, а также значения функции f(x) = 1 – sin(x) в точках, разбивающих отрезок [A, B]: f(A), f(A + H), f(A + 2H), ..., f(B).
2.Ввести целое число N > 0 и вещественное a > 0. Последовательность вещественных чисел определяется следующим образом xn+1=(xn+a/xn)/2. Считая x0=a вывести первые N членов последовательности. Такой способ применяли еще в древнем Вавилоне для вычисления квадратного корня числа a. После выдачи последовательности распечатать значение квадратного корня из a, вычисленное стандартной функцией. См. также: Квадратный корень , Итерационная формула Герона
3.Ввести целое число N > 1. Последовательность чисел Фибоначчи FK (целого типа) определяется следующим образом: F1 =1, F2= 1, FK=FK-2 + FK-1, K = 3, 4, ... N. Вывести элементы F1, F2, , FN. См. также: Числа Фибоначчи .
4.Ввести целое число N > 0. Последовательность вещественных чисел AK определяется следующим образом: A0=1/0!, AK=1/K!, K=1, 2, ...,N. Вывести сумму последовательности. Примечание К! К–факториал обозначает произведение всех целых чисел от 1 до К. См. также: Факториал , Ряд Тейлора.
5.Логистическое отображение (также известное, как квадратичное отображение или отображение Фейгенбаума) даётся формулой xn+1=r*xn*(1-xn). Считая x0=0.5 распечатать N первых элементов отображения. Величину r, принадлежащую интервалу (0..4) вводит пользователь. (При r>3.6 должна наблюдаться хаотическая последовательность). В качестве тестового примера построить последовательности при разных значениях r. См. также: [ Cкачайте файл, чтобы посмотреть ссылку ]
6.Ввести целое число N > 2. Последовательность целых чисел AK определяется следующим образом: A1=1, A2=2, A3=3, AK=AK–1 + AK–2 – 2*AK–3, K = 4, 5, ... N. Вывести элементы A1, A2, ..., AN.
7.Ввести вещественное число X и целое число N > 0. Найти значение выражения X – X3/(3!) + X5/(5!) – ... + (–1)N*X2*N+1/((2*N+1)!) , которое является приближенным значением функции sin в точке X. Отобразить сумму ряда и рассчитанное с помощью функции sin значения. См. также: Факториал , Ряд Тейлора
8.Ввести целое число N > 0. Найти квадрат данного числа, используя для его вычисления следующую формулу: N2=1 + 3 + 5 + ... + (2*N – 1). После добавления к сумме каждого слагаемого выводить текущее значение суммы (в результате будут выведены квадраты всех целых чисел от 1 до N).
9.Ввести целое число N > 0. Найти значение выражения 1.1 – 1.2 + 1.3 – ... (N слагаемых, знаки чередуются). Условный оператор не использовать.
10.Ввести целое число N > 0. Среди цифр этого числа выделить только чётные, из которых составить другое число и вывести. Например, при N=3854972 ответом будет число 842.
Задание №4
Задачи на использование операторов цикла с постусловием . Осуществить ввод необходимых данных, выполнить реализацию алгоритма с использованием операторов цикла do - while, обеспечить вывод полученных результатов. Использование других операторов цикла недопустимо. Для решения задачи предварительно составляется блок-схема. Не допускается использование операторов, прерывающих ход программы (break, goto).
Задачи по вариантам
1.Ввести два целых числа N1 и N2. Если N1 >N2, найти сумму целых чисел в диапазоне N1 ... N2. Если N2 больше N1, найти сумму целых чисел в диапазоне N2... N1. Если N1 равно N2, вывести на экран соответствующее сообщение.
2.Осуществить ввод последовательности целых чисел, определить третье положительное число и подсчитать количество цифр в нем. Последовательность потенциально не ограничена, окончанием последовательности служит третье положительное число.
3.Осуществить ввод последовательности целых чисел, определить максимальное четное число, его порядковый номер и подсчитать сумму его цифр. Последовательность потенциально не ограничена, окончанием последовательности служит число 0. Если окажется, что чётных чисел в последовательности не было, вывести соответствующее сообщение.
4.Осуществить ввод последовательности целых чисел и сравнить, что больше, сумма положительных или произведение отрицательных. Последовательность потенциально не ограничена, окончанием последовательности служит число 0.
5.Осуществить ввод последовательности целых чисел и определить предпоследнее отрицательное число. Последовательность потенциально не ограничена, окончанием последовательности служит число 0. Если окажется, что в последовательности было менее двух отрицательных чисел, вывести соответствующее сообщение.
6.Осуществить ввод целого числа М. На промежутке от 1 до M найти все числа Армстронга. Натуральное число из n цифр называется числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому числу. Примеры: 153=13 + 53 + 33; 1634=14+64+34+44. См. также: Число Армстронга
7.Ввести действительное число х и натуральное число n. Вычислить x*(x - n)*(x - 2*n)(x - 3*n)(x - n2).
8.Осуществить ввод последовательности целых чисел. Определить, сколько из них и какие принимают наибольшее значение. Последовательность потенциально не ограничена, окончанием последовательности служит число 0.
9.Осуществить ввод последовательности целых чисел в количестве не меньшем двух. Вычислить сумму тех из них, порядковые номера которых - простые числа. Последовательность потенциально не ограничена, окончанием последовательности служит число 0. См. также: Простые числа
10.Осуществить ввод последовательности целых чисел в количестве не меньшем трёх. Определить, сколько из них больше своих "соседей", т.е. предыдущего и последующего чисел. Последовательность потенциально не ограничена, окончанием последовательности служит число 0.
Задание №5
Задачи на использование операторов цикла с предусловием . Осуществить ввод необходимых данных, выполнить реализацию алгоритма с использованием операторов цикла while, обеспечить вывод полученных результатов. Использование других операторов цикла недопустимо. Для решения задачи предварительно составляется блок-схема. Не допускается использование операторов, прерывающих ход программы (break, goto).
Задачи по вариантам
1.Ввести целое число N > 0, являющееся некоторой степенью числа 2: N=2K. Найти целое число K показатель этой степени. Не разрешается использовать логарифм.
2.Ввести целое число N > 0. Используя операции деления нацело и взятия остатка от деления, найти число, полученное при прочтении числа N справа налево
3.Ввести целое число N > 1. Если оно является простым, то есть не имеет положительных делителей, кроме 1 и самого себя, то вывести это число, иначе вывести ближайшее большее простое число. См. также: Простые числа
4.Ввести целое число N > 1. Последовательность чисел Фибоначчи FK определяется следующим образом: F1=1, F2=1, FK=FK–2 + FK–1, K=3, 4, ... . Проверить, является ли число N числом Фибоначчи. Если является, то вывести True, если нет вывести False. См. также: Числа Фибоначчи.
5.Ввести вещественное число e > 0. Последовательность вещественных чисел AK определяется следующим образом: A1=1, A2=2, AK=(AK–2 + 2·AK–1)/3, K = 3, 4, . Найти первый из номеров K, для котороых выполняется условие |AK – AK–1| < e, и вывести этот номер, а также числа AK–1 и AK.
6.Ввести положительные числа A, B, C. На прямоугольнике размера A x B размещено максимально возможное количество квадратов со стороной C (без наложений). Найти количество квадратов, размещенных на прямоугольнике. Операции умножения и деления не использовать.
7.Ввести два целых числа a и b. Вычислить НОД (a,b) - наибольший общий делитель а и b. Делителями называются числа, которые делят без остатка заданное число, кроме единицы и самого этого числа. См. также: Наибольший общий делитель
8.Ввести натуральное (целое неотрицательное) число а и целое положительное число d. Вычислить частное q и остаток r при делении а на d, не используя операций целочисленного деления и нахождения остатка. Разрешается использовать только целые переменные и целочисленные операции.
9.Ввести целые положительные числа A и B. Найти их наибольший общий делитель (НОД), используя алгоритм Евклида: НОД(A, B)=НОД(B, A mod B), если B
· 0; НОД(A, 0)=A, где «mod» обозначает операцию взятия остатка от деления. См. также: Наибольший общий делитель , Алгоритм Евклида
10.Ввести целое число N > 1. Найти первое число Фибоначчи, большее N. Последовательность чисел Фибоначчи FK (целого типа) определяется следующим образом: F1 =1, F2= 1, FK=FK-2 + FK-1, K = 3, 4, ... N. См. также: Числа Фибоначчи .
Отчёт по лабораторной работе
По каждой из решённых задач в отчёте должны быть:
Постановка задачи
Словесное обьяснение алгоритма
Блок-схема
Текст программы с комментариями
Не менее десяти тестовых примеров. Один из примеров подтверждается скриншотом исполняемой программы в обязательном порядке.
Лабораторная работа №7
Тема работы: "Массивы, строки C#"
Задание на лабораторную: В среде Microsoft Visual C# , решить 5 задач по вариантам и оформить отчёт.
Задание №1
Задачи на использование одномерных целочисленных массивов . Условие вида "дан массив" означает, что пользователем вводится величина размерности и все элементы массива с клавиатуры. Осуществить ввод необходимых данных, выполнить реализацию алгоритма, обеспечить вывод полученных результатов. Для решения задачи предварительно составляется блок-схема. Если по ходу решения задачи требуется создание дополнительных массивов, размерность которых изначально неизвестна, необходимо выполнить предварительную обработку исходного массива, для выяснения размерности вновь создаваемого. Не допускается использование операторов, прерывающих ход программы (break, goto).
Задачи по вариантам
1 Даны два массива A и B одинакового размера N. Сформировать новый массив C того же размера, каждый элемент которого равен максимальному из элементов массивов A и B с тем же индексом.
2 Дан целочисленный массив A размера N. Переписать в новый целочисленный массив B все четные числа из исходного массива (в том же порядке) и вывести размер полученного массива B и его содержимое.
3 Дан массив A размера N. Сформировать новый массив B того же размера по следующему правилу: элемент BK равен сумме элементов массива A с номерами от 1 до K.
4 Дан массив A размера N. Сформировать новый массив B того же размера по следующему правилу: элемент BK равен среднему арифметическому элементов массива A с номерами от 1 до K.
5 Дан массив A размера N. Сформировать два новых массива B и C: в массив B записать все положительные элементы массива A, в массив C все отрицательные (сохраняя исходный порядок следования элементов). Вывести вначале размер и содержимое массива B, а затем размер и содержимое массива C.
6 Даны два массива A и B, элементы которых упорядочены по возрастанию. Объединить эти массивы так, чтобы результирующий массив C остался упорядоченным по возрастанию
7 Даны два массива A и B. Распечатать те элементы, которые присутствуют в обоих массивах.
8 Даны два массива A и B. Распечатать те элементы массива А, которых нет в массиве В. Распечатать те элементы массива В, которых нет в массиве А.
9 Даны два массива A и B. Определить которых из них имеет больший диапазон, т.е. разницу между самым большим и самым меньшим значением.
10 Дан целочисленный массив A размера N. Переписать в новый целочисленный массив B все элементы с порядковыми номерами, кратными трем (3, 6, ), и вывести размер полученного массива B и его содержимое. Условный оператор не использовать.
Задание №2
Задачи на исследование серий в одномерных целочисленных массивах . Условие вида "дан массив" означает, что пользователем вводится величина размерности и все элементы массива с клавиатуры. Осуществить ввод необходимых данных, выполнить реализацию алгоритма, обеспечить вывод полученных результатов. Для решения задачи предварительно составляется блок-схема. Если по ходу решения задачи требуется создание дополнительных массивов, размерность которых изначально неизвестна, необходимо выполнить предварительную обработку исходного массива, для выяснения размерности вновь создаваемого. Не допускается использование операторов, прерывающих ход программы (break, goto).
Задачи по вариантам
1 Дан целочисленный массив A размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии количество этих элементов (длина серии может быть равна 1). Сформировать два новых целочисленных массива B и C одинакового размера, записав в массив B длины всех серий исходного массива, а в массив C значения элементов, образующих эти серии.
2 Дан целочисленный массив размера N. Вставить перед каждой его серией элемент с нулевым значением. Серия - это группа подряд идущих одинаковых элементов, длина серии количество этих элементов (длина серии может быть равна 1).
3 Дан целочисленный массив размера N. Вставить после каждой его серии элемент с нулевым значением. Серия - это группа подряд идущих одинаковых элементов, длина серии количество этих элементов (длина серии может быть равна 1).
4 Дан целочисленный массив размера N. Преобразовать массив, увеличив каждую его серию на один элемент. Серия - это группа подряд идущих одинаковых элементов, длина серии количество этих элементов (длина серии может быть равна 1).
5 Дан целочисленный массив размера N. Преобразовать массив, уменьшив каждую его серию на один элемент. Серия - это группа подряд идущих одинаковых элементов, длина серии количество этих элементов (длина серии может быть равна 1).
6 Дано целое число K и целочисленный массив размера N. Удалить из массива серию с номером K. Если серий в массиве меньше K, то вывести массив без изменений. Серия - это группа подряд идущих одинаковых элементов, длина серии количество этих элементов (длина серии может быть равна 1).
7 Дано целое число K и целочисленный массив размера N. Поменять местами первую серию массива и его серию с номером K. Если серий в массиве меньше K, то вывести массив без изменений. Серия - это группа подряд идущих одинаковых элементов, длина серии количество этих элементов (длина серии может быть равна 1).
8 Дано целое число L и целочисленный массив размера N. Заменить каждую серию массива, длина которой меньше L, на один элемент с нулевым значением. Серия - это группа подряд идущих одинаковых элементов, длина серии количество этих элементов (длина серии может быть равна 1).
9 Дан целочисленный массив размера N. Преобразовать массив, увеличив его первую серию наибольшей длины на один элемент. Серия - это группа подряд идущих одинаковых элементов, длина серии количество этих элементов (длина серии может быть равна 1).
10 Дан целочисленный массив размера N. Преобразовать массив, увеличив все его серии наибольшей длины на один элемент. Серия - это группа подряд идущих одинаковых элементов, длина серии количество этих элементов (длина серии может быть равна 1).
Задание №3
Задачи на обработку одномерных целочисленных массивов . Условие вида "дан массив" означает, что пользователем вводится величина размерности и все элементы массива с клавиатуры. Осуществить ввод необходимых данных, выполнить реализацию алгоритма, обеспечить вывод полученных результатов. Для решения задачи предварительно составляется блок-схема. Если по ходу решения задачи требуется создание дополнительных массивов, размерность которых изначально неизвестна, необходимо выполнить предварительную обработку исходного массива, для выяснения размерности вновь создаваемого. Не допускается использование операторов, прерывающих ход программы (break, goto).
1 Дан одномерный целочисленный массив из n элементов. Найти количество различных чисел среди элементов этого массива. Например, если задан массив, состоящий из чисел 10,13,10,18,5,10,5, то ответ будет 4, поскольку различные числа это 10,13,18,5. Рекомендуется использовать ещё один массив для хранения различных чисел.
2 Расставить по возрастанию одномерный целочисленный массив из n элементов. При упорядочивании разрешается менять местами только два соседних элемента. Результат распечатать.
3 Дан одномерный целочисленный массив из n элементов. Определить и распечатать все локальные экстремумы в нём.
4 Дан массив A размера N. Упорядочить его по возрастанию методом сортировки простым выбором: найти максимальный элемент массива и поменять его местами с последним элементом; выполнить описанные действия N – 1 раз, каждый раз уменьшая на 1 количество анализируемых элементов и выводя содержимое массива.
5 Дан целочисленный массив размера N. Удалить из массива все одинаковые элементы, оставив их первые вхождения.
6 Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся менее трех раз, и вывести размер полученного массива и его содержимое.
7 Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся ровно два раза, и вывести размер полученного массива и его содержимое.
8 Дан целочисленный массив размера N. Удалить из массива все соседние одинаковые элементы, оставив их первые вхождения
9 Дан массив A размера N. Не изменяя данный массив, вывести номера его элементов в том порядке, в котором соответствующие им элементы образуют возрастающую последовательность.
10 Дан целочисленный массив размера N. Удалить из массива все одинаковые элементы, оставив их последние вхождения.
Задание №4
Задачи на обработку строк . Условие вида "дана строка" означает, что пользователем вводится строка с клавиатуры. Осуществить ввод необходимых данных, выполнить реализацию алгоритма, обеспечить вывод полученных результатов. Для решения задачи предварительно составляется блок-схема. Не допускается использование операторов, прерывающих ход программы (break, goto).
1 Даны строки S и S0. Проверить, содержится ли строка S0 в строке S. Не использовать стандартные средства для поиска подстрок.
2 Даны строки S и S0. Найти количество вхождений строки S0 в строку S. Не использовать стандартные средства для поиска подстрок.
3 Дана строка S. Разделить строку на отдельные слова не используя стандартные средства для разбиения строк.
4 Дана строка S. Из строки требуется удалить текст, заключенный в фигурные скобки. В строке может быть несколько фрагментов, заключённых в фигурные скобки. Возможно использование вложенных фигурных скобок и, следовательно необходимо, чтобы программа это учитывала.
5 Дана строка S. Найти количество различных букв в ней. Программа должна работать без учёта регистра букв.
6 Дана строка S. Найти количество различных слов в ней. Программа должна работать без учёта регистра букв.
7 Дана строка S. Определить есть ли в строке удвоенные буквы (пара соседствующих одинаковых букв), напечатать слова, содержащие их.
8 Дана строка S (предложение). Найти самое длинное слово в строке не используя стандартные средства для разбиения строк.
9 Дана строка S (предложение). Составить программу, определяющую является ли текст перевёртышем без учёта пробелов.
10 Дана строка. Вывести все слова, у которых первая и последняя буквы одинаковые не используя стандартные средства для разбиения строк.
Задание №5
Задачи на двухмерные массивы . Условие вида "дана матрица" означает, что пользователем вводится с клавиатуры размерность и все элементы. Осуществить ввод необходимых данных, выполнить реализацию алгоритма, обеспечить вывод полученных результатов. Для решения задачи предварительно составляется блок-схема. Не допускается использование операторов, прерывающих ход программы (break, goto).
1 Дана целочисленная матрица размера M х N. Найти номер первого из ее столбцов, содержащих максимальное количество одинаковых элементов.
2 Дана матрица размера M х N. Найти ее строки, элементы которых упорядочены по возрастанию.
3 Дана целочисленная матрица размера M х N. Различные строки матрицы назовем похожими, если совпадают множества чисел, встречающихся в этих строках. Найти строки, похожие на первую строку данной матрицы.
4 Дана целочисленная матрица размера M х N. Найти ее строки, все элементы которых различны.
5 Дана квадратная целочисленная матрица размера M. Написать программу, которая проверяет, является ли введенная с клавиатуры матрица магическим квадратом. Магическим квадратом называется матрица, сумма элементов которой в каждой строке, в каждом столбце и по каждой диагонали одинакова.
6 Дана матрица размера M х N. Упорядочить ее столбцы так, чтобы их последние элементы образовывали убывающую последовательность.
7 Дана матрица размера M х N. Элемент матрицы называется ее локальным максимумом, если он больше всех окружающих его элементов. Поменять знак всех локальных максимумов данной матрицы на противоположный. При решении допускается использовать вспомогательную матрицу.
8 Дана матрица размера M х N. Упорядочить ее строки так, чтобы их минимальные элементы образовывали убывающую последовательность.
9 Дана целочисленная матрица размера M х N. Найти ее строки, содержащие равное количество положительных и отрицательных элементов (нулевые элементы матрицы не учитываются). Если таких строк нет, то вывести соответствующее сообщение.
10 Дана матрица размером m*n, определить количество и координаты особых элементов матрицы. Элемент считается особым, если он больше суммы остальных элементов своего столбца и при этом в его строке слева от него находятся элементы меньше него, а справа больше него. (Особый элемент может быть крайним в строке)
Отчёт по лабораторной работе
По каждой из решённых задач в отчёте должны быть:
Постановка задачи
Словесное обьяснение алгоритма
Блок-схема
Текст программы с комментариями
Не менее десяти тестовых примеров. Один из примеров подтверждается скриншотом исполняемой программы в обязательном порядке.
Лабораторная работа №8
Тема работы: "Файлы C#"
Задание на лабораторную: В среде Microsoft Visual C# , решить 2 задачи по вариантам и оформить отчёт.
Задание №1
Задачи на использование двоичных файлов . Условие вида "дан файл" означает, что пользователем вводится количество элементов и все элементы файла с клавиатуры. Осуществить ввод данных для файла, выполнить реализацию алгоритма обработки и создания нового файла, обеспечить вывод полученных результатов используя отдельные методы . Не допускается использование массивов. Для решения задачи предварительно составляется блок-схема .
1 Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла (серией называется набор последовательно расположенных одинаковых элементов, а длиной серии количество этих элементов). Например, для исходного файла с элементами 1, 5, 5, 5, 4, 4, 5 содержимое результирующего файла должно быть следующим: 1, 3, 2, 1.
2 Дан файл вещественных чисел. Создать файл целых чисел, содержащий длины всех убывающих последовательностей элементов исходного файла. Например, для исходного файла с элементами 1.7, 4.5, 3.4, 2.2, 8.5, 1.2 содержимое результирующего файла должно быть следующим: 3, 2. Последовательность не может иметь длину меньше, чем 2.
3 Дан файл целых чисел. Создать два новых файла, первый из которых содержит четные числа из исходного файла, а второй нечетные (в том же порядке). Если четные или нечетные числа в исходном файле отсутствуют, то соответствующий результирующий файл оставить пустым.
4 Дан файл вещественных чисел. Создать файл целых чисел, содержащий номера всех локальных максимумов исходного файла в порядке возрастания (локальным максимумом называется элемент, который больше своих соседей, самый первый и самый последний элементы не могут считаться локальными максимумами).
5 Дан файл вещественных чисел. Создать на его основе новый файл в котором заменить каждый элемент исходного файла, кроме начального и конечного, на его среднее арифметическое с предыдущим и последующим элементом.
6 Дан файл целых чисел. Создать на его основе новый файл, размером в 15 элементов. Если исходный файл имеет размер больший или равный 15 - выбрать из него только первые 15 элементов. Если исходный файл имеет размер меньше, чем 15 - продублировать его элементы до необходимого количества.
7 Дан файл целых чисел. Создать на его основе новый файл в котором выполнить дублирование всех положительных элементов исходного файла.
8 Дан файл целых чисел. Создать на его основе новый файл в котором заменить каждое положительное число на три нулевых элемента.
9 Дан файл целых чисел. Создать на его основе новый файл в котором после первых трёх наибольших по абсолютной величине чисел вставить нулевой элемент.
10 Дан файл целых чисел. Создать на его основе новый файл в которой занести элементы исходного файла, образующие в сумме с двумя соседними чётное число.
Задание №2
Задачи на использование текстовых файлов . Условие вида "дан файл" означает, что пользователем вводится количество элементов и все элементы файла с клавиатуры. Осуществить ввод данных для файла, выполнить реализацию алгоритма обработки и создания нового файла, обеспечить вывод полученных результатов используя отдельные методы . Для решения задачи предварительно составляется блок-схема.
Отчёт по лабораторной работе
По каждой из решённых задач в отчёте должны быть:
Постановка задачи
Словесное обьяснение алгоритма
Блок-схема
Текст программы с комментариями
Не менее десяти тестовых примеров. Один из примеров подтверждается скриншотом исполняемой программы в обязательном порядке.
Список литературы
Основы теории вычислительных систем. Под. ред. С.А. Майорова. Учеб. пособие для вузов. М., "Высшая школа", 1978.
В.А. Атрощенко и др. Курс лекций по информатике под ред. В.А. Атрощенко / КубГТУ, Краснодар, 2006г.
Иванова Г.С. Технология программирования: Учебник для вузов. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2002.
Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. - М.: "Мир", 1978.
Трахтенброт Б.А. Алгоритмы и машинное решение задач. - М.: Государственное издательство технико-теоретической литературы, 1957
Далека В.Д., Деревянко А.С., Кравец О.Г.,Тимановская Л.Е. Модели и структуры данных. - Харьков:ХГПУ, 2000. - 241с.
Методы сортировок и их реализации: методические указания к выполнению лабораторных работ / сост. и. В. Беляева, К. с. Беляев. Ульяновск: УлГТУ, 2006. - 48 с.

ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ. ЛАБОРАТОРНЫЙ ПРАКТИКУМ

Для студентов всех форм обучения специальности 230101- Вычислительные машины, комплексы, системы и сети



Составители: Дьяченко Роман Александрович






Редактор

Компьютерная верстка Р.А.Дьяченко





Подписано в печать Формат 60х84/16
Бумага оберточная №1 Офсетная печать
Печ. л. Изд. №
Усл. печ. л. Тираж экз.
Уч.-изд. л. Заказ №
Цена руб.



Издательство КубГТУ: 350072, Краснодар, ул. Московская, 2, корп. А

Типография КубГТУ: 350058, Краснодар, ул. Старокубанская, 88/4











13PAGE 14215


























































Блок-схема алгоритма линейного поиска

Приложенные файлы

  • doc 161025
    Размер файла: 707 kB Загрузок: 0

Добавить комментарий