Лабораторные работы. Лабораторная работа 1 графические компоненты языка си
Скачать 207 Kb.
|
ЛАБОРАТОРНАЯ РАБОТА № 1 ГРАФИЧЕСКИЕ КОМПОНЕНТЫ ЯЗЫКА СИ Цель работы – познакомиться с графическим режимом языка Си, функциями и цветом. Научиться строить графики математических функций и управлять движением заданных фигур. Постановка задачи Написать две программы согласно индивидуального варианта. В первом задании построить график функции, используя арифметические циклы, шаг изменения значений рассчитать самостоятельно. Во втором задании смоделировать непрерывное движение заданного объекта, выход из программы осуществлять с помощью клавиши Esc. Варианты заданий
Контрольные вопросы Какие два режима работы в языке Си Вы знаете? В чем их отличие? Какие координаты имеет центр экрана в графическом режиме? Как установить графический режим? За что отвечают параметры функции initgraph()? Какая библиотека предназначена для работы с графическими функциями? Какие видеорежимы Вам известны? Что такое цветовая палитра? Как она зависит от выбранного графического режима? Какие функции предназначены для работы с цветом? Какие функции предназначены для работы с текстом? Какие функции можно использовать, чтобы нарисовать окружность? Какие функции предназначены для рисования различных фигур? Как нарисовать точку? В чем заключается механизм прорисовки движения заданной фигуры? Как закончить работу в графическом режиме? Какие функции предназначены для перемещения позиции курсора из текущей позиции в заданную? ЛАБОРАТОРНАЯ РАБОТА № 2 ФАЙЛЫ Цель работы – познакомиться с функциями для работы с текстовыми и типизированными файлами. Постановка задачи Написать четыре программы согласно индивидуального варианта. Результаты сохранять в новый файл требуемого вида. Для наглядности результата данные выводить на экран компьютера из заданного и полученного файлов. Варианты заданий
Контрольные вопросы Что такое файл? Какие виды файлов Вы знаете? В чем отличие текстового файла от типизированного? Что такое поток? Какая библиотека предназначена для работы с потоком? Что такое признак окончания файла? Для каких файлов он существует? Как инициализировать поток? Что такое структурный тип? Какая функция отвечает за открытие потока? Какие у нее параметры? Какие режимы открытия файла Вы знаете? В чем их отличия друг от друга? Какие ошибки могут возникнуть при открытии файла? В каком случае указатель на поток принимает значение NULL? Какая функция отвечает за закрытие файла? Какие у нее параметры? Сколько раз можно открыть файл в программе? Какие функции используются для работы с вводом-выводом данных файлов? В чем отличие функции fprintf() от функции fread(), а функции fscanf() от fwrite()? Как определить текущую позицию указателя на поток? Как переместить указатель на поток из текущей позиции в заданную? За что отвечает константа EOF? Как и где ее использовать? Какие основные функции для работы с файлами Вы знаете? ЛАБОРАТОРНАЯ РАБОТА № 3 СПИСКИ, СТЕКИ, ОЧЕРЕДИ Цель работы – познакомиться с динамическими структурами данных, научиться создавать абстрактные типы данных, используя понятия списка, стека и очереди. Постановка задачи Написать две программы согласно индивидуального варианта. В первой программе необходимая информация хранится в бинарном файле записей, а для обработки считывается в список. При выходе из программы обработанные данные сохраняются в том же файле. Во второй программе в соответствии с заданным вариантом реализации необходимо создать класс для обработки стека или очереди. Варианты реализаций Разработайте класс, реализующий стек в массиве. Заполнение стека должно производиться с начала массива. Методы класса: добавление элемента в стек, удаление элемента из стека, получение значения с вершины стека, проверка заполнения стека, проверка пустоты стека. Разработайте класс, реализующий стек с помощью указателей. Методы класса: добавление элемента в стек, удаление элемента из стека, получение значения с вершины стека, проверка заполнения стека, проверка пустоты стека, очистка стека. Разработайте класс DualStack, использующий один массив для сохранения двух стеков: один растет с одного конца массива, другой – с другого. Ни один из стеков не должен переполняться до тех пор, пока весь массив не будет заполнен. Методы класса: добавление элемента в стек n, удаление элемента из стека n, получение элемента с вершины стека n, проверка заполнения стека n, проверка пустоты стека n, очистка стека n. Разработайте класс, реализующий очередь в «циклическом» массиве. Поля класса: массив, индексы первого и последнего элементов в очереди. Методы класса: добавление элемента в очередь, удаление элемента из очереди, получение значения из очереди, проверка заполнения очереди, проверка пустоты очереди. Разработайте класс, реализующий очередь в «циклическом» массиве. Поля класса: массив, индекс первого элемента в очереди, количество элементов в очереди. Методы класса: добавление элемента в очередь, удаление элемента из очереди, получение значения из очереди, проверка заполнения очереди, проверка пустоты очереди. Разработайте класс, реализующий очередь с помощью указателей. Методы класса: добавление элемента в очередь, удаление элемента из очереди, получение значения из очереди, проверка заполнения очереди, проверка пустоты очереди. Варианты заданий1.Разработайте класс, реализующий линейный односвязный список. Методы класса: добавление элемента к концу списка, просмотр списка, удаление n-го элемента из списка. Поля записей: автор книги, название книги, год издания, издательство. 2.Напишите программу, которая считывает символьную строку, содержащую три набора скобок: круглые (), угловые <> и квадратные [],- и определяет, правильно ли расставлены в этой строке скобки. Указания: в стек заносить тип скобки (реализация 1). 1.Разработайте класс, реализующий линейный односвязный список. Методы класса: вставка элемента после n-го элемента списка, просмотр списка, удаление из списка каждого второго элемента. Поля записей: номер группы, имя ребенка, его возраст, домашний адрес. 2.Напишите программу, которая считывает символьную строку, содержащую три набора скобок: круглые (), угловые <> и квадратные [],- и определяет, правильно ли расставлены в этой строке скобки. Указания: в стек заносить тип скобки (реализация 2). 1.Разработайте класс, реализующий линейный односвязный список. Методы класса: добавление элемента к началу списка, просмотр списка, перемещение элемента с позиции р на n позиций вперед по списку. Поля записей: номер аудитории, ее предназначение, количество мест, наличие компьютеров. 2.Напишите программу для тестирования стека, реализованного классом DualStack (реализация 3). 1.Разработайте класс, реализующий линейный односвязный список. Методы класса: добавление элемента в упорядоченный список с сохранением упорядоченности, просмотр списка, обмен n-го и m-го элементов списка, удаление последнего элемента из списка. Поля записей: наименование овощей, их сорт, количество, поставщик. 2.Фирма по хранению и сбыту товаров получает грузы по различным ценам, причем товары, полученные позднее, продаются в первую очередь. Напишите программу, считывающую записи о торговых операциях двух типов: операции по закупке и операции по продаже с 20%-ной надбавкой. Результаты о каждой из операций выводить на экран. Если на складе отсутствует требуемое в заказе число товара, то продайте все имеющееся, а затем напечатайте сообщение об отсутствии остальной части изделий на складе (реализация 1). 1.Разработайте класс, реализующий линейный односвязный список. Методы класса: вставка элемента после n-го элемента списка, просмотр списка, удаление 3-х элементов списка, начиная с n-го. Поля записей: номер учебной группы, предмет изучения, количество часов, тип проводимых занятий. 2.Фирма по хранению и сбыту товаров получает грузы по различным ценам, причем товары, полученные позднее, продаются в первую очередь. Напишите программу, считывающую записи о торговых операциях двух типов: операции по закупке и операции по продаже с 20%-ной надбавкой. Результаты о каждой из операций выводить на экран. Если на складе отсутствует требуемое в заказе число товара, то продайте все имеющееся, а затем напечатайте сообщение об отсутствии остальной части изделий на складе (реализация 2). 1.Разработайте класс, реализующий линейный двусвязный список. Методы класса: добавление элемента к концу списка, просмотр списка в прямом и обратном порядке, удаление n-го элемента из списка. Поля записей: номер группы, предмет, форма контроля (экзамен, зачет, курсовой проект), средний балл группы. 2.Фирма по хранению и сбыту товаров получает грузы по различным ценам, причем товары, полученные позднее, продаются в первую очередь. Напишите программу, считывающую записи о торговых операциях двух типов: операции по закупке и операции по продаже с 20%-ной надбавкой. Результаты о каждой из операций выводить на экран. Если на складе отсутствует требуемое в заказе число товара, то продайте все имеющееся, а затем напечатайте сообщение об отсутствии остальной части изделий на складе (реализация 4). 1.Разработайте класс, реализующий линейный двусвязный список. Методы класса: вставка элемента перед n-м элементом списка, просмотр списка в прямом и обратном порядке, удаление из списка каждого второго элемента. Поля записей: фамилия студента, номер его зачетной книжки, допуск к экзамену, экзаменационной оценка. 2.Фирма по хранению и сбыту товаров получает грузы по различным ценам, причем товары, полученные позднее, продаются в первую очередь. Напишите программу, считывающую записи о торговых операциях двух типов: операции по закупке и операции по продаже с 20%-ной надбавкой. Результаты о каждой из операций выводить на экран. Если на складе отсутствует требуемое в заказе число товара, то продайте все имеющееся, а затем напечатайте сообщение об отсутствии остальной части изделий на складе (реализация 5). 1.Разработайте класс, реализующий линейный двусвязный список. Методы класса: добавление элемента к началу списка, просмотр списка в прямом и обратном направлении, перемещение элемента с позиции р на n позиций назад по списку. Поля записей: исполнитель, название альбома, год создания, цена. 2.Многочлены вида , где можно представить в виде очереди, где каждый элемент имеет три поля: одно – для коэффициента ci, второе – для показателя степени ei, третье – для указателя на следующую ячейку. Для описанного представления многочленов напишите программу их дифференцирования (реализация 6). 1.Разработайте класс, реализующий линейный двусвязный список. Методы класса: добавление элемента в упорядоченный список с сохранением упорядоченности, просмотр списка в прямом и обратном направлении, обмен n-го и m-го элементов списка, удаление последнего элемента из списка. Поля записей: изображенное на памятнике, его автор, место, год установки. 2.Многочлены вида , где можно представить в виде очереди, где каждый элемент имеет три поля: одно – для коэффициента ci, второе – для показателя степени ei, третье – для указателя на следующую ячейку. Для описанного представления многочленов напишите программу их дифференцирования (реализация 5). 1.Разработайте класс, реализующий линейный двусвязный список. Методы класса: вставка элемента после n-го элемента списка, просмотр списка в прямом и обратном направлении, удаление трех элементов списка, средний из которых имеет номер n. Поля записей: фамилия абитуриента, номер оконченной им школы, наличие медали, средний балл, полученный на вступительных экзаменах. 2.Многочлены вида , где можно представить в виде очереди, где каждый элемент имеет три поля: одно – для коэффициента ci, второе – для показателя степени ei, третье – для указателя на следующую ячейку. Напишите программу сложения и умножения многочленов, представленных описанным образом (реализация 6). 1.Разработайте класс, реализующий кольцевой односвязный список. Методы класса: добавление элемента в список, просмотр списка, удаление произвольного элемента из списка. Поля записей: участники, количество забегов, в которых они принимали участие, сумма сделанных на них ставок, количество побед. 2.Напишите программу, которая считывает строку текста, помещая каждый непустой символ и в очередь, и в стек, и проверяет, является ли данная строка палиндромом (реализации 1 и 4). 1.Разработайте класс, реализующий кольцевой односвязный список. Методы класса: вставка элемента после текущего элемента списка, просмотр списка, удаление из списка каждого второго элемента. Поля записей: участник, вид спорта, в котором он выступает, страна, за которую он выступает, занятое на соревнованиях место. 2.Многочлены вида , где можно представить в виде очереди, где каждый элемент имеет три поля: одно – для коэффициента ci, второе – для показателя степени ei, третье – для указателя на следующую ячейку. Для описанного представления многочленов написать программу вычисления значения р(х) при заданном х (реализация 4). 1.Разработайте класс, реализующий кольцевой односвязный список. Методы класса: добавление элемента в список, просмотр списка, перемещение элемента с текущей позиции на n позиций вперед по списку. Поля записей: фирма-продавец, тип процессора, объем оперативной памяти, жесткого диска, цена. 2.Многочлены вида , где можно представить в виде очереди, где каждый элемент имеет три поля: одно – для коэффициента ci, второе – для показателя степени ei, третье – для указателя на следующую ячейку. Напишите программу сложения и умножения многочленов, представленных описанным образом (реализация 5). 1.Разработайте класс, реализующий кольцевой односвязный список. Методы класса: добавление элемента в упорядоченный список с сохранением упорядоченности, просмотр списка, обмен n-го и m-го элементов списка. Поля записей: специальность, срок, форма обучения, учебное заведении. 2.Написать программу, использующую класс (реализация 1) для моделирования Т-образного сортировочного узла на железной дороге. Программа должна разделять на два направления состав, состоящий из вагонов двух типов (на каждое направление формируется состав из вагонов одного типа). Предусмотреть возможность формирования состава из файла и с клавиатуры. 1.Разработайте класс, реализующий кольцевой односвязный список. Методы класса: вставка элемента перед текущим элементом списка, просмотр списка, удаление 3-х элементов списка, начиная с текущего. Поля записей: номер квартиры, количество комнат, общая, жилая площадь. 2.Написать программу, использующую класс (реализация 2) для моделирования Т-образного сортировочного узла на железной дороге. Программа должна разделять на два направления состав, состоящий из вагонов двух типов (на каждое направление формируется состав из вагонов одного типа). Предусмотреть возможность формирования состава из файла и с клавиатуры. 1.Разработайте класс, реализующий кольцевой односвязный список. Методы класса: добавление элемента в список, просмотр списка, перемещение элемента с текущей позиции на n позиций назад по списку. Поля записей: фамилия работника, его год рождения, семейное положение, специальность. 2.Написать программу, использующую класс (реализация 1) для отыскания прохода по лабиринту. Лабиринт представляется в виде матрицы, состоящей из квадратов. Каждый квадрат либо открыт, либо закрыт. Вход в закрытый квадрат запрещен. Если квадрат открыт, то вход в него возможен со стороны, но не с угла. Каждый квадрат определяется его координатами в матрице. После отыскания прохода программа печатает найденный путь в виде координат квадратов. 1.Разработайте класс, реализующий кольцевой двусвязный список. Методы класса: добавление элемента в список, просмотр списка, перемещение элемента с текущей позиции на n позиций назад по списку. Поля записей: марка автомобиля, страна-производитель, год выпуска, количество пассажиров. 2.Написать программу, использующую класс (реализация 2) для отыскания прохода по лабиринту. Лабиринт представляется в виде матрицы, состоящей из квадратов. Каждый квадрат либо открыт, либо закрыт. Вход в закрытый квадрат запрещен. Если квадрат открыт, то вход в него возможен со стороны, но не с угла. Каждый квадрат определяется его координатами в матрице. После отыскания прохода программа печатает найденный путь в виде координат квадратов. 1.Разработайте класс, реализующий кольцевой двусвязный список. Методы класса: вставка элемента после n-го элемента списка, просмотр списка, удаление из списка каждого второго элемента. Поля записей: наименование фрукта, страна произрастания, стоимость, срок годности. 2.Написать программу для вычисления значения арифметического выражения, записанного в префиксной форме (реализация 1). 1.Разработайте класс, реализующий кольцевой двусвязный список. Методы класса: добавление элемента в упорядоченный список с сохранением упорядоченности, просмотр списка в прямом и обратном направлении, обмен n-го и m-го элементов списка, удаление последнего элемента из списка. Поля записей: название футбольной команды, имя главного тренера, количество побед, количество проигрышей. 2.Написать программу для вычисления значения арифметического выражения, записанного в постфиксной форме (реализация 2). 1.Разработайте класс, реализующий кольцевой двусвязный список. Методы класса: вставка элемента после n-го элемента списка, просмотр списка в прямом и обратном направлении, удаление трех элементов списка, средний из которых имеет номер n. Поля записей: название страны, стоимость турпутевки, количество дней путешествия, количество путешествующих. 2.Написать программу для вычисления значения арифметического выражения, записанного в префиксной форме (реализация 4). Контрольные вопросы Что такое структура и структурный тип? Как осуществляется доступ к элементам структур? Что такое абстрактный тип данных? Что такое список? Какие виды списков Вы знаете? Какие методы применимы к спискам? Какие методы реализации списков Вы знаете? Что такое стек? Какие методы применимы к стекам? Каков механизм заполнения стека? Что такое «дно» стека? Как реализовать запись арифметических выражений с помощью стека? Что такое очередь? Использование какого вида очереди наиболее эффективно? Какие методы применимы к очередям? Каков механизм заполнения очереди? Что такое дек? Какие виды деков Вы знаете? Как определить количество элементов в списке, стеке и очереди? В чем различие между конкатенацией двух стеков от конкатенации двух очередей? Что такое дескриптор? Как и когда используется нулевой указатель NULL? |