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

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

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

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

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

textual
Листинг программы
const n = 500; //ну например...
      m = 100000; //кто ж знает, какие там у Вас m, n
      fname = 'big.txt';
var i, j, k, l, t, c: integer; //исправлено
    r: array[1..n] of real;
    f: text;
begin
  for i := 1 to n do r[i] := 1;
  write('k in [1..', m, '];  k = ');
  readln(k);
  write('l in [1..', m, '];  l = ');
  readln(l);
  c := 0; //исправлено
  assign(f, fname);
  reset(f);
  for i := 1 to m do
    begin
      if (i = k) or (i = l)
        then begin
          for j := 1 to n do
            begin
              read(f, t);
              r[j] := r[j] * t
            end;
          inc(c)
        end;
      readln(f);
      if c >= 2 then break //исправлено
    end;
  close(f);
  for i := 2 to n do r[1] := r[1] + r[i];
  write('A[', k, '] * A[', l, ' = ', r[1]);
  readln
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
Похожие ответы