Найти скалярное произведение двух строк матрицы - Pascal

Узнай цену своей работы

Формулировка задачи:

На внешнем носителе (в файле) построчно подготовлены элементы матрицы А(m,n). Для заданных k и l ввести элементы k-й и l-й строк (пропуская промежуточные) и найти их скалярное произведение. матрица слишком велика, чтобы хранить ее в памяти.

Решение задачи: «Найти скалярное произведение двух строк матрицы»

textual
Листинг программы
  1. const n = 500; //ну например...
  2.       m = 100000; //кто ж знает, какие там у Вас m, n
  3.       fname = 'big.txt';
  4. var i, j, k, l, t, c: integer; //исправлено
  5.     r: array[1..n] of real;
  6.     f: text;
  7. begin
  8.   for i := 1 to n do r[i] := 1;
  9.   write('k in [1..', m, '];  k = ');
  10.   readln(k);
  11.   write('l in [1..', m, '];  l = ');
  12.   readln(l);
  13.   c := 0; //исправлено
  14.   assign(f, fname);
  15.   reset(f);
  16.   for i := 1 to m do
  17.     begin
  18.       if (i = k) or (i = l)
  19.         then begin
  20.           for j := 1 to n do
  21.             begin
  22.               read(f, t);
  23.               r[j] := r[j] * t
  24.             end;
  25.           inc(c)
  26.         end;
  27.       readln(f);
  28.       if c >= 2 then break //исправлено
  29.     end;
  30.   close(f);
  31.   for i := 2 to n do r[1] := r[1] + r[i];
  32.   write('A[', k, '] * A[', l, ' = ', r[1]);
  33.   readln
  34. end.

Объяснение кода листинга программы

  1. Устанавливаются константы n и m равные 500 и 100000 соответственно.
  2. Задаётся строковая переменная fname и присваивается значение big.txt.
  3. Задаются переменные i, j, k, l, t, c типа integer.
  4. Создаётся массив r с размерностью от 1 до n элементов типа real.
  5. Открывается файл big.txt и считывается с него информация.
  6. Происходит внешний цикл по переменной i от 1 до m.
  7. Внутри внешнего цикла происходит условная конструкция вида если i равно k или l, то.
  8. Внутри условной конструкции выполняется вложенный цикл по переменной j от 1 до n.
  9. Считывается значение из файла в переменную t и умножается на соответствующий элемент массива r.
  10. Увеличивается значение переменной c на 1.
  11. Проверяется условие `если c больше или равно 2, то цикл прерывается.
  12. Файл закрывается.
  13. Выполняется цикл по переменной i от 2 до n и все элементы массива r складываются в первый элемент.
  14. Выводится результат умножения двух строк матрицы A[k] * A[l] и значение результата.
  15. Программа ожидает нажатия пользователем любой клавиши, чтобы закрыться.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы