|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.12.2010, 14:18 | #1 |
Регистрация: 22.12.2010
Сообщений: 9
|
Геометрическая задача
Итак, задача, На плоскости заданы два прямоугольника координатами своих вершин (стороны прямоугольников параллельны сторонам экрана). Найти и обвести общую площадь, занимаемую этими прямоугольниками.
вот что смогла написать. #include "stdafx.h" #include <iostream> #include <cstdlib> #include <cmath> #include <clocale> #include <conio.h> using namespace std; class Priamoug { public: double *X; double *Y; void Vvod(char x) { switch(x) { case 'y': { int i=0; cout<<"Введите Х["<<++i<<"]: "; cin>>X[0]; cout<<"Введите Y["<<i<<"]: "; cin>>Y[0]; cout<<"Введите Х["<<++i<<"]: "<<X[0]<<"\n"; X[1]=X[0]; do{ cout<<"Введите Y["<<i<<"]: "; cin>>Y[1]; }while(Y[1]<=Y[0]); do{ cout<<"Введите Х["<<++i<<"]: "; cin>>X[2]; }while(X[2]<=X[1]); cout<<"Введите Y["<<i<<"]: "<<Y[1]<<"\n"; Y[2]=Y[1]; cout<<"Введите Х["<<++i<<"]: "<<X[2]<<"\n"; X[3]=X[2]; cout<<"Введите Y["<<i<<"]: "<<Y[0]<<"\n"; Y[3]=Y[0]; } break; case 'n': { int k,l; cout<<"Введите пределы: \n"; cout<<"От: "; cin>>k; cout<<"До: "; cin>>l; X[0]=k+rand()%l; Y[0]=k+rand()%l; X[1]=X[0]; do{ Y[1]=k+rand()%l; }while(Y[1]<=Y[0]); do{ X[2]=k+rand()%l; }while(X[2]<=X[1]); Y[2]=Y[1]; X[3]=X[2]; Y[3]=Y[0]; } break; } } void vivod() { for(int i=0; i<4;++i){ cout<<"(X["<<i+1<<"],Y["<<i+1<<"])=("<<X[i]<<","<<Y[i]<<")\n"; } } double S() { double a; if(X[3]<X[0]) a=X[0]-X[3]; else a=X[3]-X[0]; return a*(Y[1]-Y[0]); } }; int main() { setlocale(LC_ALL, "Russian"); Priamoug A,B; char x; A.X=new double[4]; A.Y=new double[4]; B.X=new double[4]; B.Y=new double[4]; do{ cout<<"Будете вводить элементы?\n"; cout<<"Ответ: "; cin>>x; }while((x!='y')&&(x!='n')); cout<<"Прямоугольник А:\n"; A.Vvod(x); cout<<"\nПрямоуголник В: \n"; B.Vvod(x); cout<<"\nВывод А:\n"; A.vivod(); cout<<"\nВывод B:\n"; B.vivod(); cout<<"\nПлощадь А: "<<A.S()<<"\n"; cout<<"Площадь B: "<<B.S()<<"\n"; double sum=A.S()+B.S(), storona=pow(sum,0.5); cout<<"\nОбщая площадь, занимаемая этими прямоугольниками: \n"; cout<<"Площадь: "<<sum; cout<<"\nКоординаты: "; cout<<"\n(X["<<1<<"],Y["<<1<<"])=("<<0<<","<<0<<")\n"; cout<<"(X["<<2<<"],Y["<<2<<"])=("<<0<<","<<storona<<")\n"; cout<<"(X["<<3<<"],Y["<<3<<"])=("<<storona<<","<<storona<<")\n" ; cout<<"(X["<<4<<"],Y["<<4<<"])=("<<storona<<","<<0<<")\n"; getch(); return 0; } Проблема : выводит не те координаты. есть соображения на тему того , что общую площадь пересечения нужно отнять от суммы площадей этих прямоугольников. ПОМОГИТЕ ПОЖАЛУЙСТА! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Геометрическая задача | Liza Dalbek | Помощь студентам | 2 | 22.12.2010 19:48 |
ГЕОМЕТРИЧЕСКАЯ ЗАДАЧА С++ | kochet-kov | Помощь студентам | 8 | 22.12.2010 18:39 |
Геометрическая задача в VS2010 С++ | FEAREX | Помощь студентам | 7 | 17.12.2010 09:53 |
Геометрическая задача | HackNick | Общие вопросы C/C++ | 5 | 02.09.2010 20:49 |
Геометрическая задача С++ | bloo[d] | Общие вопросы C/C++ | 9 | 30.01.2008 18:27 |