Здравствуйте,Написал программу по этой задаче:
Разработать функцию rectPS(x1, y1, x2, y2, P, S), вычисляющую периметр P и площадь S прямоугольника со сторонами, параллельными осям координат, по координатам (x1, y1), (x2, y2) его противоположных вершин (x1, y1, x2, y2 — входные, P и S — выходные параметры). В качестве результирующего значения функция должна возвращать истину, если прямоугольник не является вырожденным (т.е. одна из его сторон имеет нулевую длину) и ложь – в противном случае. С помощью этой процедуры найти периметры и площади трех прямоугольников с данными противоположными вершинами.
Но сомневаюсь в её правильности,вот код:
#include <stdlib.h>
#include <math.h>
#include <Windows.h>
#include <iostream>
using namespace std;
bool rectPS(x1,y1,x2,y2,*P,*S)
{
bool res=true;//переменная возвращающая истину или ложь
int a=(sqrt((double)(x2-x1)+(double)(y2-y1)));//обозначим стороны как а и b
int b=(sqrt((double)(x2-x1))+((double)(y1-y1)));
if((a!=0) && (b!=0)){ //b и a не должны равняться нулю,иначе прямоугольник вырожденный
*S=(sqrt((double)(x2-x1)+(double)(y2-y1)))*(sqrt((double)(x2-x1)+(double)(y2-y1))); // площадь
*P=((sqrt((double)(x2-x1)+(double)(y2-y1)))+(sqrt((double)(x2-x1)+(double)(y2-y1))))*2; //периметр
return true; //возвращаем истину
}
else
return false; //иначе ложь
}
void main()
{
setlocale(LC_ALL,"Russian");
int x1,x2,y1,y2;
int P=0, S=0;
cout<<"Ввести координаты\nx1 и x2:\n";
cin>>x1>>x2;
cout<<"Ввести координаты\ny1 и y2:\n";
cin>>y1>>y2;
if(rectPS( x1,y1,x2,y2,&P,&S) == true)
{
cout<<"Площадь:\n"<<S<<"\n";
cout<<"Периметр:\n"<<P<<"\n";
}
else cout<<"Прямоугольник является вырожденным! \n";
system("pause");
}
Проверьте !!...Заранее спасибо