C++實驗 類的應用

老師講了C++實驗,做一個小總結吧
創建一個名爲HugeInteger的大整數類(因爲現在的int型能存放的整數的位數有侷限性,可以只考慮正整數),表示方法,要求這個整數類型能存放長度爲40位的整數數字,可以自由設計是數據的數據成員來存放40位的大整數。例如:創建長度爲40的一個整數數組最多能存放40位的大整數(提示:數組的每個下標變量存放整數的一位)或者可以創建長度爲40的char型數組,每個位置放一個數字一位。

編寫提供3個成員函數

  • setInteger函數設置數據,功能是給長度爲40的數組賦值(提示:參數可以是int型數據,或者參數可以是字符串表示,能夠傳入的數據足夠長,因爲int本身就是侷限了HugeInteger的發揮)

  • print函數將大整數打印出來

  • add函數大整數類的對象之間可以進行加法運算。(思考:大整數類的對象和int型變量進行加法運算)思考的部分可以不用實現。

編寫一個測試程序,在測試HugeInteger類的成員函數。

要求:類要用接口與實現分離的方式創建,即.h和.cpp文件,測試文件另創建.cpp文件。提交時將三個文件打成壓縮包提交。

1 .h文件

#pragma once
class Huge
{
public:
	Huge();
	Huge(int a);
	Huge(char *s);
	void setInt(int a);
	void setChar(char *s);
	void print();
	Huge operator+(const Huge &h1);
	~Huge();
private:
	int n[40];
};

2.cpp文件

#include "Huge.h"
#include<cstring>
#include<iostream>
using namespace std;

Huge::Huge()
{
	for (int i = 0; i <= 39; i++)
		n[i] = 0;
	//n[40]={0};錯的
}
Huge::Huge(int a)
{
	setInt(a);
}
Huge::Huge(char *s)
{
	setChar(s);
}
void Huge::setInt(int a)
{
//a=12345,n[39]=5,n[38]=4,....00000....12345
	//n[0]=1,n[1]=2....12345...00000
	//n[0]=5,n[1]=4....54321...00000
	for (int i = 0; i <= 39; i++)
		n[i] = 0;
	int i = 39;
	while (a != 0)
	{
		n[i] = a % 10;
		i--;
		a /= 10;
	}
}
void Huge::setChar(char *s)//"1245457658678465675635"
{
	for (int i = 0; i <= 39; i++)
		n[i] = 0;
	int len = strlen(s);//"12a45",len=5;len=4;s[len]='5',n[39]=5;'5'-'0'=5
	len -= 1;
	for (int i = 39; i >= 0&&len>=0; i--,len--)
	{
		if(s[len]<='9'&&s[len]>='0')//
		n[i] = s[len] - '0';//n[i] = s[len] -48;
	}
}
void Huge::print()
{
	int i = 0;
	for (; i <= 39; i++)
		if (n[i] != 0)
			break;
	if (i == 40)
		cout << 0;
	else
		for (; i <= 39; i++)
			cout << n[i];
	cout << endl;
}
Huge Huge::operator+(const Huge &h1)
{
	Huge temp;//12345+567
	int c = 0;
	for (int i = 39; i >= 0; i--)
	{
		temp.n[i] = n[i] + h1.n[i] + c;
		if (temp.n[i] >=10)
		{
			c = 1;
			temp.n[i] %= 10;
		}
		else
			c = 0;
	}
	return temp;
}

Huge::~Huge()
{
}

3.測試文件

#include<iostream>
#include "Huge.h"
using namespace std;
int main()
{//explicit
	Huge h1, h2(762), h3("12a345");
	Huge h4 = 12345;
	h4 = h3;
	h1.print();
	h2.print();
	h3.print();
	h1=h2+h3;
	h1.print();
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章