Advertisement
MrGhost75

VECTORxMATRIX(File)

Oct 7th, 2020
797
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.14 KB | None | 0 0
  1. import java.io.*;
  2.  
  3. public class Main {
  4.  
  5.     public static void main(String[] args) throws IOException {
  6.  
  7.         int size = 1000;
  8.         int[] arrayVxM = new int[size]; //(1) Массив, полученный при умн-ии Вектора на Матрицу
  9.         int[] arrayMxV = new int[size]; //(2) Массив, полученный при умн-ии Матрицы на Вектор
  10.  
  11.         //I. Запишем в текстовый документ MATRIX.txt матрицу размерностью size x size, состоящую из чисел от -9 до 9
  12.         BufferedWriter writer = new BufferedWriter(new FileWriter("MATRIX.txt"));
  13.         System.out.println("Начал запись в файл");
  14.  
  15.         long startTime = System.currentTimeMillis();
  16.  
  17.         StringBuilder stringBuilder = new StringBuilder("");
  18.  
  19.         for (int i = 0; i < size; i++) {
  20.  
  21.             for (int j = 0; j < size; j++) {
  22.                 int number = (int)(Math.random()*20 - 10);
  23.                 if (j != size - 1)
  24.                     stringBuilder.append(number).append(" ");
  25.                 else
  26.                     stringBuilder.append(number);
  27.  
  28.             }
  29.  
  30.             if (i != size - 1)
  31.                 writer.write(stringBuilder.toString() + "\n");
  32.             else
  33.                 writer.write(stringBuilder.toString());
  34.  
  35.             stringBuilder = new StringBuilder("");
  36.         }
  37.  
  38.         writer.flush();
  39.         writer.close();
  40.  
  41.         long finishTime = System.currentTimeMillis();
  42.  
  43.         System.out.println("Закончил запись в файл за " + (finishTime - startTime) + " миллисекунд.");
  44.  
  45.  
  46.         int[] vector = new int[size]; //Исходный вектор размерности size
  47.  
  48.         //Заполним вектор случайными числами от -9 до 9
  49.         for (int i = 0; i < size; i++) {
  50.             vector[i] = (int)(Math.random()*20 - 10);
  51.         }
  52.  
  53.         //II. Открываем поток для чтения
  54.         BufferedReader reader = new BufferedReader(new FileReader("MATRIX.txt"));
  55.  
  56.         //(1) Умножение матрицы на вектор (1000x1000 * 1000x1 = массив 1000x1)
  57.         // P.S. на самом деле размерность вектора - 1x1000, но мы его лишь мысленно перевернем,
  58.         // а по факту просто будем обращаться к его элементам, представляя строку как столбец.
  59.  
  60.         startTime = System.currentTimeMillis();
  61.  
  62.         for (int i = 0; i < size; i++) {
  63.             int sum = 0;
  64.             String[] s = reader.readLine().split("\\s+");
  65.             for (int j = 0; j < size; j++) {
  66.                 int number = Integer.parseInt(s[j]);
  67.                 sum += number * vector[j];
  68.             }
  69.             arrayMxV[i] = sum;
  70.         }
  71.  
  72.         finishTime = System.currentTimeMillis();
  73.  
  74.         //Выведение времени, которое заняло умножение матрицы на вектор
  75.         System.out.println("Время умножения матрицы на вектор в миллисекундах: " + (finishTime - startTime));
  76.  
  77.  
  78.         //(2) Умножение вектора на матрицу (1x1000 * 1000x1000 = массив 1x1000)
  79.  
  80.         startTime = System.currentTimeMillis();
  81.  
  82.         for (int i = 0; i < size; i++) {
  83.             reader = new BufferedReader(new FileReader("MATRIX.txt"));
  84.             int sum = 0;
  85.             for (int j = 0; j < size; j++) {
  86.                 String[] s = reader.readLine().split("\\s+");
  87.                 int number = Integer.parseInt(s[i]);
  88.                 sum += vector[j] * number;
  89.             }
  90.             arrayVxM[i] = sum;
  91.         }
  92.  
  93.         finishTime = System.currentTimeMillis();
  94.  
  95.         //Выведение времени, которое заняло умножение вектора на матрицу
  96.         System.out.println("Время умножения вектора на матрицу в миллисекундах: " + (finishTime - startTime));
  97.  
  98.         reader.close();
  99.     }
  100. }
  101.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement