多邊形周長計算(繼承)


1、題目:

給出下面的多邊形基類框架:

class polygon

{ protected:
int number;//邊數,最多不超過100條邊

private:
int side_length[100];//邊長數組

public:
polygon();//構造函數根據需要重載
int perimeter();//計算多邊形邊長
void display();//輸出多邊形邊數和周長

}

建立一個派生類rectangle(矩形),增加以下數據成員:
int height;
int width;

增加以下成員函數:
rectangle類的無參和參數化構造函數
int perimeter();//計算矩形邊長
void display();//輸出多邊形邊數和周長

建立一個派生類equal_polygon(等邊多邊形),增加以下數據成員:
int side_len;

增加以下成員函數:
equal_polygon類的無參和參數化構造函數
int perimeter();//計算等邊多邊形邊長
void display();//輸出多邊形邊數和周長

生成上述類並編寫主函數,根據輸入的多邊形信息,相應建立一個多邊形類對象或矩形類對象或等邊多邊形類對象,計算每一個多邊形的周長並且輸出其邊數和周長。

輸入格式: 測試輸入包含一個測試用例,該測試用例的第一行輸入多邊形的個數n,接下來n行每一行給出一個多邊形的基本信息,每行的第一個數字為當前多邊形的類型,0為一般多邊形,后面跟隨m個數字為m條邊的邊長,-1為一般多邊形邊長輸入結束標志,1為矩形,后面跟隨兩個數字,分別為height和width,2為等邊多邊形,后面跟隨兩個數字為等邊多邊形的邊數和邊長。

輸入樣例:

3

0 32 54 76 88 24 -1

1 32 54

2 3 32

輸出樣例:

5 274

4 172

3 96

2、代碼:

#include<iostream>
using namespace std;
class polygon
{
	protected:
		int number;
	private:
		int side_length[100];
	public:
		polygon() {};
		polygon(int num)
		{
			number=num;
		}
		void set(int len[])
		{
			for(int i=0; i<number; i++)
			{
				side_length[i]=len[i];
			}

		}
		int perimeter()
		{
			int ans=0;
			for(int i=0; i<number; i++)
			{
				ans+=side_length[i];
			}
			return ans;
		}
		void display()
		{
			cout<<number<<" "<<perimeter()<<endl;
		}
};

class rectangle:public polygon
{
	private:
		int height;
		int width;
	public:
		rectangle(int num,int a,int b):polygon(num)
		{
			height=a;
			width=b;
		}
		int perimeter1()
		{
			int l=0;
			l=height+width;
			l*=2;
			return l;
		}
		void display1()
		{
			cout<<"4 "<<perimeter1()<<endl;
		}
};
class equal_polygon:public polygon
{
	private:
		int side_len;
	public:
		equal_polygon(int num,int side):polygon(num)
		{
			side_len=side;
		}
		int perimeter2()
		{
			int le=0;
			le=side_len*number;
			return le;
		}
		void display2()
		{
			cout<<number<<" "<<perimeter2()<<endl;
		}
};

int main()
{
	int n;
	cin>>n;
	int ch;

	for(int i=0; i<n; i++)
	{
		cin>>ch;
		int o=1;
		if(ch==0)
		{
			int a[100];
			int j=0;
			while(cin>>a[j])
			{
				if(a[j]==-1)
				{
					break;
				}

				j++;
			}
			polygon po(j);
			po.set(a);
			po.perimeter();
			po.display();

		}
		if(ch==1)
		{
			int a,b;
			cin>>a>>b;
			rectangle re(4,a,b);
			re.perimeter1();
			re.display1();
		}
		if(ch==2)
		{
			int nu,side_l;
			cin>>nu>>side_l;
			equal_polygon equal(nu,side_l);
			equal.perimeter2();
			equal.display2();
		}
	}
	return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM