نمایش نتایج 1 تا 3 از 3

نام تاپیک: تابع سازنده برای کلاس ماتریس

  1. #1

    تابع سازنده برای کلاس ماتریس

    سلام
    من قبلا برای کلاس ماتریس یک تابع سازنده نوشته بودم ولی الان که فکر می کنم می بینم اشتباه بوده است زیرا الان درایه های ماتریس را فقط مقدار صفر می دهد ولی اصلا ماتریسی نیست که مقدار صفر دهد یعنی اصلا در تابع سازنده ماتریس ساخته نمی شود که بخواهد مفدار به آن دهد می خواستم بدونم چگونه این مشکل را برطرف کنم چون باید موقع ساختن یک شی باید سطر و ستون را بگیرد
    امیدوارم فهمیده باشید منظورم چی است
    #include<iostream>
    #include"MATRIX.h"

    using namespace std;

    /*################################################# ##########################*/
    MATRIX:: MATRIX()
    {
    for (int i=0 ; i<row ; i++)
    {
    for (int j=0 ;j<column ; j++)
    {
    MatrixArray[i][j]=0;
    }
    }
    }
    /*################################################# ###########################*/
    void MATRIX::getMatrix()
    {
    cout << "please enter number of the matrix row: " ;
    cin >> row ;
    cout << "please enter number of the matrix column: " ;
    cin >> column;

    MatrixArray = new int *[row];
    for (int i=0 ; i<row ; i++)
    {
    MatrixArray[i] = new int [column];
    }

    cout << "palease enter the dray of matrix: " << endl ;
    for (int j=0 ; j<row ; j++)
    {
    for (int k=0 ; k<column ; k++)
    {
    cout << "dray["<<j+1<<"]"<<"["<<k+1<<"]=";
    cin>> MatrixArray[j][k];
    }
    }
    }
    /*################################################# ##############################*/
    void MATRIX::setMatrix()
    {
    for(int i=0 ; i<row ; i++)
    {
    for (int j=0 ; j<column ; j++)
    {
    cout << MatrixArray[i][j]<< "\t"/*?*/ ;
    }
    cout << endl;
    }
    }
    /*################################################# ##############################*/
    MATRIX MATRIX::operator +(MATRIX mat)
    {
    MATRIX tempMAT;
    if ( row != mat.row && column != mat.column)
    {
    cout << "I can not + these Matrixs!" << endl ;
    return tempMAT;
    }
    tempMAT.row = row;//?
    tempMAT.column = column;//?
    tempMAT.MatrixArray =new int *[row];

    cout << endl;
    cout << "this is the + of two matrixs:" << endl ;
    cout << endl;
    for (int i=0 ; i<row ; i++)
    {
    tempMAT.MatrixArray[i] = new int [column];
    }


    for (int j=0 ; j<row ; j++)
    {
    for ( int k=0 ; k<column ; k++)
    {
    tempMAT.MatrixArray[j][k] = MatrixArray[j][k] + mat.MatrixArray[j][k];
    }
    }
    tempMAT.setMatrix();
    return tempMAT;//?
    }
    /*################################################# #############################*/
    MATRIX MATRIX::operator -(MATRIX mat)
    {
    MATRIX tempMAT;
    if ( row != mat.row && column != mat.column)
    {
    cout << "I can not - these Matrixs! " << endl ;
    return tempMAT;
    }
    cout << endl;
    cout << "this is the - of two matrixs:" << endl ;
    cout << endl;
    tempMAT.row = row ;
    tempMAT.column = column;
    tempMAT.MatrixArray = new int *[row];
    for (int i=0 ; i<row ; i++)
    {
    tempMAT.MatrixArray[i] = new int [column];
    }


    for (int j=0 ; j<row ; j++)
    {
    for (int k=0 ; k<column ; k++)
    {
    tempMAT.MatrixArray[j][k] = MatrixArray[j][k] - mat.MatrixArray[j][k];
    }
    }
    tempMAT.setMatrix();
    return tempMAT;
    }
    /*################################################# ###########################*/
    MATRIX MATRIX::operator *(MATRIX mat)
    {
    MATRIX tempMAT;
    if ( column != mat.row)
    {
    cout << "I can not * these Matrixs! " << endl ;
    return tempMAT;
    }
    cout << endl;
    cout << "this is the * of two matrixs:" << endl ;
    cout << endl;
    tempMAT.row = row;
    tempMAT.column = mat.column;
    tempMAT.MatrixArray = new int *[row];
    for (int i=0 ; i<row ; i++)
    {
    tempMAT.MatrixArray[i] = new int [mat.column];
    }


    for (int j=0 ; j<row ; j++)
    {
    for (int k=0 ; k<mat.column ; k++)
    {
    tempMAT.MatrixArray[j][k]=0;//?
    for (int l=0 ; l<mat.column ; l++)
    {
    tempMAT.MatrixArray[j][k] += (MatrixArray[j][l]) * (mat.MatrixArray[l][k]);
    }
    }
    }
    tempMAT.setMatrix();
    return tempMAT;
    }
    /*################################################# ###########################*/
    MATRIX MATRIX::operator* (int k)
    {
    MATRIX tempMAT;
    tempMAT.row = row;
    tempMAT.column = column;
    tempMAT.MatrixArray = new int *[row];
    for (int i=0 ; i<row ; i++)
    {
    tempMAT.MatrixArray[i] = new int [column];
    }
    for (int ii=0 ; ii<row ; ii++)
    {
    for (int j=0 ; j<column ; j++)
    {
    tempMAT.MatrixArray[ii][j]=0;
    }
    }

    for (int j=0 ; j<row ; j++)
    {
    for (int jj=0 ; jj<column ; jj++)
    {
    tempMAT.MatrixArray[j][jj] = (MatrixArray[j][jj] * k);
    }
    }
    return tempMAT;
    }
    /*################################################# ########################*/
    int* MATRIX::operator[](int num)
    {
    return MatrixArray[num];
    }

  2. #2

    نقل قول: تابع سازنده برای کلاس ماتریس

    اصول شی گرایی که برای این برنامه طی کرده اید ، کمی نادرست است . چون هر آبجکت

    ماتریس شامل یکسری توابع عضو کلاس (Member Functions ) و شامل یکسری اعضای داده ای

    (Data Members ) هست ، اعضای داده بهتره شامل تعداد سطر ، تعداد ستون و یک آرایه دوبعدی

    برای نگهداری اعضای ماتریس باشه .

    کد آموزشی زیر بررسی کنید :


    #include <iostream>
    #include <conio>
    class Matrix{
    public:
    Matrix(int,int);
    void Mat_get();
    void Print();
    private:
    int **a;
    int row;
    int col;
    };
    //====================
    Matrix::Matrix(int r,int c){
    row = r;
    col = c;
    a = new int*[row];
    for(int i=0;i<row;i++)
    a[i] = new int[col];
    }
    //====================
    void Matrix::Mat_get(){
    cout<<"Enter Matrix :\n";
    for(int i=0;i<row;i++){
    for(int j=0;j<col;j++){
    cin>>a[i][j];
    }
    }
    }
    //=====================
    void Matrix::Print(){
    cout<<"Your Matrix :\n";
    for(int i=0;i<row;i++){
    for(int j=0;j<col;j++){
    cout<<a[i][j]<<" ";
    }
    cout<<endl;
    }
    }
    //=====================
    int main(){
    Matrix m1(3,3);
    m1.Mat_get();
    m1.Print();
    getch();
    }


    موفق باشید .






  3. #3

    نقل قول: تابع سازنده برای کلاس ماتریس

    دست شما درد نکنه ولی اگر بخواهم بدونه پارامتر ارسال کنم باید چگونه بنویسم راستی هدر فایل کلاس جداست و فکر کنم به خاطر همینه که فکر کردید از اصول شی گرایی کمی مشکل داره ولی بازهم خیلی ممنون تا حدودی مشکلم بر طرف شد

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •