Задачи по изданию Т. А. Павловская. C/C++. Программирование на языке высокого уровня. - СПб.: Питер, 2003. - 461 с.
Условие задачи
Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольников на плоскости, изменение размеров, построение наименьшего прямоугольника, содержащего два заданных, и прямоугольника, являющегося общим пересечением двух прямоугольников.
Алгоритм работы
Vvod();- происходит ввод координат левого верхнего угла и правого нижнего в массив,
Perem();- перемещается прямоугольник,согласно заданному вектору,
Izm_raz();- сначала производится увеличение или уменьшение прямоугольника, затем он перемещается на прежнее место,
Naim_pr(); - вычисляется согласно различным вариантам координат прямоугольников
Peres_pr();- вычисляется согласно различным вариантам координат прямоугольников
Листинг программы
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
class Priamoug{
double a[2][2], n;
public:
void Vvod();
void Perem();
void Izm_raz();
void Naim_pr();
void Peres_pr();
void Vivod();
};
void main()
{ Priamoug a;
// randomize();
a.Vvod();
a.Vivod();
//a.Perem();
//a.Vivod();
a.Izm_raz();
a.Vivod();
//a.Naim_pr();
//a.Vivod();
//a.Peres_pr();
//a.Vivod();
}
void Priamoug::Vvod()
{
cout<<endl;
cout<<"vvedite koordinati priamougolnika";
cout<<endl;
for (int i=0;i<2;i++)
for(int j=0;j<2;j++) c
in>>a[i][j];
cout<<"koordinati priamougolnika";
}
void Priamoug::Vivod()
{
cout<<endl;
cout<<endl;
for (int i=0;i<2;i++)
{
for(int j=0;j<<2;j++)
{cout.width(3);cout<<a[i][j];}
cout<<endl;
}
}
void Priamoug::Perem()
{ int b[2][2],c[1][2],d[2][2],k,l;
cout<<"vvedite koordinati vektora";
cout <<endl;
for (int i=0;i<2;i++)
for(int j=0;j<2;j++)
cin>>b[i][j];
c[0][0]=b[1][0]-b[0][0];
c[0][1]=b[1][1]-b[0][1];
for(i=0;i<2;i++)
{
k=0;
l=0;
for (int j=0;j<2;j++)
{
if (c[k][k]<0) { d[i][j]=a[i][j]-(abs(c[k][l])); } else
d[i][j]=a[i][j]+c[k][l];
l++;
}
}
for( i=0;i<2;i++)
for (int j=0;j<2;j++)
a[i][j]=d[i][j];
cout<<"novie koordinati priamougolnika"<<endl;
}
void Priamoug::Izm_raz()
{double r,d,s;
//int b[2][2],c[1][2];
cout<<"vvedite vo sk-ko raz nado uvelichit ili umenshit";
cout<<endl;
cin>>r;
/*if (r>=0)
{
for (int i=0;i<2;i++)
for(int j=0;j<2;j++)
b[i][j]=a[i][j]*r;
c[0][0]=b[1][0]-a[1][0];
c[0][1]=b[1][1]-a[1][1];
a[0][0]=b[0][0]-c[0][0];
a[0][1]=b[0][1]-c[0][1];
a[1][0]=b[1][0]-c[0][0];
a[1][1]=b[1][1]-c[0][1];
}
if(r<0)
{
for (int i=0;i<2;i++)
for(int j=0;j<2;j++)
b[i][j]=a[i][j]/(abs(r));
c[0][0]=a[0][0]-b[0][0];
c[0][1]=a[0][1]-b[0][1];
a[0][0]=b[0][0]+c[0][0];
a[0][1]=b[0][1]+c[0][1];
a[1][0]=b[1][0]+c[0][0];
a[1][1]=b[1][1]+c[0][1];
}*/
d=abs(a[0][0]-a[1][0]);
s=abs(a[0][1]-a[1][1]);
a[0][0]=a[0][0];
a[0][1]=a[0][1]+(s*(r-1));
a[1][0]=a[1][0]+(d*(r-1)
);
a[1][1]=a[1][1];
cout<<"izmenennii priamougolnik";
cout<<endl;
}
void Priamoug::Naim_pr()
{ int b[2][2],c[2][2];int k;
cout<<"vvedite koordinati 1-go priamougolnika";
cout<<endl;
for (int i=0;i<2;i++)
for(int j=0;j<2;j++)
cin>>b[i][j];
cout<<"vvedite koordinati 2-go priamougolnika";
cout>>endl;
for ( i=0;i<2;i++)
for(int j=0;j<2;j++)
cin>>c[i][j];
k=0;
for ( i=0;i<2;i++)
for(int j=0;j<2;j++)
if (b[i][j]==c[i][j]) {k++;};
if (k==4)
{
for ( i=0;i<2;i++)
for(int j=0;j<2;j++)
a[i][j]=c[i][j];
}
if ((b[0][1]<c[0][1])&&(b[0][0]>c[0][0])&&(b[1][1]>c[1][1])&&(b[1][0]<c[1][0]))
{
for (int i=0;i<2;i++)
for(int j=0;j<2;j++)
a[i][j]=c[i][j];
}
if ((b[0][1]>c[0][1])&&(b[0][0]==c[0][0])&&(b[1][1]<c[1][1])&&(b[1][0]==c[1][0]))
{
for (int i=0;i<2;i++)
for(int j=0;j<2;j++)
a[i][j]=b[i][j];
}
if ((c[0][1]>b[0][1])&&(c[0][0]==b[0][0])&&(c[1][1]<b[1][1])&&(c[1][0]==b[1][0]))
{
for (int i=0;i<2;i++)
for(int j=0;j<2;j++)
a[i][j]=c[i][j];
}
if((c[0][1]<b[0][1])&&(c[0][0]>b[0][0])&&(c[1][1]>b[1][1])&&(c[1][0]<b[1][0]))
{
for (int i=0;i<2;i++)
for(int j=0;j<2;j++)
a[i][j]=b[i][j];
}
if ((b[0][0]==c[0][0])&&(b[1][0]==c[1][0])
&&(b[0][1]>c[0][1])&&(b[1][1]>c[1][1]))
//||
//((b[0][0]<c[0][0])&&(b[0][1]==c[0][1])&&(b[1][0]<c[1][0])&&(b[1][1]=c[1][1])))
{
a[0][0]=b[0][0];
a[0][1]=b[0][1];
a[1][0]=c[1][0];
a[1][1]=c[1][1];
}
if ((b[0][0]<c[0][0])&&(b[0][1]==c[0][1])&&(b[1][0]<c[1][0])&&(b[1][1]==c[1][1]))
{
a[0][0]=b[0][0];
a[0][1]=b[0][1];
a[1][0]=c[1][0];
a[1][1]=c[1][1];
}
if ((c[0][0]<b[0][0])&&(c[0][1]==b[0][1])&&(c[1][0]<b[1][0])&&(c[1][1]==b[1][1]))
{
a[0][0]=c[0][0];
a[0][1]=c[0][1];
a[1][0]=b[1][0];
a[1][1]=b[1][1];
}
if ((c[0][0]==b[0][0])&&(c[1][0]==b[1][0])&&
(c[0][1]>b[0][1])&&(c[1][1]>b[1][1]))
//||((c[0][0]<b[0][0])&&(c[0][1]==b[0][1])&&(c[1][0]<b[1][0])&&
//(c[1][1]=b[1][1])))
{
a[0][0]=c[0][0];
a[0][1]=c[0][1];
a[1][0]=b[1][0];
a[1][1]=b[1][1];
}
if ((b[0][1]<c[0][1])&&(b[0][0]<c[0][0])&&(b[1][1]<=c[1][1])&&(b[1][0]<c[1][0]))
{
a[0][0]=b[0][0];
a[0][1]=c[0][1];
a[1][0]=c[1][0];
a[1][1]=b[1][1];
}
if ((c[0][1]<b[0][1])&&(c[0][0]<b[0][0])&&(c[1][1]<=b[1][1])&&(c[1][0]<b[1][0]))
{
a[0][0]=c[0][0];
a[0][1]=b[0][1];
a[1][0]=b[1][0];
a[1][1]=c[1][1];
}
if ((b[0][1]<c[0][1])&&(b[0][0]<c[0][0])&&(b[1][1]>c[1][1])&&(b[1][0]<c[1][0]))
{
a[0][0]=b[0][0];
a[0][1]=c[0][1];
a[1][0]=c[1][0];
a[1][1]=c[1][1];
}
if ((c[0][1]<b[0][1])&&(c[0][0]<[0][0])&&(c[1][1]>b[1][1])&&(c[1][0]<b[1][0]))
{
a[0][0]=c[0][0];
a[0][1]=b[0][1];
a[1][0]=b[1][0];
a[1][1]=b[1][1];
}
if ((b[0][0]==c[0][0])&&(b[0][1]>c[0][1])&&(b[1][0]>c[1][0]&&b[1][1]>c[1][1]))
{
a[0][0]=b[0][0];
a[0][1]=b[0][1];
a[1][0]=b[1][0];
a[1][1]=c[1][1];
}
if ((c[0][0]==b[0][0])&&(c[0][1]>b[0][1])&&(c[1][0]>b[1][0])&&(c[1][1]>b[1][1]))
{
a[0][0]=c[0][0];
a[0][1]=c[0][1];
a[1][0]=c[1][0];
a[1][1]=b[1][1];
}
if ((b[0][0]<c[0][0])&&(b[0][1]>c[0][1])&&(b[1][0]<c[1][0])&&(b[1][1]>c[1][1]))
{
a[0][0]=b[0][0];
a[0][1]=b[0][1];
a[1][0]=c[1][0];
a[1][1]=c[1][1];
}
if ((c[0][0]<b[0][0])&&(c[0][1]>b[0][1])&&(c[1][0]<b[1][0])&&(c[1][1]>b[1][1]))
{
a[0][0]=c[0][0];
a[0][1]=c[0][1];
a[1][0]=b[1][0];
a[1][1]=b[1][1];
}
cout<<"naim priamoug";
cout<<endl;
}
void Priamoug::Peres_pr()
{ int b[2][2],c[2][2];int k;
cout<<"vvedite koordinati 1-go priamougolnika";
cout<<endl;
for (int i=0;i<2;i++)
for(int j=0;j<2;j++)
cin>>b[i][j];
cout<<"vvedite koordinati 2-go priamougolnika";
cout<<endl;
for ( i=0;i<2;i++)
for(int j=0;j<2;j++)
cin>>c[i][j];
k=0;
//if
//{
for ( i=0;i<2;i++)
for(int j=0;j<2;j++)
if (b[i][j]==c[i][j]) {k++;};
if (k==4)
{
for ( i=0;i<2;i++)
for(int j=0;j<2;j++)
a[i][j]=c[i][j];
} else
if ((b[0][0]<c[0][0])&&(b[0][1]==c[0][1])&&(b[1][0]<c[1][0])&&(b[1][1]==c[1][1])&&(c[0][0]<b[1][0]))
{
a[0][0]=c[0][0];
a[0][1]=c[0][1];
a[1][0]=b[1][0];
a[1][1]=b[1][1];
} else
if ((c[0][0]<b[0][0])&&(c[0][1]==b[0][1])&&(c[1][0]<b[1][0])&&(c[1][1]==b[1][1])&&(b[0][0]<c[1][0]))
{
a[0][0]=b[0][0];
a[0][1]=b[0][1];
a[1][0]=c[1][0];
a[1][1]=c[1][1];
}else
if ((b[0][0]==c[0][0])&&(b[0][1]>c[0][1])&&(b[1][0]==c[1][0])&&(b[1][1]>c[1][1])&&(c[0][1]>b[1][1]))
{
a[0][0]=c[0][0];
a[0][1]=c[0][1];
a[1][0]=b[1][0];
a[1][1]=b[1][1];
} else
if ((c[0][0]==b[0][0])&&(c[0][1]>b[0][1])&&(c[1][0]==b[1][0])&&(c[1][1]>b[1][1])&&(b[0][1]>c[1][1]))
{
a[0][0]=b[0][0];
a[0][1]=b[0][1];
a[1][0]=c[1][0];
a[1][1]=c[1][1];
} else
if ((b[0][0]<c[0][0])&&(b[0][1]>c[0][1])&&(b[1][0]<c[1][0])&&(b[1][1]>c[1][1])&&(c[0][1]>b[1][1]))
{
a[0][0]=c[0][0];
a[0][1]=c[0][1];
a[1][0]=b[1][0];
a[1][1]=b[1][1];
} else
if ((c[0][0]<b[0][0])&&(c[0][1]>b[0][1])&&(c[1][0]<b[1][0])&&(c[1][1]>b[1][1])&&(b[0][1]>c[1][1]))
{
a[0][0]=b[0][0];
a[0][1]=b[0][1];
a[1][0]=c[1][0];
a[1][1]=c[1][1];
} else
if ((b[0][0]>c[0][0])&&(b[0][1]>c[0][1])&&(b[1][0]>c[1][0])&&(b[1][1]>c[1][1])&&(b[0][0]<c[1][0])&&(b[1][1]>c[1][1]))
{
a[0][0]=b[0][0];
a[0][1]=c[0][1];
a[1][0]=c[1][0];
a[1][1]=b[1][1];
} else
if ((c[0][0]<b[0][0])&&(c[0][1]<b[0][1])&&(c[1][0]<[1][0])&&(c[1][1]<b[1][1])&&(c[0][0]>b[1][0])&&(c[1][1]<b[1][1]))
{
a[0][0]=b[0][0];
a[0][1]=c[0][1];
a[1][0]=c[1][0];
a[1][1]=b[1][1];
}
else
if ((b[0][1]<c[0][1])&&(b[0][0]>c[0][0])&&(b[1][1]>c[1][1])&&(b[1][0]<c[1][0]))
{
for (int i=0;i<2;i++)
for(int j=0;j<2;j++)
a[i][j]=b[i][j];
} else
if ((b[0][1]>c[0][1])&&(b[0][0]==c[0][0])&&(b[1][1]<c[1][1])&&(b[1][0]==c[1][0]))
{
for (int i=0;i<2;i++)
for(int j=0;j<2;j++)
a[i][j]=c[i][j];
} else
if ((c[0][1]>b[0][1])&&(c[0][0]==b[0][0])&&(c[1][1]<b[1][1])&&(c[1][0]==b[1][0]))
{
for (int i=0;i<2;i++)
for(int j=0;j<2;j++)
a[i][j]=b[i][j];
} else
if((c[0][1]<b[0][1])&&(c[0][0]>b[0][0])&&(c[1][1]>b[1][1])&&(c[1][0]<b[1][0]))
{
for (int i=0;i<2;i++)
for(int j=0;j<2;j++)
a[i][j]=c[i][j];
}else
{
for ( i=0;i<2;i++)
for(int j=0;j<2;j++)
a[i][j]=0;
}
cout<<"peres priamoug";
cout<<endl;
}
|
Набор тестов к программе
Задача решена:
Автор: Федотова Лена
группа: 121Ми
год: 2008
|