-3

宿題で退屈してごめんなさい。私は、3 つのランダムな行列を作成し、それぞれの合計を計算し、最大の合計を出力する C++ のプログラムに取り組んでいます。これまでのところ、2つの問題に遭遇しました。

-マトリックス 2 とマトリックス 3 は、理由は不明ですが同一です

- マトリックスの総和が正しくなく、マトリックス サム 2 とマトリックス サム 3 が同じマトリックスであっても異なります。
これは私がこれまでに思いついたものです:

#include <iostream>
#include <algorithm>
#include <ctime>
using namespace std;      
int main()
{   
int a[4][4]; 


{ // matrix 1
    int Suvaline1 = rand() % 100 ; 
    int Suvaline2 = rand() % 100 ; 
    int Suvaline3 = rand() % 100 ;
    int Suvaline4 = rand() % 100 ;
    int Suvaline5 = rand() % 100 ;
    int Suvaline6 = rand() % 100 ;
    int Suvaline7 = rand() % 100 ; 
    int Suvaline8 = rand() % 100 ; 
    int Suvaline9 = rand() % 100 ;  
    int Suvaline10 = rand() % 100 ;  
    int Suvaline11 = rand() % 100; 
    int Suvaline12 = rand() % 100 ; 
    int Suvaline13 = rand() % 100 ; 
    int Suvaline14 = rand() % 100 ; 
    int Suvaline15 = rand() % 100;             
    int Suvaline16 = rand() % 100 ;

    int a[4][4] =  {Suvaline1,Suvaline2,Suvaline3,Suvaline4,Suvaline5,Suvaline6,Suvaline7,Suvaline8,Suvaline9,Suvaline10,Suvaline11,Suvaline12,Suvaline13,Suvaline14,Suvaline15,Suvaline16};   

    srand(time(0));

    std::random_shuffle(&a[0][0],&a[0][0]);

    // print matrix 1
    for (int i=0; i<4; ++i)
    {
        for (int j=0; j<4; ++j)
        {
            std::cout << a[i][j] << "\t";
        }
        std::cout << "\n";
    } 
 {   // calculate matrix 1 sum
int i,j;
int sumrow11;
sumrow11=0; 
for(j=0;j<2;j++) 
sumrow11=sumrow11+a[i][j]; 
int sumrow12;
sumrow12=0; 
for(j=1;j<3;j++) 
sumrow12=sumrow12+a[i][j]; 

int sumrow13;
sumrow13=0; 
for(j=2;j<4;j++) 
sumrow13=sumrow13+a[i][j]; 

int sumrow14;
sumrow14=0; 
for(j=3;j<5;j++) 
sumrow14=sumrow14+a[i][j];  
int sum1;
sum1==sumrow11+sumrow12+sumrow13+sumrow14;// print matrix 1 sum
cout<<"\n Esimese maatriksi summa "<<sum1;   
{  // matrix 2
    int Suvaline1 = rand() % 100 ; 
    int Suvaline2 = rand() % 100 ; 
    int Suvaline3 = rand() % 100 ;
    int Suvaline4 = rand() % 100 ;
    int Suvaline5 = rand() % 100 ;
    int Suvaline6 = rand() % 100 ;
    int Suvaline7 = rand() % 100 ; 
    int Suvaline8 = rand() % 100 ; 
    int Suvaline9 = rand() % 100 ;  
    int Suvaline10 = rand() % 100 ;  
    int Suvaline11 = rand() % 100; 
    int Suvaline12 = rand() % 100 ; 
    int Suvaline13 = rand() % 100 ; 
    int Suvaline14 = rand() % 100 ; 
    int Suvaline15 = rand() % 100;             
    int Suvaline16 = rand() % 100 ;
    int a[4][4] =  {Suvaline1,Suvaline2,Suvaline3,Suvaline4,Suvaline5,Suvaline6,Suvaline7,Suvaline8,Suvaline9,Suvaline10,Suvaline11,Suvaline12,Suvaline13,Suvaline14,Suvaline15,Suvaline16};   

    srand(time(0));

    std::random_shuffle(&a[0][0],&a[0][0]);

    // print matrix 2
cout << "\n---------------------------------------------------------" << endl;
    for (int i=0; i<4; ++i)
    {
        for (int j=0; j<4; ++j)
        {
            std::cout << a[i][j] << "\t";
        }
        std::cout << "\n";
    }  
    {   // calculate matrix 2 sum
int i,j;
int sumrow21;
sumrow21=0; 
for(j=0;j<2;j++) 
sumrow21=sumrow21+a[i][j]; 
int sumrow22;
sumrow22=0; 
for(j=1;j<3;j++) 
sumrow22=sumrow22+a[i][j]; 

int sumrow23;
sumrow23=0; 
for(j=2;j<4;j++) 
sumrow23=sumrow23+a[i][j]; 

int sumrow24;
sumrow24=0; 
for(j=3;j<5;j++) 
sumrow24=sumrow24+a[i][j];  
int sum2;
sum2==sumrow21+sumrow22+sumrow23+sumrow24;
cout<<"\n Teise maatriksi summa "<<sum2;// print matrix 2 sum
{  // matrix 3

    int Suvaline1 = rand() % 100 ; 
    int Suvaline2 = rand() % 100 ; 
    int Suvaline3 = rand() % 100 ;
    int Suvaline4 = rand() % 100 ;
    int Suvaline5 = rand() % 100 ;
    int Suvaline6 = rand() % 100 ;
    int Suvaline7 = rand() % 100 ; 
    int Suvaline8 = rand() % 100 ; 
    int Suvaline9 = rand() % 100 ;  
    int Suvaline10 = rand() % 100 ;  
    int Suvaline11 = rand() % 100; 
    int Suvaline12 = rand() % 100 ; 
    int Suvaline13 = rand() % 100 ; 
    int Suvaline14 = rand() % 100 ; 
    int Suvaline15 = rand() % 100;             
    int Suvaline16 = rand() % 100 ;
    int a[4][4] =  {Suvaline1,Suvaline2,Suvaline3,Suvaline4,Suvaline5,Suvaline6,Suvaline7,Suvaline8,Suvaline9,Suvaline10,Suvaline11,Suvaline12,Suvaline13,Suvaline14,Suvaline15,Suvaline16};   

    srand(time(0));

    std::random_shuffle(&a[0][0],&a[0][0]); 

    // print matrix 3
cout << "\n---------------------------------------------------------" << endl;
    for (int i=0; i<4; ++i)
    {
        for (int j=0; j<4; ++j)
        {
            std::cout << a[i][j] << "\t";
        }
        std::cout << "\n";
    } 


{   // calculate matrix 3 sum
int i,j;
int sumrow31;
sumrow31=0; 
for(j=0;j<2;j++) 
sumrow31=sumrow31+a[i][j]; 
int sumrow32;
sumrow32=0; 
for(j=1;j<3;j++) 
sumrow32=sumrow32+a[i][j]; 

int sumrow33;
sumrow33=0; 
for(j=2;j<4;j++) 
sumrow33=sumrow33+a[i][j]; 

int sumrow34;
sumrow34=0; 
for(j=3;j<5;j++) 
sumrow34=sumrow34+a[i][j];  
int sum3;
sum3==sumrow31+sumrow32+sumrow33+sumrow34;
cout<<"\n Kolmanda maatriksi summa "<<sum3;     // print matrix 3 sum

getchar(); 
getchar();
} 
}  
} 
} 
} 
} 
}
4

