IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Матрица и системы счисления, Скалярное произведение внутри матрицы и калькулятор (*)->(10)
False
сообщение 19.12.2006 16:48
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Изучаю Паскаль несколько месяцев. Последние три недели бьюсь над двумя задачами.

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) Вывод результата

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

Сообщение отредактировано: False - 19.12.2006 16:49
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 19.12.2006 16:52
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


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


Общие вопросы по математике.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.12.2006 18:10
Сообщение #3


Гость






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

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 18:49
Сообщение #4





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Спасибо большое. А как можно оформить вывод самой матрицы после запроса данных?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.12.2006 18:51
Сообщение #5


Гость






Как обычно: Массивы. Матрицы. Типичные задачи.
("Построчный вывод матрицы")
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 27.07.2025 11:15
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"