FISH.

Click Here for Free Traffic!


Matrix.

//------------------------------//
//           MATRIX.H           //
//         Beloshenko(c)        //
//------------------------------//
// Beloshenko programers group

bool correct_add; // +
bool correct_sub; // -
bool correct_mul; // *

void init_flag()
{
     correct_add = true;
     correct_sub = true;
     correct_mul = true;
};

class Matrix
{
public:
      float M[100][100];
      int m,n;

      //Operators
      Matrix operator+ (const Matrix x) const;
      Matrix operator- (const Matrix x) const;
      Matrix operator* (const Matrix x) const;
};

Matrix
Matrix::operator+ (const Matrix x) const
{
       Matrix Result;
       int i,j;       

       //Correct?
       if((m==x.m)&&(n==x.n))
       {
          //Calculation
          for(i = 1; i <= m; i++)
          {
             for(j = 1; j <= n; j++)
             {
                 Result.M[i][j] = M[i][j] + x.M[i][j];
             };
          };
          Result.m = m;
          Result.n = n;
          correct_add = true;
       } else
       {
          correct_add = false;
       };
       
       return Result;
}

Matrix
Matrix::operator- (const Matrix x) const
{
       Matrix Result;
       int i,j;

       //Correct?
       if((m==x.m)&&(n==x.n))
       {
          //Calculation
          for(i = 1; i <= m; i++)
          {
             for(j = 1; j <= n; j++)
             {
                 Result.M[i][j] = M[i][j] - x.M[i][j];
             };
          };
          Result.m = m;
          Result.n = n;
          correct_sub = true;        
       } else 
       {
          correct_sub = false;
       };

       return Result;
}

Matrix
Matrix::operator* (const Matrix x) const
{
       Matrix Result;
       int i,j,k;
       //Correct?
       if(n==x.m)
       {
          //Calculation
          for(i = 1; i <= m; i++)
          {
              for(j = 1; j <= x.n; j++)
              {
                  Result.M[i][j] = 0;
                  for(k = 1; k <= n; k++)
                  {
                      Result.M[i][j] = Result.M[i][j] + M[i][k]*x.M[k][j];
                  };
              };
          };
	  Result.m = m;
	  Result.n = x.n;
          correct_mul = true;
       } else
       {
          correct_mul = false;
       };

       return Result;
}
   
//------------------------------//
//           MAIN.CPP           //
//         Beloshenko(c)        //
//------------------------------//
//Beloshenko programers group
//1). Beloshenko Nikita
//2). Ivanov Evgeniy

#include 
#include "matrix.h"

Matrix A;
Matrix B;
Matrix C;

void Out_C()
{
     int i,j;    
     // ==== Print matrix part ====
     // Print C.m
     printf("C.m %d \n",C.m);
     // Print C.n
     printf("C.n %d \n",C.n);
     for(i = 1; i <= C.m; i++)
     {
        for(j = 1; j <= C.n; j++)
        {
            // Print C.M[i][j]
            printf("C.M[%d][%d]: %f \n",i,j,C.M[i][j]);           
        };
     };
};

int main()
{
    int i,j;
    int error = 0;
    int d;
    float f;
    // ==== Input matrix part ====

    // Input matrix A
    // Input A.n
    printf("A.n? \n");
    scanf("%d",&d); A.n = d;      
    // Input A.m
    printf("A.m? \n");
    scanf("%d",&d); A.m = d;
    for(i = 1; i <= A.n; i++)
    {
       for(j = 1; j <= A.m; j++)
       {
          // Input A.M[i][j]
          printf("A.M[%d][%d]? \n",i,j);
          scanf("%f",&f); A.M[i][j] = f;
       };
    };

    // Input matrix B
    // Input B.n
    printf("B.n? \n");
    scanf("%d",&d); B.n = d;
    // Input B.m
    printf("B.m? \n");
    scanf("%d",&d); B.m = d;
    for(i = 1; i <= B.n; i++)
    {
       for(j = 1; j <= B.m; j++)
       {
          // Input B.M[i][j]
          printf("B.M[%d][%d]? \n",i,j);
          scanf("%f",&f); B.M[i][j] = f;
       };
    };

    // ==== Math CPU ====

    // C = A + B part 
    init_flag();
    C=A+B; 
    if(correct_add)
    {
       error = 0;    // ok result
       Out_C();      // print matrix C
    } else
    {
       error = 1;         // add error
       printf("error 1"); // Print error
    };
    // C = A - B part 
    init_flag();
    C=A-B;
    if(correct_sub)
    {
       error = 0;    // ok result
       Out_C();      // print matrix C
    } else
    {
       error = 2;         // sub error
       printf("error 2"); // Print error
    }; 
    // C = A * B part 
    init_flag();
    C=A*B;
    if(correct_mul)
    {
       error = 0;    // ok result
       Out_C();      // print matrix C 
    } else
    {
       error = 3;         // mul error
       printf("error 3"); // Print error
    };

    return 0;
}
   


Free Website Hosting

FISH.