回 帖 发 新 帖 刷新版面

主题:[讨论]下面是我自己编的程序,不知为什么怎么也运行不了,求各位高手看一下问题在那里?谢谢!

#define N 256
class Array
{ private:
     int c[N][N];
  public:
  int Add(int n1,int n2);
  int Dec(int n1,int n2);
  int Mul();
  void Print();
     void menu();
}
#include"iostream"    //array.cpp
using namespace std;
#include"array.h"
int main()
{ Array ar;
  int a[N][N],b[N][N];
  int i,j;
  int n,m=1;
  int n1,m1,n2,m2;
  while(m)
  {
   ar.menu();
   cin>>n;
   switch(n)
   {case 1:{
        ar.Add();
      break;}
    case 2:{
                       ar.Dec();
                          break;}]}
               case 3:{
           cout<<"请输入第一个矩阵的行数和列数:"<<endl;
     cin>>n1>>m1;
     cout<<"请输入第一个矩阵的数据:"<<endl;
     for(i=0;i<n1;i++)
     {for(j=0;j<=m1;j++)cin>>a[i][j]>>" ";
      cout<<endl;
     }
     cout<<"请输入第二个矩阵的行数和列数:"<<endl;
     cin>>n2>>m2;
     cout<<"请输入第二个矩阵的数据:"<<endl;
     for(i=0;i<n2;i++) 
     {for(j=0;j<m2;j++)cin>>b[i][j]>>" ";
      cout<<endl;
     }
     if(n1==m2&&n2==m1)
     {ar.Mul(n1,m2,n2);}
      else cout<<"您的输入有误!"<<endl;
      break;
    }
  case 4: m=0;
   }
  }
  return 0;
}
void menu()
{
 cout<<endl<<"请选择:"<<endl;
 cout<<"1.矩阵加法。"<<endl;
 cout<<"2.矩阵减法。"<<endl;
 cout<<"3.矩阵乘法。"<<endl;
 cout<<"4.退出。"<<endl;
 cout<<"请输入您的选择结果:"<<endl<<endl;
}
int Array::Add()
{ cout<<"请输入第一个矩阵的行数和列数:"<<endl;
  cin>>n1>>m1;
  cout<<"请输入第一个矩阵的数据:"<<endl;    
  for(i=0;i<n1;i++)
  {for(j=0;j<=m1;j++)cin>>a[i][j]>>"\t";
  cout<<endl;
  }
  cout<<"请输入第二个矩阵的行数和列数:"<<endl;
  cin>>n2>>m2;
  cout<<"请输入第二个矩阵的数据:"<<endl;
  for(i=0;i<n2;i++) 
  {for(j=0;j<m2;j++)cin>>b[i][j]>>"\t";
  cout<<endl;
  }
  if(n1==n2&&m1==m2)
  {for(i=0;i<n1;i++)
  {for(j=0;j<ml;j++)
  {c[i][j]=a[i][j]+b[i][j];}
  }
  cout<<"矩阵相加后运算结果为:"<<endl;
  for(i=0;i<n1;i++)
  {for(j=0;j<m1;j++)cout<<c[i][j]<<" ";
   cout<<endl;
  }
  }
  else cout<<"您的输入有误!"<<endl;
  return 0;
}  
int Array::Dec()
{ cout<<"请输入第一个矩阵的行数和列数:"<<endl;
  cin>>n1>>m1;
  cout<<"请输入第一个矩阵的数据:"<<endl;
  for(i=0;i<n1;i++)
  {for(j=0;j<=m1;j++)cin>>a[i][j]>>"\t";
  cout<<endl;
  }
  cout<<"请输入第二个矩阵的行数和列数:"<<endl;
  cin>>n2>>m2;
  cout<<"请输入第二个矩阵的数据:"<<endl;
  for(i=0;i<n2;i++) 
  {for(j=0;j<m2;j++)cin>>b[i][j]>>"\t";
  cout<<endl;
  }
  if(n1==n2&&m1==m2)
  {for(i=0;i<n1;i++)
  {for(j=0;j<ml;j++)
  {c[i][j]=a[i][j]-b[i][j];}
  }
  cout<<"矩阵相减后运算结果为:"<<endl;
  for(i=0;i<n1;i++)
  {for(j=0;j<m1;j++)cout<<c[i][j]<<"\t";
   cout<<endl;
  }
  }
  else cout<<"您的输入有误!"<<endl;
  return 0;
}
int Array::Mul(int b1,int b2,int b3)
{ int i,j,tmp,k;
  cout<<"矩阵相乘后的结果为:"<<endl;
  for(i=0;i<b1;i++)
  {for(j=0;j<b2;j++)
  {tmp=0;
   for(k=0;k<b3;k++)tmp+=a[i][k]*b[k][j];
   cout<<tmp<<"\t";
  }
   cout<<endl;
  }
}[em8]

回复列表 (共3个回复)

沙发

你好!
这是你自己照着书敲的吗?
我帮你修改了一下:
class声明时要用;结尾
你把l当成1
函数声明和函数实现不一致
我把你的变量改成全局变量,不知道你用个类想干嘛,,,你要用类来实现的话,把类的声明和定义好好看看吧!
我就不给你在该了,,
我帮你调试了一下,
可以运行了,,
如果有什么逻辑错误,,你自己好好改改,,

