描述
给定若干个矩阵,找出各矩阵的行数、列数。
输入
输入数据有若干个矩阵,矩阵之间用空行分隔。每行输入的总字符数不超过65536。
输出
对于每一种情形,先输出“Case #:”(#为序号,从1起),然后矩阵的行数,逗号,列数,逗号,矩阵全部元素之和。
样例输入1
1.5 2.2 3.3
0.4 4.0 6.5
1 4 5 7 8 10
3 6 3 4 6 8
9 2 4 6 7 5
1 3
2 5
6 7
样例输出1
Case 1: 2, 3, 17.9
Case 2: 3, 6, 98
Case 3: 3, 2, 24
我的代码如下
报错Runtime Error!
网上找到RE的常见原因是
①除以零
②数组越界
③指针越界
④使用已经释放的空间
⑤数组开得太大,超出了栈的范围,造成栈溢出
C++初学者,想知道是哪里出了问题
(已解决RE问题,是OJ不允许while(true)循环,但更改后又出现Wrong Answer……,下面是更改后的代码)
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
int t = 0; //Case序号
string x;
stringstream ss;
long double temp;
long long count = 0; //count总元素个数
long long row = 0, col = 0; //row行数,col列数
long double sum = 0; //sum全部元素之和
while(getline(cin, x)) //按行输入
{
if(x.length() != 0)
{
ss.clear();
ss.str(x);
while(ss >> temp) //输入到浮点型变量temp
{
sum += temp; //累加求和
count ++; //记录总个数
}
row ++; //记录行数
}
else //读到空行即一种情形输入完毕
{
t ++;
if(row != 0)
col = count / row; //总个数除以行数即为列数
else
col = 0; //行数0则列数0
cout << "Case " << t << ": "
<< row << ", "
<< col << ", "
<< sum << endl;
row = 0; //归零
col = 0;
sum = 0;
count = 0;
}
}
return 0;
}