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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2018, 18:35   #1
APTEMKA01
 
Регистрация: 15.03.2018
Сообщений: 3
Восклицание Составить описание класса прямоугольника со сторонами, параллельными осям координат(С++)

Здравствуйте. Есть вот такая задача на C++:Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольников на плоскости, изменения размеров, построения наименьшего прямоугольника, содержащего два заданных прямоугольника, и прямоугольника, являющегося общей частью (пересечением) двух прямоугольников.
Я не могу понять,как реализовать два последних условия(case 3 и case 4).
В case 3 я использовал условия,но он выводит неправильный ответ,при чём,если выполняется первое условие,то он выводит его результат правильно(скорее всего неправильно что-то сделал в них).
P.S.Да знаю,есть решения в интернете,но мне необходимо в реалиях этой программы.
P.P.S.Только начал изучать C++,просьба не закидывать тапками
Код:
#include <iostream>
#include <math.h>
#include <conio.h>
#include <string>

using namespace std;

class kchis
{
	
	double f,g,l,m,n,o,p,r,a,b,c,d,e,h,j,k;
public:
	void Vvod1();
	void Vivod1();
	
};

void main()
{
	setlocale(LC_ALL, "Russian");
	kchis a;
	int nf;
	cout << "Вас приветствует программа \n";
	cout << "Для продолжения введите 1" << endl;
	cin >> nf;
	switch (nf)
	{
	case 1:
		a.Vvod1();
		a.Vivod1();
		break;
	default:
		cout << "Ты что не видишь,что написано?" << endl;
		break;
	}
	_getch();

}

