C++ Entwerfen Sie eine Rechteckklasse, berechnen Sie den Umfang und die Fläche und zeichnen Sie sie

Wir erstellen zunächst eine Klasse „Rectangle“ (Rechteck) mit den Eigenschaften „length“ (Länge) und „width“ (Breite). Der Standardwert dieser beiden Eigenschaften ist 1. Stellen Sie Mitgliedsfunktionen zur Berechnung des Umfangs (Umfang) bzw. der Fläche (Fläche) eines Rechtecks ​​bereit . Darüber hinaus stehen Setter- und Getter- Funktionen für die beiden Eigenschaften Länge und Breite zur Verfügung . Die Setup-Funktion sollte überprüfen, ob Länge und Breite Gleitkommazahlen größer als 0,0 und kleiner als 20,0 sind .

 Das Folgende ist der obige Implementierungscode:

//Rectangle类.cpp 
#include <iostream>
#include <iomanip>//使用了这个头文件中的stew()来设置输出宽度
using namespace std;
class Rectangle
{
	private:
		float length;
		float width;
	public:
		Rectangle()//Initialize in constructor(构造函数初始化数据成员)
		{
			length=1.0;
			width=1.0;
		}
		void setLength( float leng )//Length的设置函数
		{
			if( leng>0 || leng<20 )//保证>0且<20
			{
				length=leng;
			}
			else
			{
				cout << "Length out of range!!" << endl;
			}
		}
		void setWidth( float wid )//Width的设置函数
		{
			if( wid>0 || wid<20 )
			{
				width=wid;
			}
			else
			{
				cout << "Width out of range!!" << endl;
			}
		}
		float getLength()//Length的获取函数
		{
			return length;
		}
		float getWidth()//Width的获取函数
		{
			return width;
		}
		float perimerter()//计算周长
		{
			return 2.0*width+2.0*length;
		}
		float area()//计算面积
		{
			return width*length;
		}
};
int main()
{
	Rectangle rectangle;//创建一个Rectangle的对象
	float l;
	float w;
	cout << "Please enter the length and width of the rectangle :"<<endl;//提示输入长和宽
	cin >> l >> w ;
	rectangle.setLength( l );
	rectangle.setWidth( w );
	
	cout << "The perimerter of the rectangle is:"<< setw(4) << rectangle.perimerter() << endl << endl;
	cout << "The area of the rectangle is:" << setw(4) << rectangle.area() << endl << endl;
	
	return 0;
}

Als nächstes erstellen wir eine komplexere Rechteckklasse als oben. Diese Klasse enthält nur die kartesischen Koordinatenwerte der vier Ecken des Rechtecks. Der Konstruktor ruft eine Setup-Funktion auf . Die Setup-Funktion akzeptiert vier Sätze von Koordinatenwerten, überprüft, ob sie alle im ersten Quadranten liegen , dass keine der x- oder y-Koordinaten größer als 20,0 ist, und überprüft außerdem, ob die bereitgestellten Koordinaten tatsächlich ein Rechteck bilden. Diese Klasse stellt Memberfunktionen zur Berechnung von Länge, Breite, Umfang und Fläche bereit , wobei die Länge die größere der beiden Dimensionen ist. Diese Klasse enthält auch die Entscheidungsfunktion Quadrat, um zu bestimmen, ob das Rechteck ein Quadrat ist.

Der Code ist wie folgt implementiert:

//增强的Rectangle类.cpp 

#include <iostream>
#include <iomanip>
using namespace std;
class Rectangle
{
	private:
		float x1,x2,x3,x4;
		float y1,y2,y3,y4;
		int define; 
		
	public:
		Rectangle(float a,float b,float c,float d,float e,float f,float g,float h)//Initialize in constructor
		{
			setCoordinatesX(a,b,c,d);
			setCoordinatesY(e,f,g,h);
			
			if(x1==x3 && x2==x4 && y1==y2 && y3==y4)
			{
				cout << "this is a rectangle" << endl;
			}
			 
		}
		void setCoordinatesX(float X1,float X2,float X3,float X4 )
		{
			if(X1>=0&&X1<=20 && X2>=0&&X2<=20 && X3>=0&&X3<=20 && X4>=0&&X4<=20 )
			{
				x1=X1;
				x2=X2;
				x3=X3;
				x4=X4;
				
				define=1;	
			}
			else
			{
				cout << "x out of range" << endl;
				define=0;
			}
		
		} 
		
