Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2017, 20:10   #1
staccy
Пользователь
 
Регистрация: 14.03.2017
Сообщений: 36
По умолчанию Описать тип struct

Описать тип struct Rectangle, задающий на плоскости замкнутый прямоугольник со сторонами, параллельными координатным осям и габаритами (x–, x+) и (y–, y+) по осям абсцисс и ординат соответственно. Реализовать в виде отдельных функций следующие операции над переменными этого типа:
а) вычисление площади прямоугольника;
б) построение прямоугольника по паре точек, задающих любую пару противолежащих вершин;
в) построение пересечения двух прямоугольников;
г) проверка принадлежности точки прямоугольнику;
д) проверка включения одного прямоугольника в другой;
е) поворот прямоугольника относительно центра на прямой угол.
С использованием описанных типа и функций разработать программу, которая для заданного набора из N прямоугольников находит:
1) площадь наименьшего из прямоугольников, содержащего в себе один и более прямоугольников из заданного набора;
2) все пары прямоугольников, совпадающих с точностью до поворота напрямой угол.

Не знаю как сделать пункты, выделенные жирным. Помогите написать код
staccy вне форума Ответить с цитированием
Старый 28.05.2017, 20:26   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

покажите свои наработки, конкретные вопросы и т.п.

Или в раздел Фриланс если вы не хотите ничего делать, а ищете кого-то, кто выполнит ваши задачи за вознаграждение.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.05.2017, 20:39   #3
staccy
Пользователь
 
Регистрация: 14.03.2017
Сообщений: 36
По умолчанию

Наработок по факту нет, т.к. не очень понимаю что такое структуры и как с ними вообще работать
Код:
#include <stdio.h> 
#include <windows.h> 

typedef struct{ 
int x;//координата 
int y;//координата 
}Rectangle; 
Rectangle q; 
typedef struct{
	int x;
	int y;
}Point;
Point A;
Point B;

void main() 
{ 
	SetConsoleOutputCP(1251); 

	int N;//количество прямоугольников 
	int i;//счетчик 
	printf("Сколько дано прямоугольников?"); 
	scanf("%d",&N); 

	for(i=0;i<N;i++) 
	{ 
		printf("Введите габариты: "); 
		scanf("%d%d",&x,&y); 
	} 
	system("pause");
} 

/*функция а)вычисление площади прямоугольника*/
float Area(Rectangle q){ 
	float S=0; 
	S=2*fabs(q.x)*2*fabs(q.y); 
	return S; 
}
/*функция б)построение прямоугольника по паре точек, задающих любую пару противолежащих вершин*/
Rectangle For_two_points(Point A,Point B){
	Rectangle P;
	P.x=fabs((B.x-A.x)/2);
	P.y=fabs((B.y-A.y)/2);
	return P;
}
/*функция в)построение пересечения двух прямоугольников*/
Rectangle Crossing(){

}
/*функция г) проверка принадлежности точки прямоугольнику*/
int Point_in_rectangle(){

}
/*функция д) проверка включения одного прямоугольника в другой*/
int Inside(){

}
/*функция е) поворот прямоугольника относительно центра на прямой угол*/
Rectangle Turning(){

}
staccy вне форума Ответить с цитированием
Старый 28.05.2017, 21:56   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Я не до конца не уверен...
1) пересечения двух прямоугольников - это тоже прямоугольник:

Безымянный.png
Координаты которого нужно найти.

2) поворот прямоугольника относительно центра:

Безымянный 1.png

3) Обычно, ответ функций-проверок достаточно будет "Да/нет", т.е. тип "bool".
Вы такой тип проходили?

4) Твои вопросы:
Код:
1) площадь наименьшего из прямоугольников, содержащего в себе один и более прямоугольников из заданного набора; 
2) все пары прямоугольников, совпадающих с точностью до поворота напрямой угол.
это обычный перебор... НО, сначала расскажи о динамической памяти. Т.е. как создать динамический массив (для начала просто, типа "int") из "N" элементов, где "N" задаёт пользователь.

p.s.: возьми нарисуй (в клеточку) как преобразуются при пересечении прямоугольников или повороте - выведи формулы (последовательности преобразования координат прямоугольников).
Покажи здесь рисунки.
ura_111 вне форума Ответить с цитированием
Старый 28.05.2017, 21:59   #5
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Ещё не понятно куда поворачивается: по-часовой стрелки или против (на 90градусов).

А не... это безразлично.
ura_111 вне форума Ответить с цитированием
Старый 28.05.2017, 22:04   #6
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Я думаю, что при повороте, надо переписать "поворачивающий" прямоугольник.

Как думаешь об этом моменте?
ura_111 вне форума Ответить с цитированием
Старый 28.05.2017, 22:06   #7
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Ещё вопрос, который ты должен ответить для себя:
как организовать хранения "N" прямоугольников?

В виде динамического массива?
Или списка?
Или стека?....


Что проходили?
ura_111 вне форума Ответить с цитированием
Старый 28.05.2017, 22:08   #8
staccy
Пользователь
 
Регистрация: 14.03.2017
Сообщений: 36
По умолчанию

Относительно центра - центра системы координат, прямоугольник строится вокруг точки 0 со сторонами, параллельными осям координат. Формулы вывести не могу, т.к. не понимаю как использовать структуры
staccy вне форума Ответить с цитированием
Старый 28.05.2017, 22:10   #9
staccy
Пользователь
 
Регистрация: 14.03.2017
Сообщений: 36
По умолчанию

Хранение списка прямоугольников пытаюсь организовать в массиве
Код:
Rectangle q[100]
staccy вне форума Ответить с цитированием
Старый 28.05.2017, 22:20   #10
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

1) Нет, статического массива не достаточно... Например, а если пользователь введёт "N=101"?

А вижу с динамической памятью ты не знаком. Это когда размер массива задаётся не при компиляции ("не жестко"), а в процессе работы программы.

Хорошо, временно (повторюсь, временно), пусть будет q[100]...

Расскажи о пересечении прямоугольников: что это значит?
появление в программе нового прямоугольника с координатами?
Или нет? (А просто вывод координат на экран).

2) Я тебе говорил, рисуй...
Покажи графически, в клеточку.... Можно, в принципе и в Paint... Та и физически, на листочке, а потом фоткать....

Для начала просто прямоугольник, потом преобразования...
ura_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Описать тип данных в виде структуры. pocheto Помощь студентам 3 29.12.2016 21:49
Реализовать struct Группа(group), в которой содержатся struct Студент(Student) TokaChan Помощь студентам 2 07.07.2016 07:22
описать тип 'шахматная доска' vadimc Помощь студентам 0 15.12.2012 10:54
Описать тип с данными о сотрудниках Масим Помощь студентам 13 24.03.2010 14:09