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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
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

 

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