2 に答える 2

1

短い「TODO」を提供します。これは、いくつかの講義ノートを読んだに完了する必要があります (宿題をするために必要なすべてを網羅しています)。

だからここにあなたのマスタープランがあります:

  • コンピューター上の乱数に関する基本的な概要を取得するrandom.org のランダム性 次に、乱数がまったくランダムではない理由と、それらを処理する方法を理解します。
  • 先に進むには関数の概念を理解する必要があるため、講義ノートをもう一度読むか、プログラミングの基礎に関する本を入手してください。関数 / Wikipedia.org
  • ランダムなエントリを持つ行列を返す関数を書いてください
  • 与えられた行列の「合計」を計算する関数を書く
  • すべてをまとめて…</li>

最後になりましたが、重要なこと:

  • 演習を行い、宿題を自分で行い、講義ノートを読みます。コーディングを学ぶ方法は他にありません。
  • 数週間後に戻ってきて、コードをもう一度見てください。
于 2013-04-21T21:50:51.817 に答える
0

時々ループを使ってみることができます。本当に役に立ちます。あなたのコードは長すぎて複雑です。これが実際のプログラムです (ただし、コードの各行を理解するために、単にコピー アンド ペーストしないでください。それはあなたのためです):

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

struct rndArr
{
    int x[4][4];
    int sum;
};

int main()
{
    int i, j, z, maxSum, maxZ;
    srand(time(0));
    struct rndArr st[3];

    for(z=0;z<3;z++) //looping through matrix
    {
        for(i=0;i<4;i++) //looping through row of each matrix
        {
            for(j=0;j<4;j++) //looping through column of each matrix
            {
                st[z].x[i][j]=rand() % 100; //initializing matrix with random numbers
                //calculating sum of each matrix
                if(i==0 && j==0) st[z].sum = st[z].x[0][0]; 
                else st[z].sum += st[z].x[i][j];
            }
        }
    }

    //printing matrix and its sum
    for(z=0;z<3;z++)
    {
        cout << z+1 << ". matrix:" << endl;
        for(i=0;i<4;i++)
        {
            for(j=0;j<4;j++)
            {
                cout << st[z].x[i][j] << "  ";
            }
            cout << endl;
        }
        cout << "sum = " << st[z].sum;
        cout << endl << endl;
    }
    cout << "\n\n\n---------\n\n\n";

    // finding matrix with max sum
    maxSum = st[0].sum;
    maxZ = 0;
    for(z=1;z<3;z++)
    {
        if(st[z].sum > maxSum)
        {
            maxSum = st[z].sum;
            maxZ = z;
        }
    }

    //printing matrix with largest sum
    cout << "matrix with largest sum is: " << maxZ+1 << " matrix" << endl;
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)
        {
            cout << st[maxZ].x[i][j] << "  ";
        }
        cout << endl;
    }
}
于 2013-04-21T21:58:51.970 に答える