c++ 数据过多无法显示,怎么展示会比较好?

数据过多无法显示,之前没描述清楚……我在多说一点,这个是二维数组完成矩阵转置,维度是10和100000,按上课讲的意思是,1010和100000100000,1010的按我写的把100000改成10是可以正确运行的,100000100000的我刚去问过说肯定显示不出来,可以不完全显示,比如显示开头和结尾,或者其他方案,都可以,没有固定的办法,只要合理就行。我有尝试过改成100100也是正常运行的,结果也会出来,100000100000可能是太大了,不知道有没有好的解决方案。

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
    srand((int)time(0));
    int a[100000][100000], b[100000][100000];
    int i, j;

    //A
    for (i = 0; i < 100000; i++)
        for (j = 0; j < 100000; j++)
        a[i][j]=rand()%100;
        
    //输出A
    cout << "A="<<endl;
    for (i = 0; i < 100000; i++)
    {
        for (j = 0; j < 100000; j++)
            cout << a[i][j] << '\t';
        cout << endl;
    }
    
    //B=A转置 
    for (i = 0; i < 100000; i++)
        for (j = 0; j < 100000; j++)
            b[i][j]=a[j][i];
   
    //输出B
    cout << "转置="<<endl;
    for (i = 0; i < 100000; i++)
    {
        for (j = 0; j < 100000; j++)
            cout << b[i][j] << '\t';
        cout << endl;
    }
    return 0;
}

img


怎么展示会比较好?

内存太大了,可以改成动态数组vector试试看,内存将近20~30GB呢

程序返回值不为0,运行错误。
数组开的太大了,改成动态数组。
你这数据也太大了。
100000x100000x4=40,000,000,000 一个数组就得30多G了。

你这申请的a和b数组空间太大了。你为啥要申请这么大空间呢???
你知道你申请多大空间吗?10万的平方,大概9-10个G!!! ,你内存都没这么大吧。
题目看一下。应该不需要这么大。否则你怎么搞也不行的。a和b加起来就要20G内存啊

不是展示不了,是你把数组放在main里面的问题。你把数组开到外面应该就会Ok。
再回答你那个展示不了的问题,你可以写上:

freopen("input.txt", "r", stdin); // 重定向输入,即从input.txt读取输入
freopen("output.txt", "w", stdout); // 重定向输出

// 中间放你的程序,输出将会直接保存到output.txt

fclose(stdin);
fclose(stdout);

int 4字节。a[100000][100000]占用4*10^10字节,换成GB约等于37.253GB...

题目应该是10w个数字吧,你写成a[1000][100]就可以啦,你转置的时候借助一个临时变量就行,这么搞内存不够用啊

先在小数据里面打印出来,测试代码是否正确,没问题再把数据改大就行了,直接输出这么大的数据,啥办法都不好使

二维数组开的太大了,如果开这么大数组的需要,可以考虑动态数组或者动态处理数据。
降到a[100][100]、b[100][100]试试。
如有帮助,还请采纳!谢谢!

数据组开的太大了

返回不为0,RE了啊,你二维数组开太大了,顶多开到两位积为1e7,否则会炸