		void setCoordinatesY(float Y1,float Y2,float Y3,float Y4 )
		{
			if(Y1>=0&&Y1<=20 && Y2>=0&&Y2<=20 && Y3>=0&&Y3<=20 && Y4>=0&&Y4<=20 )
			{
				y1=Y1;
				y2=Y2;
				y3=Y3;
				y4=Y4;
				
				define=1;	
			}
			else
			{
				cout << "y out of range" << endl;
				define=0;
			}
				
		} 
		float length()
		{
			if( (x2-x1) < (y1-y3) )
			{
				cout << "Error: Length is less than width" << endl;
			}
			return x2-x1;
		}
		float width()
		{
			return y1-y3;
		}
		float perimeter()//计算周长 
		{
			return 2*(x2-x1)+2*(y1-y3);
		}
		float area()
		{
			return (x2-x1)*(y1-y3);
		}
		void square()//判定函数 
		{
			if( define==1 && (x1-x2)==(y1-y2) )
			{
				cout << "The rectangle is a square" <<endl; 
			}
			else
			{
				cout << "The rectangle is not a square" << endl;
			}
		}
		
};
int main()
{
	float x1,x2,x3,x4;
	float y1,y2,y3,y4;
	
	cout << "Please enter coordinates :" 
		 << endl;
	cin  >>x1 >>x2 >>x3 >>x4
		 >>y1 >>y2 >>y3 >>y4;
		
	Rectangle a(x1,x2,x3,x4,y1,y2,y3,y4);
	cout << "The length is : "    << a.length()    << endl;
	cout << "The width is : "     << a.width()     << endl;
	cout << "The perimeter is : " << a.perimeter() << endl;
	cout << "The area is : "      << a.area()      << endl;
	a.square();//判定是否为正方形
	return 0;
}

Im Folgenden erweitern wir die Klasse „Rectangle“ weiter um die Funktionen „draw “ , „setFillCharacter “ und „setPerimeterCharacter“. Die Funktion „draw“ zeigt das Rechteck in einem umschlossenen Feld von 25 x 25 im ersten Quadranten des Rechtecks ​​an; die Funktion „setFillCharacter“ gibt das Zeichen außerhalb des Rechtecks ​​an, das gezeichnet werden soll, und die Funktion „setPerimeterCharacter“ gibt das Zeichen an, das zum Zeichnen der Kante des Rechtecks ​​verwendet wird. Auf diese Weise können wir das Rechteck zeichnen.

 Der Implementierungscode lautet wie folgt:

#include <iostream>
#include <string>

using namespace std;
class Rectangle
{
	private:
		float x1,x2,x3,x4;
		float y1,y2,y3,y4;
		int define;
		char outnumber,a;
		char innumber,b;
		float Length;
		float Width;
		
