Автор: False 19.12.2006 20:48
Изучаю Паскаль несколько месяцев. Последние три недели бьюсь над двумя задачами.
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 19.12.2006 20:52
Цитата
Написать программу для перевода чисел из системы счисления с любым основанием в десятичную систему.
http://forum.pascal.net.ru/index.php?showtopic=4535
Автор: volvo 19.12.2006 22:10
Цитата
Вычислить скалярное произведение строки с наименьшим элементом на столбец с наибольшим элементом.
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 19.12.2006 22:49
Спасибо большое. А как можно оформить вывод самой матрицы после запроса данных?
Автор: volvo 19.12.2006 22:51
Как обычно: http://forum.pascal.net.ru/index.php?s=&showtopic=2694&view=findpost&p=23245
("Построчный вывод матрицы")