、、8、、着实让人头疼的代码

今天见到的代码,是一个普及-的类型的,虽然思路清晰,不过,我这个老是在实现的时候出错,这个习惯真的不好,,,下面是题目:

着实捉急呢,这个东西,我的构思,大致分三块:
1、存储数据的2个数组:一个char类型的,大小为50;另外一个是int类型,大小为100,刚好存着这个需要的两个运算符
2、判断这个输入的字符是哪一个a 或b或c ,然后分别输出里面需要的结果模式,对于小于0的数,在输出的结果上加一即可。
3、将每一个输入的运算数给判断为几位数,然后使用在2里面的判断中。
苦思冥想,两个数组,两个判断条件,再加上一个一个函数,这已经是最简单的算法,而且不会出错的那种了,我的代码如下:

#include<iostream>
#include<string>
using namespace std;
char a[50];
int b[100];
int F(int x) {
	int n = 1;
	while (x / 10 != 0) {
		n++;
		x = x / 10;
	}
	return n;
}
int main()
{	
	int i;
	cin >> i;
	for (int m = 0 ,r=0; m < i; m++) {
		cin >> a[m] >> b[r] >> b[r + 1];
	}
	
	for (int r = 0,m=0; m < i;m++,r=r+2){

		if (a[m] == 'a') { cout << b[r] << "+" << b[r + 1] << "=" << b[r] + b[r + 1] << endl; cout << F(b[r]) + F(b[r + 1]) + F(b[r] + b[r + 1]) + 2 << endl; }
		if (a[m] == 'b') {
			cout << b[r] << "-" << b[r + 1] << "=" << b[r] - b[r + 1] << endl;
			if (b[r] - b[r + 1] < 0) { cout << F(b[r]) + F(b[r + 1]) + F(b[r] + b[r + 1]) + 3 << endl; }
			cout << F(b[r]) + F(b[r + 1]) + F(b[r] + b[r + 1]) + 2 << endl;
		}
			if (a[m] == 'c') { cout << b[r] << "*" << b[r + 1] << "=" << b[r] * b[r + 1] << endl; cout << F(b[r]) + F(b[r + 1]) + F(b[r] + b[r + 1]) + 2 << endl; }
		else{
			if (a[m-1] == 'a') { cout << b[r] << "+" << b[r + 1] << "=" << b[r] + b[r + 1] << endl; cout << F(b[r]) + F(b[r + 1]) + F(b[r] + b[r + 1]) + 2 << endl; }
			if (a[m-1] == 'b') {  
				cout << b[r] << "-" << b[r + 1] << "=" << b[r] - b[r + 1] << endl;  
				if(b[r]-b[r+1]<0){ cout << F(b[r]) + F(b[r + 1]) + F(b[r] + b[r + 1]) + 3 << endl; }
				cout << F(b[r]) + F(b[r + 1]) + F(b[r] + b[r + 1]) + 2 << endl;
			}
			if (a[m-1] == 'c') { cout << b[r] << "*" << b[r + 1] << "=" << b[r] * b[r + 1] << endl; cout << F(b[r]) + F(b[r + 1]) + F(b[r] + b[r + 1]) + 2 << endl; }
		}
	}
	return 0;
}
错误还是没有找出来。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值