Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Топ:
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Интересное:
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Программа иллюстрирует применение разработанных выше структур и функций, моделирующих точки и прямоугольники на математической плоскости. Требуется отображать точки и прямоугольники на физической плоскости экрана, где система координат отличается от принимаемой, обычно, в математике, рис.36.
На экране при его работе в текстовом режиме начало системы координат находится в левом верхнем углу, ось xs направлена вправо, ось ys вниз, то есть координата ys отсчитывается от верхнего края экрана. Левый верхний угол экрана имеет координаты (1, 1). Высота экрана составляет обычно 25 строк, ширина – 80 столбцов. Кроме того, если на экране создано окно, то в нем действует своя локальная система координат, с началом в левом верхнем углу окна.
Будем считать, что первый квадрант математической плоскости совпадает с физической плоскостью экрана, то есть ось x совпадает с нижним краем экрана, ось y – с левым, единица длины на математической плоскости численно равна единице длины на экране. Отсюда следует связь математических координат x, y и экранных координат xs, ys:
xs = x, ys = 25 − y.
Данные соображения учитываются в функции
void show_rect(rect* pr, int color);
которая изображает на экране прямоугольник и переводит курсор в его центр. В программе использованы такие же обозначения, как на рис. 36.

Рис.36. Отображение математической плоскости на плоскость экрана
В текст программы следует вставить сделанные выше объявления структур point и rect и определения функций.
// Файл PointRct.cpp
struct point{ // Cтруктура точка
int x, y;
};
// make_point: создание точки
point make_point(int x, int y)
{
point tmp;
tmp.x = x; tmp.y =y;
return tmp;
}
struct rect{ // Структура прямоугольник
point pt1, pt2;
};
// make_rect: создание прямоугольника
rect make_rect(point p, point q)
{
rect tmp;
tmp.pt1 = p; tmp.pt2 = q;
return tmp;
}
#include <conio.h>
// cetner_rect: возвращает точку - центр прямоугольника
point center_rect(rect* pr)
{
point tmp =
make_point((pr->pt1.x + pr->pt2.x) / 2, (pr->pt1.y + pr->pt2.y) / 2);
return tmp;
}
#define max(a, b) (a)>(b)?(a):(b)
#define min(a, b) (a)<(b)?(a):(b)
// canon_rect: канонизация координат прямоугольника
rect canon_rect(rect r)
{
rect tmp;
tmp.pt1.x = min(r.pt1.x, r.pt2.x);
tmp.pt1.y = min(r.pt1.y, r.pt2.y);
tmp.pt2.x = max(r.pt1.x, r.pt2.x);
tmp.pt2.y = max(r.pt1.y, r.pt2.y);
return tmp;
}
// show_rect: изображает прямоугольник на экране и
// помещает курсор в его центр
const int HIGHT = 25; // Высота экрана в строках
void show_rect(rect* pr, int color)
{ // color - цвет прямоугольника
point LU = make_point(pr->pt1.x, HIGHT - pr->pt2.y);
// LU – Левый верхний угол прямоугольника на экране
point RD = make_point(pr->pt2.x, HIGHT - pr->pt1.y);
// RD – Правый нижний угол прямоугольника на экране
window(LU.x, LU.y, RD.x, RD.y); // Создание окна,
// соответствующего прямоугольнику
textbackground(color); // Выделение прямоугольника
clrscr(); // цветом
point M = center_rect(pr); // Центр прямоугольника в
// математической системе координат
int xM = M.x, yM = M.y; // Координаты центра в
// математической системе координат
int xsM = xM, ysM = HIGHT - yM; // Координаты центра
// прямоугольника на экране
int xwM = xsM - LU.x, ywM = ysM - LU.y; // xwM, ywM – координаты
// центра прямоугольника в окне
M = make_point(xwM, ywM); // Преобразование координат центра
// прямоугольника в оконные
gotoxy(M.x, M.y); // Перевод курсора в центр прямоугольника
}
# include <iostream.h>
void main()
{
point a, b; // Две точки
rect ab; // Прямоугольник
int x, y;
textbackground(BLACK);
clrscr(); // Очистка экрана
cout << "Введите координаты первой точки\n";
cin >> x >> y;
a = make_point(x, y); // Первая вершина прямоугольника
cout << "Введите координаты второй точки \n";
cin >> x >> y;
b = make_point(x, y); // Вторая вершина прямоугольника
ab = make_rect(a, b); // Создание прямоугольника
ab = canon_rect(ab); // Приведение к каноническому виду
show_rect(&ab, RED); // Изображение на экране
getch();
}
На рис. 37 приведено изображение экрана при работе с программой.

Рис.37. Прямоугольник на экране, созданный программой
Массивы структур
Структуры, как и любые другие переменные, можно объединять в массивы. Работу с массивами структур разберем на примере.
Напишем программу, которая читает входной поток и определяет число вхождений каждого ключевого слова языка Си в читаемый текст. Для хранения ключевых слов и счетчиков можно было бы создать два параллельных массива:
char *keyword[NKEYS];
int keycount[NKEYS];
Однако для более удобной работы лучше создать массив структур.
|
|
|
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!