	public:
		Rectangle(float a,float b,float c,float d,float e,float f,float g,float h);//Initialize in constructor
		void setCoordinatesX(float X1,float X2,float X3,float X4 );
		void setCoordinatesY(float Y1,float Y2,float Y3,float Y4 );
		float length();
		float width();
		float perimeter();
		float area();
		void square();
		void draw();
		void setFillCharacter(char outnumber);
		void setPerimeterCharacter(char innumber);
		char getPerimeterCharacter();
		char getFillCharacter();
};

		Rectangle::Rectangle(float a,float b,float c,float d,float e,float f,float g,float h)//Initialize in constructor
		{
			setCoordinatesX(a,b,c,d);
			setCoordinatesY(e,f,g,h);
			define=0;
			outnumber='*';
			innumber='#';
			if(x1==x3 && x2==x4 && y1==y2 && y3==y4)
			{
				cout << "This is a rectangle !" << endl;
			}	 
		}
		
		void Rectangle:: setCoordinatesX(float X1,float X2,float X3,float X4 )
		{
			if(X1>=0&&X1<=20 && X2>=0&&X2<=20 && X3>=0&&X3<=20 && X4>=0&&X4<=20 )
			{
				x1=X1;
				x2=X2;
				x3=X3;
				x4=X4;
				define=1;	
			}
			else
			{
				cout << "x out of range" << endl;
				define=0;
			}
		
		}
		
		void Rectangle:: setCoordinatesY(float Y1,float Y2,float Y3,float Y4 )
		{
			if(Y1>=0&&Y1<=20 && Y2>=0&&Y2<=20 && Y3>=0&&Y3<=20 && Y4>=0&&Y4<=20 )
			{
				y1=Y1;
				y2=Y2;
				y3=Y3;
				y4=Y4;
				
				define=1;	
			}
			else
			{
				cout << "y out of range" << endl;
				define=0;
			}
				
		}
		
		float Rectangle:: length()
		{
			if( (x2-x1) < (y1-y3) )
			{
				cout << "Error: Length is less than width" << endl;
			}
			Length = x2-x1;
			return Length;
		}
		
		float Rectangle:: width()
		{
			Width =  y1-y3;
			return Width;
		}
		
		float Rectangle:: perimeter()//计算周长 
		{
			return 2*(x2-x1)+2*(y1-y3);
		}
		
		float Rectangle:: area()
		{
			return (x2-x1)*(y1-y3);
		}
		
		void Rectangle:: square()//判定函数 
		{
			if( define==1 && (x1-x2)==(y1-y2) )
			{
				cout << "The rectangle is a square" <<endl; 
			}
			else
			{
				cout << "The rectangle is not a square" << endl;
			}
		}
		
		void Rectangle::draw() //The rectangle is shown in a closed box of 25 * 25
		{
			int i,j;		
				for(i=25;i>=0;i--)	
				{	
					cout<<endl;	
					for(j=0;j<25;j++)	//2 9 6 9 2 1 6 1
					{	
						if(i<=y2 && i>=y3)	
						{	
							if(j==x1 || j==x2)
								cout<<getPerimeterCharacter();	
							else 
							{
								
								if(i==y1||i==y3)
								{
								
									if(j<x2&&j>x3)	
									{
										cout<<getPerimeterCharacter();
									}
										else 
										cout<<getFillCharacter();
								}	
								else 
								cout<<getFillCharacter();
							}
	
						}
	
						else cout<<getFillCharacter();
	
					}
	
				}
				cout<<endl;
			
		}
		
		void Rectangle::setFillCharacter(char b) //Draw the characters outside the rectangle
		{
			outnumber=a;;
		}
		
		void Rectangle::setPerimeterCharacter(char b) //Draw characters with rectangular edges
		{
			innumber=b;
		}
		
		char Rectangle::getFillCharacter()
		{
			return outnumber;
		}
		
		char Rectangle::getPerimeterCharacter()
		{
			return innumber;
		}
		
		
int main()
{
	float x1,x2,x3,x4;
	float y1,y2,y3,y4;
	
	cout << "Please enter coordinates :" //2 9 6 9 2 1 6 1 测试数据
		 << endl;
	cin  >>x1 >>y1 >>x2 >>y2
		 >>x3 >>y3 >>x4 >>y4;
		
	Rectangle a(x1,x2,x3,x4,y1,y2,y3,y4);
	cout << "The length is    : "      << a.length()    << endl;
	cout << "The width is     : "      << a.width()     << endl;
	cout << "The perimeter is : "      << a.perimeter() << endl;
	cout << "The area is      : "      << a.area()      << endl;
	a.square();
	cout << endl;
	a.setFillCharacter('#');
	a.setPerimeterCharacter('*');  
	a.draw();
	return 0;
} 

Das Obige ist mein Entwurf der Rechteckklasse. Ich habe C++ schon lange nicht mehr gelernt und meine Fähigkeiten sind begrenzt, daher kann ich nur hier schreiben. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht im Kommentarbereich.

おすすめ

転載: blog.csdn.net/weixin_74287172/article/details/130648250