//=======================ВВОД==========================//
void kchis::Vvod1()
{
	cout << endl;
	cout << "Введите координату по оси ОХ точки начала черчения первого прямоугольника:";
	cin >> a;
	cout << "\nВведите координату по оси ОY точки начала черчения первого прямоугольника:";
	cin >> b;
	cout << "\nВведите высоту первого прямоугольника:";
	cin >> c;
	cout << "\nВведите ширину первого прямоугольника:";
	cin >> d;
	cout << "\nВаш первый прямоугольник ABCD имеет следующие точки: A(" << a << ";" << b << "),B(" << a << ";" << b+c << "),C(" << a+d << ";" << b+c << "),D(" << a+d << ";" << b << ").";
	cout << "\nВведите координату по оси ОХ точки начала черчения второго прямоугольника:";
	cin >> e;
	cout << "\nВведите координату по оси ОY точки начала черчения второго прямоугольника:";
	cin >> h;
	cout << "\nВведите высоту второго прямоугольника:";
	cin >> j;
	cout << "\nВведите ширину второго прямоугольника:";
	cin >> k;
	cout << "\nВаш второй прямоугольник KLMN имеет следующие точки: K(" << e << ";" << h << "),L(" << e << ";" << h+j << "),M(" << e+k << ";" << h+j << "),N(" << e+k << ";" << h << ").";
	cout << endl;
}
//==========================ВЫВОД=============================//
void kchis::Vivod1()
{
	cout << "Выберите действие, которое вы хотите произвести с этими векторами:";
	cout << endl;
	cout << "1)Перемещение прямоугольников" "\n2)Изменение размеров"   "\n3)Построение наименьшего прямоугольника OPRS из ABCD и KLMN " "\n4)Пересечение прямоугольников";
	cout << "\n Ваш ответ:";
	int nt;
	cin >> nt;
	switch (nt)
	{
	case 1:
		cout << "\nВы выбрали перемещение прямоугольников";
		cout << "\nВведите изменение по оси ОХ для первого прямоугольника";
		cin >> n;
		cout << "\nВведите изменение по оси ОY для первого прямоугольника";
		cin >> o;
		cout << "\nВаш первый прямоугольник ABCD после перемещения имеет следующие точки: A(" << a + n << ";" << b + o << "),B(" << a + n << ";" << b + c + o << "),C(" << a + d + n << ";" << b + c + o << "),D(" << a + d + n << ";" << b + o << ").";
		cout << "\nВведите изменение по оси ОХ для первого прямоугольника";
		cin >> f;
		cout << "\nВведите изменение по оси ОY для первого прямоугольника";
		cin >> g;
		cout << "\nВаш второй прямоугольник KLMN после перемещения имеет следующие точки: K(" << e + f << ";" << h + g << "),L(" << e + f << ";" << h + j + g << "),M(" << e + k + f << ";" << h + j + g << "),N(" << e + k + f << ";" << h + g << ").";
		break;
	case 2:
		cout << "\nВы выбрали изменение размеров прямоугольников";
		cout << "\nВведите новую высоту первого прямоугольника:";
		cin >> l;
		cout << "\nВведите новую ширину первого прямоугольника:";
		cin >> m;
		cout << "\nВаш первый прямоугольник ABCD имеет следующие точки: A(" << a << ";" << b << "),B(" << a << ";" << b + l << "),C(" << a + m << ";" << b + l << "),D(" << a + m << ";" << b << ").";
		cout << "\nВведите новую высоту второго прямоугольника:";
		cin >> p;
		cout << "\nВведите новую ширину второго прямоугольника:";
		cin >> r;
		cout << "\nВаш второй прямоугольник KLMN имеет следующие точки: K(" << e << ";" << h << "),L(" << e << ";" << h + p << "),M(" << e + r << ";" << h + p << "),N(" << e + r << ";" << h << ").";
	case 3:
		if (c=j)
		{
			cout << "Ваш новый прямоугольник OPRS имеет такие характеристики: Ширина=" << d + k << ";Высота=" << c << ";";
			cout << "Координаты точек:О(" << a << ";" << b << "),P(" << a << ";" << b + c << "),R(" << a + d + k << ";" << b + c << "),S(" << a + d + k << ";" << b << ").";
		}
		else if (d=k){
			cout << "Ваш новый прямоугольник OPRS имеет такие характеристики: Ширина=" << d << ";Высота=" << c + j << ";";
			cout <<"Координаты точек : О(" << a << "; " << b << "), P(" << a << "; " << c+j << "), R(" << d << "; " << c+j << "), S(" << d << "; " << c+j << ").";
		}
		else if ((c=j) && (d=k)){
			cout << "Ваш новый прямоугольник OPRS имеет такие характеристики: Ширина=" << d + k << ";Высота=" << c << ";";
			cout <<"Координаты точек : О(" << a << "; " << b << "), P(" << a << "; " << b+c << "), R(" << a+d+k << "; " << b+c << "), S(" << a+d+k << "; " << b << ").";
		}else
		{
		cout << "Построить прямоугольник OPRS нельзя";
		}
		}
	case 4:
	//не могу сообразить,как это решить

	_getch();
}
APTEMKA01 вне форума Ответить с цитированием
Старый 02.11.2018, 20:14   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

== - сравнение
= - присвоение
p51x вне форума Ответить с цитированием
Старый 02.11.2018, 20:44   #3
APTEMKA01
 
Регистрация: 15.03.2018
Сообщений: 3
По умолчанию

Но как это можно использовать?
APTEMKA01 вне форума Ответить с цитированием
Старый 02.11.2018, 21:03   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Например, писать правильный знак, когда проверяете равенство... а то вон, 3 пункт, не работает.
p51x вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс ПРЯМОУГОЛЬНИК со сторонами параллельными осям координат vutt C# (си шарп) 0 11.05.2016 03:35
Описание класса прямоугольников со сторонами, параллельными осям координат romaust C# (си шарп) 0 04.05.2016 10:51
Составить описание класса прямоугольника со сторонами, параллельными осям координат gylayko Помощь студентам 2 23.02.2013 21:38
Целочисленные координаты трех вершин прямоугольника, стороны которого параллельны координатным осям qpuTuJlb Помощь студентам 5 10.11.2012 10:03
ООП: Составить описание класса для определения одномерных массивов целых цисел (векторов) Kuzu Паскаль, Turbo Pascal, PascalABC.NET 0 18.10.2012 00:23