Здравствуйте,Написал программу по этой задаче:
Разработать функцию 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");
}
  Проверьте !!...Заранее спасибо