给定若干个矩阵,求各矩阵的行数、列数、全部元素之和

描述

给定若干个矩阵,找出各矩阵的行数、列数。

 

输入

输入数据有若干个矩阵,矩阵之间用空行分隔。每行输入的总字符数不超过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;
}
c++

2个回答

你的源码不是导致Runtime Error的原因,可能是你的编译选项导致的。建议你检查一下编译参数

建议给下OJ的原题地址,而且你这源码本身在不RE的情况下,似乎也不能输出正确结果。

qq_26119041
Hibiki. 可能是我复制题目的时候格式错了,我样例输入重新复制了,我这运行样例输出正确的
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