Помощь - Поиск - Пользователи - Календарь
Полная версия: Матрица и системы счисления
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
False
Изучаю Паскаль несколько месяцев. Последние три недели бьюсь над двумя задачами.

1) Дана квадратная матрица. Вычислить скалярное произведение строки с наименьшим элементом на столбец с наибольшим элементом.

Написал программу, но что то не получается в ней - всегда выдаёт нулевое произведение.

Код
program matrix;
var
  n,i,j,min,max,nst,nsb,skp:integer;
  mat:array[1..50,1..50] of integer;
  ar1,ar2:array[1..50] of integer;
begin

writeln('Введите размер квадратной матрицы');
readln(n);
writeln('Введите элементы матрицы');

for i:=1 to n do
  begin
   for j:=1 to n do
    begin
     readln(mat[i,j]);
    end;
  end;

  for i:=1 to n do
  begin
   for j:=1 to n do
    begin
     if mat[i,j]<mat[i+1,j] then min:=mat[i,j];
     ar1[i]:=min;
    end;
  end;

  for j:=1 to n do
  begin
   for i:=1 to n do
    begin
     if mat[i,j+1]>mat[i,j] then max:=mat[i,j+1];
     ar2[i]:=max;
    end;
   end;

  for i:=1 to n-1 do
  if ar1[i]>ar1[i+1] then
   nst:=i+1;
for j:=1 to n-1 do
  if ar2[j]<ar2[j+1] then
   nsb:=j+1;

  for j:=1 to n do
  ar1[j]:=mat[nst,j];
for i:=1 to n do
  ar2[i]:=mat[i,nsb];

skp:=0;
for i:=1 to n do
  skp:=skp+ar1[i]*ar2[j];
writeln('Произведение равно ',skp);
readln;
end.


2) Написать программу для перевода чисел из системы счисления с любым основанием в десятичную систему.

Формула простая: N[b2] = a[q-1]*b[1]^(q-1) + a[q-2]*b[1]^(q-2) + ... + a[1]*b[1]^1 + a[0]*b[1]^0

Например:

(571.31)[8] = (?)[10]

(571.31)[8] = 5*8^2 + 7*8^1 + 1*8^0 + 3*8^(-1) + 1*8^(-2) = (377.390625)[10]

Решение, по моему мнению, должно выглядеть так:

1) Запрос основания системы
2) Запрос числа
3) Вычисление
4) Вывод результата

Но решить задачу никак не получается. Помогите, пожалуйста.
klem4
Цитата
Написать программу для перевода чисел из системы счисления с любым основанием в десятичную систему.


Общие вопросы по математике.
volvo
Цитата
Вычислить скалярное произведение строки с наименьшим элементом на столбец с наибольшим элементом.

program matrix;
var
  n,i,j,min,max,skp:integer;
  mat:array[1..50,1..50] of integer;
  ar1,ar2:array[1..50] of integer;
  min_line, max_col: integer;
begin

  write('Введите размер квадратной матрицы'); readln(n);
  writeln('Введите элементы матрицы');

  for i:=1 to n do
    for j:=1 to n do begin
      write('mat[',i, ', ', j, '] = '); readln(mat[i,j]);
    end;

  min_line := 1; min := mat[1, 1];
  max_col := 1; max := mat[1, 1];

  for i:=1 to n do
    for j:=1 to n do begin

      if mat[i, j] < min then begin
        min_line := i; min := mat[i, j];
      end;
      if mat[i, j] > max then begin
        max_col := j; max := mat[i, j];
      end;

    end;

  for i:=1 to n do begin
    ar1[i] := mat[min_line, i];
    ar2[i] := mat[i, max_col];
  end;

  skp := 0;
  for i:=1 to n do
    skp := skp+ar1[i]*ar2[i];

  writeln('Произведение равно ',skp);
  readln;

end.
False
Спасибо большое. А как можно оформить вывод самой матрицы после запроса данных?
volvo
Как обычно: Массивы. Матрицы. Типичные задачи.
("Построчный вывод матрицы")
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.