板凳

代码如下:
#define N 256
class Array   ///数组类

private:
    int c[N][N];
public:
    int Add();
    int Dec();
    int Mul(int b1,int b2,int b3);
    void Print();
    void menu();
};



#include<iostream>    //array.cpp
using namespace std;
 
    Array ar;
    int a[N][N],b[N][N];
    int i,j;
    int n,m=1;
    int n1,m1,n2,m2;
int main()
{
    
    
    while(m)
    {
        ar.menu();
        cin>>n;
        switch(n)
        {
        case 1:
            {
                ar.Add();
                break;
            }
        case 2:
            {
                ar.Dec();
                break;
            }
        case 3:
            {
                cout<<"请输入第一个矩阵的行数和列数:"<<endl;
                cin>>n1>>m1;
                cout<<"请输入第一个矩阵的数据:"<<endl;
                for(i=0;i<n1;i++)
                {
                    for(j=0;j<=m1;j++)cin>>a[i][j]>>" ";
                    cout<<endl;
                }
                cout<<"请输入第二个矩阵的行数和列数:"<<endl;
                cin>>n2>>m2;
                cout<<"请输入第二个矩阵的数据:"<<endl;
                for(i=0;i<n2;i++) 
                {
                    for(j=0;j<m2;j++)
                        cin>>b[i][j]>>" ";
                    cout<<endl;
                }
                if(n1==m2&&n2==m1)
                {
                    ar.Mul(n1,m2,n2);
                }
                else 
                    cout<<"您的输入有误!"<<endl;
                    break;
            }
        case 4: 
            m=0;
            break;
        default:
            break;
        }
    }
    return 0;
}

/////////////////////////////////////////////////////////////////////////////

3 楼

void Array::menu()
{
    cout<<endl<<"请选择:"<<endl;
    cout<<"1.矩阵加法。"<<endl;
    cout<<"2.矩阵减法。"<<endl;
    cout<<"3.矩阵乘法。"<<endl;
    cout<<"4.退出。"<<endl;
    cout<<"请输入您的选择结果:"<<endl<<endl;
}



int Array::Add()//矩阵相加

    cout<<"请输入第一个矩阵的行数和列数:"<<endl;
    cin>>n1>>m1;
    cout<<"请输入第一个矩阵的数据:"<<endl;    
    for(int i=0;i<n1;i++)
    {
        for(int j=0;j<=m1;j++)
        cin>>a[i][j]>>"\t";
        cout<<endl;
    }
    cout<<"请输入第二个矩阵的行数和列数:"<<endl;
    cin>>n2>>m2;
    cout<<"请输入第二个矩阵的数据:"<<endl;
    for( i=0;i<n2;i++) 
    {
        for( j=0;j<m2;j++)cin>>b[i][j]>>"\t";
        cout<<endl;
    }
    if(n1==n2&&m1==m2)
    {
        for(int i=0;i<n1;i++)
        {
            for(int j=0;j<m1;j++)
                
            {
                c[i][j]=a[i][j]+b[i][j];
            }
        }
        cout<<"矩阵相加后运算结果为:"<<endl;
        for(i=0;i<n1;i++)
        {
            for(j=0;j<m1;j++)cout<<c[i][j]<<" ";
            cout<<endl;
        }
    }
    else cout<<"您的输入有误!"<<endl;
    return 0;
}  
/////////////////////////////////////////////////////////////////////////
int Array::Dec()//矩阵相减

    cout<<"请输入第一个矩阵的行数和列数:"<<endl;
    cin>>n1>>m1;
    cout<<"请输入第一个矩阵的数据:"<<endl;
    for(int i=0;i<n1;i++)
    {
        for(int j=0;j<=m1;j++)
            cin>>a[i][j]>>"\t";
        cout<<endl;
    }
    cout<<"请输入第二个矩阵的行数和列数:"<<endl;
    cin>>n2>>m2;
    cout<<"请输入第二个矩阵的数据:"<<endl;
    for(i=0;i<n2;i++) 
    {
        for(j=0;j<m2;j++)cin>>b[i][j]>>"\t";
        cout<<endl;
    }
    if(n1==n2&&m1==m2)
    {
        for(i=0;i<n1;i++)
        {
            for(j=0;j<m1;j++)
            {
                c[i][j]=a[i][j]-b[i][j];
            }
        }
        cout<<"矩阵相减后运算结果为:"<<endl;
        for(i=0;i<n1;i++)
        {
            for(j=0;j<m1;j++)cout<<c[i][j]<<"\t";
            cout<<endl;
        }
    }
    else cout<<"您的输入有误!"<<endl;
    return 0;
}


int Array::Mul(int b1,int b2,int b3)  // 矩阵相乘

    int i,j,tmp,k;
    cout<<"矩阵相乘后的结果为:"<<endl;
    for( i=0;i<b1;i++)
    {
        for( j=0;j<b2;j++)
        {
            tmp=0;
            for(k=0;k<b3;k++)tmp+=a[i][k]*b[k][j];
            cout<<tmp<<"\t";
        }
        cout<<endl;
    }
    return 0;

我来回复

您尚未登录,请登录后再回复。点此登录或注册