Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Топ:
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Дисциплины:
2018-01-03 | 209 |
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];
Однако для более удобной работы лучше создать массив структур.
|
|
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!