Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.14 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <conio.h>
  4. #include <vector>  
  5.  
  6.  
  7. using namespace std;
  8.  
  9.  
  10. class Matrix {
  11. public:
  12.     static int n;
  13.  
  14.     Matrix(){
  15.         for(int i=0;i<50;i++){
  16.             for(int j=0;j<50;j++){
  17.                 Arr[i][j] = 0;
  18.             }
  19.         }
  20.  
  21.     }
  22.  
  23.     void setArrElem(int a,int b){
  24.         scanf_s("%f",&(Arr[a][b]));
  25.         fflush(stdin); 
  26.     };
  27.  
  28.     float* getArr(){
  29.         return *Arr;
  30.     };
  31.  
  32.     void setN(){
  33.         printf("N: ");
  34.         scanf_s("%d",&n);
  35.         fflush(stdin);
  36.     }
  37.  
  38.     void operator -(float x){
  39.         for(int i=0;i<n;i++){
  40.             for(int j=0;j<n;j++){
  41.                 Arr[i][j] -= x;
  42.             }
  43.         }
  44.     }
  45.  
  46.     void operator /(float x){
  47.         for(int i=0;i<n;i++){
  48.             for(int j=0;j<n;j++){
  49.                 Arr[i][j] /= x;
  50.             }
  51.         }
  52.     }
  53.  
  54.     void operator -(Matrix second){
  55.         for(int i=0;i<n;i++){
  56.             for(int j=0;j<n;j++){
  57.                 Arr[i][j] -= second.Arr[i][j];
  58.             }
  59.         }
  60.     }
  61.  
  62.     void operator *(Matrix second){
  63.         float temp[50][50];
  64.  
  65.         for(int i=0;i<n;i++){
  66.             for(int j=0;j<n;j++){
  67.                 temp[i][j] = Arr[i][j];
  68.             }
  69.         }
  70.  
  71.         for(int p=0;p<n;p++){
  72.             for(int w=0;w<n;w++){
  73.                 Arr[p][w] = 0;
  74.                 for(int j=0;j<n;j++){
  75.                     Arr[p][w] += temp[p][j]*(second.Arr[j][w]);
  76.                 }
  77.             }
  78.         }
  79.     }
  80.  
  81.     friend Matrix operator <<(Matrix Matr, float x){
  82.         int p = (int)x;
  83.        
  84.         float temp[50];
  85.  
  86.         for(int m=0;m<p;m++){
  87.             for(int i=0;i<n;i++){
  88.                 temp[i] = Matr.Arr[i][0];
  89.  
  90.                 for(int j=0;j<n;j++){
  91.                     Matr.Arr[i][j] = Matr.Arr[i][j+1];
  92.                 }
  93.  
  94.                 Matr.Arr[i][n-1] = temp[i];
  95.             }
  96.         }
  97.         return Matr;
  98.     }
  99.  
  100.     void operator --(){
  101.         for(int i=0;i<n;i++){
  102.             for(int j=0;j<n;j++){
  103.                 Arr[i][j]--;
  104.             }
  105.         }
  106.     }
  107.  
  108.     void Add(){
  109.         for(int i=0;i<n;i++){
  110.             for(int j=0;j<n;j++){
  111.                 printf("[%d][%d] = ",i,j);
  112.                 this->setArrElem(i,j);
  113.             }
  114.             printf("\n");
  115.         }
  116.     }
  117.     void Show(){
  118.         for(int i=0;i<n;i++){
  119.             for(int j=0;j<n;j++){
  120.                 printf("%8.2f ",Arr[i][j]);
  121.             }
  122.             printf("\n");
  123.         }
  124.     }
  125.  
  126. private:
  127.     float Arr[50][50];
  128. };
  129. int Matrix::n = 0;
  130.  
  131. float setX(){
  132.     float x;
  133.     printf("x = ");
  134.     scanf_s("%f",&x);
  135.     fflush(stdin);
  136.     return x;
  137. }
  138. void showX(float x){
  139.     printf("x = %f \n",x);
  140. }
  141.  
  142. int main ()
  143. {
  144.     int count = 0;
  145.     float x;
  146.     Matrix m1,m2;
  147.    
  148.  
  149.     char s = 0;
  150.  
  151.     while(s!=48){
  152.  
  153.         printf("\n Menu: \n");
  154.         printf("1) A-x \n");
  155.         printf("2) A/x \n");
  156.         printf("3) A-B \n");
  157.         printf("4) A*B \n");
  158.         printf("5) A << x\n");
  159.         printf("6) B-- \n");
  160.         printf("0) Exit \n\n");
  161.  
  162.         s=_getch();
  163.  
  164.         switch (s)
  165.         {
  166.         case 48:
  167.             break;
  168.         case 49:
  169.             m1.Add();
  170.             x = setX();
  171.  
  172.             m1 - x;
  173.             m1.Show();
  174.             break;
  175.         case 50:
  176.             m1.Add();
  177.             x = setX();
  178.  
  179.             m1 / x;
  180.             m1.Show();
  181.             break;
  182.         case 51:
  183.             m1.setN();
  184.             cout << "A" << endl;
  185.             m1.Add();
  186.             cout << "B" << endl;
  187.             m2.Add();
  188.  
  189.             m1 - m2;
  190.             m1.Show();
  191.            
  192.             break;
  193.         case 52:
  194.             m1.setN();
  195.             cout << "A" << endl;
  196.             m1.Add();
  197.             cout << "B" << endl;
  198.             m2.Add();
  199.  
  200.             m1 * m2;
  201.             m1.Show();
  202.             break;
  203.         case 53:
  204.             m1.setN();
  205.             m1.Add();
  206.             x = setX();
  207.            
  208.  
  209.             m1 = m1 << x;
  210.             m1.Show();
  211.             break;
  212.         case 54:
  213.             m1.setN();
  214.             m1.Add();
  215.             m1.Show();
  216.             cout << endl;
  217.  
  218.             --m1;
  219.             m1.Show();
  220.             break;
  221.         default:
  222.             printf("Error: Wrong key. Try 1-6 \n");
  223.         }
  224.     }
  225.     return 0;
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement