2013-04-21 69 views
-3

对不起,因为我的作业是一个膛。 我正在使用C++编写一个程序,该程序创建3个随机矩阵并计算每个矩阵的总和并打印出总和最大的矩阵。 到目前为止,我遇到了两个问题。如何计算矩阵总和并对其进行比较

-My矩阵2和基质3是由于未知原因,我相同

-My结构矩阵总金额不正确而矩阵总和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(); 
} 
} 
} 
} 
} 
} 
} 
+0

很抱歉,但你的代码是可怕的,无关与节目。你真的应该自己做作业,阅读讲义+一本关于编程基础知识的书。不要指望用解决方案得到答案... – tamasgal 2013-04-21 21:38:41

回答

1

我给你一个短暂的“TODO”,你应该后完成你读一些讲义(这肯定会面面俱到需要做作业)。

因此,这里是你的总体规划:

  • 获取有关随机数的计算机Randomness on random.org 上的基本概述然后你就会明白,为什么随机数是不是随机在所有的,以及如何处理它们。
  • 您需要了解要继续使用的函数的概念,所以请再次阅读您的讲义,或者阅读关于编程基础知识的书籍。 Functions/Wikipedia.org
  • 写一个函数返回随机条目的矩阵
  • 写一个函数来计算给定矩阵“和”
  • 把一切融合在一起...

以及最后但并非最不重要的:

  • 做你的练习,自己做作业,阅读讲义。没有其他的方式来学习编码。
  • 几个星期后回来再次查看您的代码。
+0

它是一个在线课程,我读过材料,其中只有很少的材料,但他们没有说明细节。作为去年没有任何编程的高中生,我在提高自己的技能和编程知识方面遇到了麻烦,并且大多数时间花费在至少6-8个小时的代码上来找到更多的内容。材料,我真的很抱歉。 – Sorryforbeingabore 2013-04-21 22:51:23

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; 
    } 
} 
+0

谢谢,我会尽力的。 – Sorryforbeingabore 2013-04-21 22:52:58