網頁

2017年5月9日 星期二

C++矩陣乘法

14 則留言:

  1. B10333064王韻菱2017年5月9日 上午11:43

    #include <iostream>
    #include <cstdlib>
    #include <random>
    #include <ctime>
    #include <iomanip>
    using namespace std;
    mt19937 gen;
    uniform_real_distribution<double> X;
    void gen_matrix( double** a, int m, int n){
    // a = new double*[m];
    for (int i=0 ; i<m ; i++)
    {
    a[i] = new double[n];
    for (int j=0 ; j<n ; j++)
    {
    a[i][j]=X(gen);
    cout <<setw(15)<<setprecision(10)<<a[i][j];
    }
    cout<<endl;
    }
    }
    void del_matrix( double** a, int m){
    for( int i=0; i<m; i++)
    delete [] a[i];
    delete [] a;
    a=NULL;
    cout << "deleted\n";
    }
    void matrix_mul(double** a, double** b, double** c, int m, int n, int p){
    // c = new double*[m];
    for (int i=0 ; i<m ; i++)
    {
    c[i] = new double[n];
    for (int j=0 ; j<n; j++)
    {
    c[i][j]=0;
    for(int k=0; k<p; k++)
    c[i][j]+=a[i][k]*b[k][j];
    cout <<setw(15)<<setprecision(10)<<c[i][j];
    }
    cout<<endl;
    }

    }
    int main( )
    {
    gen= mt19937(clock());
    X = uniform_real_distribution<double>(0, 10);
    double **a=new double*[3], **b=new double*[4];
    cout<<"a=\n";
    gen_matrix( a, 3, 4);
    cout<<"==================\nb=\n";
    gen_matrix( b, 4, 3);
    cout<<"==================\nc=a*b=\n";
    double **c = new double*[3];
    matrix_mul(a, b, c, 3, 3, 4);
    del_matrix(a, 3);
    del_matrix(b, 4);
    del_matrix(c, 3);
    system("Pause");
    return 0;
    }

    回覆刪除
  2. B10333106 劉郁芃2017年5月9日 上午11:47

    #include <iostream>
    #include <cstdlib>
    #include <random>
    #include <ctime>
    #include <iomanip>
    using namespace std;
    mt19937 gen;
    uniform_real_distribution<double> X;
    void gen_matrix( double** a, int m, int n){
    // a = new double*[m];
    for (int i=0 ; i<m ; i++)
    {
    a[i] = new double[n];
    for (int j=0 ; j<n ; j++)
    {
    a[i][j]=X(gen);
    cout <<setw(15)<<setprecision(10)<<a[i][j];
    }
    cout<<endl;
    }
    }
    void del_matrix( double** a, int m){
    for( int i=0; i<m; i++)
    delete [] a[i];
    delete [] a;
    a=NULL;
    cout << "deleted\n";
    }
    void matrix_mul(double** a, double** b, double** c, int m, int n, int p){
    // c = new double*[m];
    for (int i=0 ; i<m ; i++)
    {
    c[i] = new double[n];
    for (int j=0 ; j<n; j++)
    {
    c[i][j]=0;
    for(int k=0; k<p; k++)
    c[i][j]+=a[i][k]*b[k][j];
    cout <<setw(15)<<setprecision(10)<<c[i][j];
    }
    cout<<endl;
    }

    }
    int main( )
    {
    gen= mt19937(clock());
    X = uniform_real_distribution<double>(0, 10);
    double **a=new double*[3], **b=new double*[4];
    cout<<"a=\n";
    gen_matrix( a, 3, 4);
    cout<<"==================\nb=\n";
    gen_matrix( b, 4, 3);
    cout<<"==================\nc=a*b=\n";
    double **c = new double*[3];
    matrix_mul(a, b, c, 3, 3, 4);
    del_matrix(a, 3);
    del_matrix(b, 4);
    del_matrix(c, 3);
    system("Pause");
    return 0;
    }

    回覆刪除
  3. B10333055 翁恩義2017年5月9日 上午11:47

    #include <iostream>
    #include <cstdlib>
    #include <random>
    #include <ctime>
    #include <iomanip>
    using namespace std;
    mt19937 gen;
    uniform_real_distribution<double> X;
    void gen_matrix( double** a, int m, int n){
    // a = new double*[m];
    for (int i=0 ; i<m ; i++)
    {
    a[i] = new double[n];
    for (int j=0 ; j<n ; j++)
    {
    a[i][j]=X(gen);
    cout <<setw(15)<<setprecision(10)<<a[i][j];
    }
    cout<<endl;
    }
    }
    void del_matrix( double** a, int m){
    for( int i=0; i<m; i++)
    delete [] a[i];
    delete [] a;
    a=NULL;
    cout << "deleted\n";
    }
    void matrix_mul(double** a, double** b, double** c, int m, int n, int p){
    // c = new double*[m];
    for (int i=0 ; i<m ; i++)
    {
    c[i] = new double[n];
    for (int j=0 ; j<n; j++)
    {
    c[i][j]=0;
    for(int k=0; k<p; k++)
    c[i][j]+=a[i][k]*b[k][j];
    cout <<setw(15)<<setprecision(10)<<c[i][j];
    }
    cout<<endl;
    }

    }
    int main( )
    {
    gen= mt19937(clock());
    X = uniform_real_distribution<double>(0, 10);
    double **a=new double*[3], **b=new double*[4];
    cout<<"a=\n";
    gen_matrix( a, 3, 4);
    cout<<"==================\nb=\n";
    gen_matrix( b, 4, 3);
    cout<<"==================\nc=a*b=\n";
    double **c = new double*[3];
    matrix_mul(a, b, c, 3, 3, 4);
    del_matrix(a, 3);
    del_matrix(b, 4);
    del_matrix(c, 3);
    system("Pause");
    return 0;
    }

    回覆刪除
  4. #include <iostream>
    #include <random>
    #include <ctime>
    using namespace std;

    class person{
    double height,weight;
    public:
    person(){}
    person(double height,double weight){
    this->height=height;
    this->weight=weight;
    }
    double bmi(){
    return 10000*weight/height/height;
    }
    void print(int i){
    cout<<i<<":\t";
    cout<<"height="<<height<<"\t";
    cout<<"weight="<<weight<<"\t";
    cout<<"bmi="<<bmi()<<endl;
    }
    };

    int main()
    {
    person X[30];
    mt19937_64 gen(clock());
    normal_distribution<double> dis0(163, 7);
    normal_distribution<double> dis1(55, 5);
    for(int i=0;i<30;i++){
    double h=dis0(gen);
    double w=dis0(gen);
    X[i]=person(h,w);
    X[i].print(i);
    }
    return 0;
    }

    回覆刪除
  5. #include <iostream>
    #include <random>
    #include <ctime>
    using namespace std;

    class person{
    double height,weight;
    public:
    person(){}
    person(double height,double weight){
    this->height=height;
    this->weight=weight;
    }
    double bmi(){
    return 10000*weight/height/height;
    }
    void print(int i){
    cout<<i<<":\t";
    cout<<"height="<<height<<"\t";
    cout<<"weight="<<weight<<"\t";
    cout<<"bmi="<<bmi()<<endl;
    }
    };

    int main()
    {
    person X[30];
    mt19937_64 gen(clock());
    normal_distribution<double> dis0(163, 7);
    normal_distribution<double> dis1(55, 5);
    for(int i=0;i<30;i++){
    double h=dis0(gen);
    double w=dis0(gen);
    X[i]=person(h,w);
    X[i].print(i);
    }
    return 0;
    }

    回覆刪除
  6. B10333086 陳晏堂2017年5月9日 上午11:51

    #include <iostream>
    #include <cstdlib>
    #include <random>
    #include <ctime>
    #include <iomanip>
    using namespace std;
    mt19937 gen;
    uniform_real_distribution<double> X;
    void gen_matrix( double** a, int m, int n){
    // a = new double*[m];
    for (int i=0 ; i<m ; i++)
    {
    a[i] = new double[n];
    for (int j=0 ; j<n ; j++)
    {
    a[i][j]=X(gen);
    cout <<setw(15)<<setprecision(10)<<a[i][j];
    }
    cout<<endl;
    }
    }
    void del_matrix( double** a, int m){
    for( int i=0; i<m; i++)
    delete [] a[i];
    delete [] a;
    a=NULL;
    cout << "deleted\n";
    }
    void matrix_mul(double** a, double** b, double** c, int m, int n, int p){
    // c = new double*[m];
    for (int i=0 ; i<m ; i++)
    {
    c[i] = new double[n];
    for (int j=0 ; j<n; j++)
    {
    c[i][j]=0;
    for(int k=0; k<p; k++)
    c[i][j]+=a[i][k]*b[k][j];
    cout <<setw(15)<<setprecision(10)<<c[i][j];
    }
    cout<<endl;
    }

    }
    int main( )
    {
    gen= mt19937(clock());
    X = uniform_real_distribution<double>(0, 10);
    double **a=new double*[3], **b=new double*[4];
    cout<<"a=\n";
    gen_matrix( a, 3, 4);
    cout<<"==================\nb=\n";
    gen_matrix( b, 4, 3);
    cout<<"==================\nc=a*b=\n";
    double **c = new double*[3];
    matrix_mul(a, b, c, 3, 3, 4);
    del_matrix(a, 3);
    del_matrix(b, 4);
    del_matrix(c, 3);
    system("Pause");
    return 0;
    }

    回覆刪除
  7. b10133187 楊鈞文2017年5月9日 上午11:53

    #include
    #include
    #include
    using namespace std;

    class person{
    double height, weight;
    public:
    person(){}
    person(double height,double weight){
    this->height=height;
    this->weight=weight;
    }
    double bmi(){
    return 10000*weight/height/height;
    }
    void print(int i){
    cout<<i<<":\t";
    cout<<"height="<<height<<"\t";
    cout<<"height="<<height<<"\t";
    cout<<"bmi="<<bmi()<<endl;
    }
    };

    int main()
    {
    person x[30];
    mt19937_64 gen(clock());
    normal_distribution<double>dis0(163,7);
    normal_distribution<double>dis1(55,5);
    for(int i=0;i<30; i++){
    double h=dis0(gen);
    double w=dis1(gen);
    x[i]=person(h,w);
    x[i].print(i);

    }
    }

    回覆刪除
  8. b10133187 楊鈞文2017年5月9日 上午11:54

    #include
    #include
    #include
    using namespace std;

    class person{
    double height, weight;
    public:
    person(){}
    person(double height,double weight){
    this->height=height;
    this->weight=weight;
    }
    double bmi(){
    return 10000*weight/height/height;
    }
    void print(int i){
    cout<<i<<":\t";
    cout<<"height="<<height<<"\t";
    cout<<"height="<<height<<"\t";
    cout<<"bmi="<<bmi()<<endl;
    }
    };

    int main()
    {
    person x[30];
    mt19937_64 gen(clock());
    normal_distribution<double>dis0(163,7);
    normal_distribution<double>dis1(55,5);
    for(int i=0;i<30; i++){
    double h=dis0(gen);
    double w=dis1(gen);
    x[i]=person(h,w);
    x[i].print(i);

    }
    }

    回覆刪除
  9. B10333077潘家銘2017年5月9日 上午11:55

    #include
    #include
    #include
    using namespace std;

    class person{
    double height, weight;
    public:
    person(){}
    person(double height,double weight){
    this->height=height;
    this->weight=weight;
    }
    double bmi(){
    return 10000*weight/height/height;
    }
    void print(int i){
    cout<<i<<":\t";
    cout<<"height="<<height<<"\t";
    cout<<"height="<<height<<"\t";
    cout<<"bmi="<<bmi()<<endl;
    }
    };

    int main()
    {
    person x[30];
    mt19937_64 gen(clock());
    normal_distribution<double>dis0(163,7);
    normal_distribution<double>dis1(55,5);
    for(int i=0;i<30; i++){
    double h=dis0(gen);
    double w=dis1(gen);
    x[i]=person(h,w);
    x[i].print(i);

    }
    }

    回覆刪除
  10. B10333063羅胤銓2017年5月9日 中午12:05

    #include <iostream>
    #include <cstdlib>
    #include <random>
    #include <ctime>
    #include <iomanip>
    using namespace std;
    mt19937 gen;
    uniform_real_distribution<double> X;
    void gen_matrix( double** a, int m, int n){
    // a = new double*[m];
    for (int i=0 ; i<m ; i++)
    {
    a[i] = new double[n];
    for (int j=0 ; j<n ; j++)
    {
    a[i][j]=X(gen);
    cout <<setw(15)<<setprecision(10)<<a[i][j];
    }
    cout<<endl;
    }
    }
    void del_matrix( double** a, int m){
    for( int i=0; i<m; i++)
    delete [] a[i];
    delete [] a;
    a=NULL;
    cout << "deleted\n";
    }
    void matrix_mul(double** a, double** b, double** c, int m, int n, int p){
    // c = new double*[m];
    for (int i=0 ; i<m ; i++)
    {
    c[i] = new double[n];
    for (int j=0 ; j<n; j++)
    {
    c[i][j]=0;
    for(int k=0; k<p; k++)
    c[i][j]+=a[i][k]*b[k][j];
    cout <<setw(15)<<setprecision(10)<<c[i][j];
    }
    cout<<endl;
    }

    }
    int main( )
    {
    gen= mt19937(clock());
    X = uniform_real_distribution<double>(0, 10);
    double **a=new double*[3], **b=new double*[4];
    cout<<"a=\n";
    gen_matrix( a, 3, 4);
    cout<<"==================\nb=\n";
    gen_matrix( b, 4, 3);
    cout<<"==================\nc=a*b=\n";
    double **c = new double*[3];
    matrix_mul(a, b, c, 3, 3, 4);
    del_matrix(a, 3);
    del_matrix(b, 4);
    del_matrix(c, 3);
    system("Pause");
    return 0;
    }

    回覆刪除
  11. b10233032謝翔宇2017年5月16日 清晨7:50

    #include
    #include
    #include
    using namespace std;

    class person{
    double height, weight;
    public:
    person(){}
    person(double height,double weight){
    this->height=height;
    this->weight=weight;
    }
    double bmi(){
    return 10000*weight/height/height;
    }
    void print(int i){
    cout<<i<<":\t";
    cout<<"height="<<height<<"\t";
    cout<<"height="<<height<<"\t";
    cout<<"bmi="<<bmi()<<endl;
    }
    };

    int main()
    {
    person x[30];
    mt19937_64 gen(clock());
    normal_distribution<double>dis0(163,7);
    normal_distribution<double>dis1(55,5);
    for(int i=0;i<30; i++){
    double h=dis0(gen);
    double w=dis1(gen);
    x[i]=person(h,w);
    x[i].print(i);

    }
    }

    回覆刪除
  12. B10333053 梁竣翔2017年6月20日 上午10:33

    #include
    #include
    #include
    using namespace std;

    class person{
    double height, weight;
    public:
    person(){}
    person(double height,double weight){
    this->height=height;
    this->weight=weight;
    }
    double bmi(){
    return 10000*weight/height/height;
    }
    void print(int i){
    cout<<i<<":\t";
    cout<<"height="<<height<<"\t";
    cout<<"height="<<height<<"\t";
    cout<<"bmi="<<bmi()<<endl;
    }
    };

    int main()
    {
    person x[30];
    mt19937_64 gen(clock());
    normal_distribution<double>dis0(163,7);
    normal_distribution<double>dis1(55,5);
    for(int i=0;i<30; i++){
    double h=dis0(gen);
    double w=dis1(gen);
    x[i]=person(h,w);
    x[i].print(i);

    }
    }

    回覆刪除
  13. B10333072 黃玟茜2017年6月20日 上午11:20

    #include
    #include
    #include
    #include
    #include
    using namespace std;
    mt19937 gen;
    uniform_real_distribution X;
    void gen_matrix( double** a, int m, int n){
    // a = new double*[m];
    for (int i=0 ; i(0, 10);
    double **a=new double*[3], **b=new double*[4];
    cout<<"a=\n";
    gen_matrix( a, 3, 4);
    cout<<"==================\nb=\n";
    gen_matrix( b, 4, 3);
    cout<<"==================\nc=a*b=\n";
    double **c = new double*[3];
    matrix_mul(a, b, c, 3, 3, 4);
    del_matrix(a, 3);
    del_matrix(b, 4);
    del_matrix(c, 3);
    system("Pause");
    return 0;
    }

    回覆刪除
  14. #include <iostream>
    #include <cstdlib>
    #include <random>
    #include <ctime>
    #include <iomanip>
    using namespace std;
    mt19937 gen;
    uniform_real_distribution<double> X;
    void gen_matrix( double** a, int m, int n){
    // a = new double*[m];
    for (int i=0 ; i<m ; i++)
    {
    a[i] = new double[n];
    for (int j=0 ; j<n ; j++)
    {
    a[i][j]=X(gen);
    cout <<setw(15)<<setprecision(10)<<a[i][j];
    }
    cout<<endl;
    }
    }
    void del_matrix( double** a, int m){
    for( int i=0; i<m; i++)
    delete [] a[i];
    delete [] a;
    a=NULL;
    cout << "deleted\n";
    }
    void matrix_mul(double** a, double** b, double** c, int m, int n, int p){
    // c = new double*[m];
    for (int i=0 ; i<m ; i++)
    {
    c[i] = new double[n];
    for (int j=0 ; j<n; j++)
    {
    c[i][j]=0;
    for(int k=0; k<p; k++)
    c[i][j]+=a[i][k]*b[k][j];
    cout <<setw(15)<<setprecision(10)<<c[i][j];
    }
    cout<<endl;
    }

    }
    int main( )
    {
    gen= mt19937(clock());
    X = uniform_real_distribution<double>(0, 10);
    double **a=new double*[3], **b=new double*[4];
    cout<<"a=\n";
    gen_matrix( a, 3, 4);
    cout<<"==================\nb=\n";
    gen_matrix( b, 4, 3);
    cout<<"==================\nc=a*b=\n";
    double **c = new double*[3];
    matrix_mul(a, b, c, 3, 3, 4);
    del_matrix(a, 3);
    del_matrix(b, 4);
    del_matrix(c, 3);
    system("Pause");
    return 0;
    }

    回覆刪除

HTML 編輯器