razvanth21

Lab 7 - ex. 3

Nov 4th, 2017
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.52 KB | None | 0 0
  1. import java.io.*;
  2.  
  3. class NumarComplex
  4. {
  5.     protected double re, im;
  6.    
  7.     public NumarComplex(double re, double im)
  8.     {
  9.         this.re = re;
  10.         this.im = im;
  11.     }
  12.    
  13.     public double modul()
  14.     {
  15.         return Math.sqrt(re * re + im * im);
  16.     }
  17.    
  18.     public NumarComplex multiply(NumarComplex x)
  19.     {
  20.         return new NumarComplex(re * x.re - im * x.im, re * x.im + im * x.re);
  21.     }
  22.    
  23.     public NumarComplex adunare(NumarComplex x)
  24.     {
  25.         return new NumarComplex(re + x.re, im + x.im);
  26.     }
  27.    
  28.     public static NumarComplex[][] matrix_multiply(NumarComplex[][] a, NumarComplex[][] b)
  29.     {
  30.         NumarComplex s = new NumarComplex(0, 0);
  31.         NumarComplex[][] c = new NumarComplex[a.length][b[0].length];
  32.        
  33.         for (int i = 0; i < a.length; i++)
  34.         {
  35.             for (int j = 0; j < b[0].length; j++)
  36.             {
  37.                 s.re = 0.0;
  38.                 s.im = 0.0;
  39.                
  40.                 for (int k = 0; k < b.length; k++)
  41.                     s = s.adunare(a[i][k].multiply(b[k][j]));
  42.                
  43.                 if (s.im != 0.0)
  44.                     c[i][j] = new NumarComplex(s.re, s.im);
  45.                
  46.                 else
  47.                     c[i][j] = new NumarReal(s.re);
  48.             }
  49.         }
  50.         return c;
  51.     }
  52.    
  53.     public String toString()
  54.     {
  55.         return re + " + " + im + " * i";
  56.     }
  57. }
  58.  
  59. class NumarReal extends NumarComplex
  60. {
  61.     public NumarReal(double re)
  62.     {
  63.         super(re, 0);
  64.     }
  65.    
  66.     public boolean maiMare(NumarReal a)
  67.     {
  68.         return re > a.re;
  69.     }
  70.    
  71.     public String toString()
  72.     {
  73.         return re + "";
  74.     }
  75. }
  76.  
  77. class Client
  78. {
  79.     public static void main(String argv[])
  80.     {
  81.         int n, m, p;
  82.        
  83.         NumarComplex s;
  84.         NumarComplex[][] a, b, c;
  85.        
  86.         try
  87.         {
  88.             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  89.            
  90.             System.out.print("n="); n = Integer.parseInt(br.readLine());
  91.             System.out.print("m="); m = Integer.parseInt(br.readLine());
  92.             System.out.print("p="); p = Integer.parseInt(br.readLine());
  93.            
  94.             a = new NumarComplex[n][m];
  95.             b = new NumarComplex[m][p];
  96.             c = new NumarComplex[n][p];
  97.            
  98.             System.out.println("\nMatricea A: ");
  99.            
  100.             for (int i = 0; i < n; i++)
  101.             {
  102.                 for (int j = 0; j < m; j++)
  103.                 {
  104.                     System.out.print("[" + i + ", " + j + "] Complex sau real (c / r): ");
  105.                    
  106.                     switch ((br.readLine()).charAt(0))
  107.                     {
  108.                         case 'c':
  109.                         {
  110.                             a[i][j] = new NumarComplex(Double.parseDouble(br.readLine()), Double.parseDouble(br.readLine()));
  111.                             break;
  112.                         }
  113.                         case 'r':
  114.                         {
  115.                             a[i][j] = new NumarReal(Double.parseDouble(br.readLine()));
  116.                             break;
  117.                         }
  118.                         default:
  119.                         {
  120.                             System.out.print("[" + (i + 1) + ", " + (j + 1) + "] Complex sau real (c / r): ");
  121.                             break;
  122.                         }
  123.                     }
  124.                 }
  125.             }
  126.            
  127.             System.out.println("\nMatricea B: ");
  128.            
  129.             for (int i = 0; i < m; i++)
  130.             {
  131.                 for (int j = 0; j < p; j++)
  132.                 {
  133.                     System.out.print("[" + i + ", " + j + "] Complex sau real (c / r): ");
  134.                    
  135.                     switch ((br.readLine()).charAt(0))
  136.                     {
  137.                         case 'c':
  138.                         {
  139.                             b[i][j] = new NumarComplex(Double.parseDouble(br.readLine()), Double.parseDouble(br.readLine()));
  140.                             break;
  141.                         }
  142.                         case 'r':
  143.                         {
  144.                             b[i][j] = new NumarReal(Double.parseDouble(br.readLine()));
  145.                             break;
  146.                         }
  147.                         default:
  148.                         {
  149.                             System.out.print("[" + (i + 1) + ", " + (j + 1) + "] Complex sau real (c / r): ");
  150.                             break;
  151.                         }
  152.                     }
  153.                 }
  154.             }
  155.            
  156.             c = NumarComplex.matrix_multiply(a, b);
  157.            
  158.             for (int i = 0; i < n; i++)
  159.             {
  160.                 for (int j = 0; j < p; j++)
  161.                     System.out.print(c[i][j] + " ");
  162.                
  163.                 System.out.println();
  164.             }
  165.         }
  166.         catch (IOException e)
  167.         {
  168.             System.out.println("Eroare la citire");
  169.             System.exit(1);
  170.         }
  171.     }
  172. }
Add Comment
Please, Sign In to add comment