QT图形界面编程入门第一章习题5

因为接手的项目是用C++写的,里面图形化界面涉及到QT所以专门从图书馆借了本《QT图形界面编程入门》,第一二章都没正式设计QT,复习了下对象,类,继承和多态之类的C++面对对象编程的重要内容,之前没有学过C++,但是学过C和java,所以一方面当学习新内容,另一方面也当时复习了。在第一章里面的习题5,可能你会觉得这是一道很简单的题目,但是确实足足让我写了一个半小时。最终终于还是写出来了,但是效率不高,还是有点拼凑的感觉。

题目如下:

无

最初的问题在于:用指针遍历char类型的数组,而我纠结的点在于不知道数组大小怎么用指针遍历呢,这个问题显然很蠢,直接用'\0'判断就行了;后来我还是决定记录下这个问题是因为我花了大量的时间却写出来一段效率及其不高的代码,望指点。代码如下:

class BigInt
{
private:
	int dat[200];
	int len;
public:
	//接受外部输入放入整形数组(作为字符输入,再将每一位转换成整数)
	void input(char* d);
	//将另一个对象other中的数据加到当前对象上
	void Add(BigInt &other);
};

void BigInt::input(char* d)
{
//开始的时候想用迭代器遍历数组,但是d.begin()处会报错表达式必须包含类型,几番尝试还是放弃了
	//vector<char>::iterator iter;
	//for (iter = d.begin(); iter != d.end(); iter++)
	//{
	//	cout << *iter << '\0';
	//}
	int num = atoi(d);
	int temp[200];
	int idex = 0;
	while (num != 0)
	{
		temp[idex] = num % 10;
		num /= 10;
		idex++;
	}
	int j = idex - 1;;
	for (int i = 0; i < idex; i++)
	{
		dat[j] = temp[i];
		j--;
	}
	len = idex;
	

}

void BigInt::Add(BigInt &other)
{
	int sum1 = 0;
	for (int i = 0; i < len; i++)
	{
		sum1 += dat[i] * pow(10, (len - i - 1));
	}
	int sum2 = 0;
	for (int i = 0; i < other.len; i++)
	{
		sum2 += other.dat[i] * pow(10, (other.len - i - 1));
	}

	int sum = sum1 + sum2;

	int temp[200];
	int idex = 0;
	while (sum != 0)
	{
		temp[idex] = sum % 10;
		sum /= 10;
		idex++;
	}
	int j = idex - 1;;
	for (int i = 0; i < idex; i++)
	{
		dat[j] = temp[i];
		j--;
	}

	for (int i = 0; i < idex; i++)
	{
		cout << dat[i];
	}

}
int main()
{
	BigInt c;
	BigInt c1;
	char cs[10] = "123456";
	char cs1[10] = "100000";
	c.input(cs);
	c1.input(cs1);
	c.Add(c1);
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值