Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Модули 
V
    Опции темы
Lesenok
Дата 5.12.2008, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 5.12.2008
Где: Старый Оскол

Репутация: нет
Всего: нет



Привет. Не подскажите как делаются задачи такого рода? Заранее спасибо!
  Вычислить выражение, содержащее матрицы размером 3х3. Действия по нахождению максимального и минимального элемента матрицы оформляются в виде функций, а осталь-ные действия  - в виде процедур помещенных в модуле (Unit).
Z=(B*maxA+C*minB)*maxB-A*maxC , где A,B,C исходные матрицы.
PM MAIL   Вверх
volvo877
Дата 6.12.2008, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 34
Всего: 116



Цитата(Lesenok @  5.12.2008,  19:14 Найти цитируемый пост)
как делаются задачи такого рода?
Просто:

(модуль - MYUNIT.PAS)
Код
unit myunit;

interface

const
  size= 3;
type
  E = integer;
  matrix = array[1 .. size, 1 .. size] of E;

function min(const m: matrix): E;
function max(const m: matrix): E;

procedure add(const a, b: matrix; var res: matrix);
procedure sub(const a, b: matrix; var res: matrix);
procedure scale(const a: matrix; f: E; var res: matrix);

procedure print(const m: matrix);

implementation

function min(const m: matrix): E;
var
  i, j: integer;
  T: E;
begin
  T := m[1, 1];
  for i := 1 to size do
    for j := 1 to size do
      if m[i, j] < T then T := m[i, j];
  min := T;
end;
function max(const m: matrix): E;
var
  i, j: integer;
  T: E;
begin
  T := m[1, 1];
  for i := 1 to size do
    for j := 1 to size do
      if m[i, j] > T then T := m[i, j];
  max := T;
end;

procedure add(const a, b: matrix; var res: matrix);
var i, j: integer;
begin
  for i := 1 to size do
    for j := 1 to size do
      res[i, j] := a[i, j] + b[i, j];
end;
procedure sub(const a, b: matrix; var res: matrix);
var i, j: integer;
begin
  for i := 1 to size do
    for j := 1 to size do
      res[i, j] := a[i, j] - b[i, j];
end;

procedure scale(const a: matrix; f: E; var res: matrix);
var i, j: integer;
begin
  for i := 1 to size do
    for j := 1 to size do
      res[i, j] := a[i, j] * f;
end;

procedure print(const m: matrix);
var i, j: integer;
begin
  for i := 1 to size do begin
    for j := 1 to size do
      write(m[i, j]:5);
    writeln
  end;
end;

end.


(основная программа)
Код
uses myunit;
const
  a: matrix = (
    (1, 2, 3),
    (4, 5, 6),
    (6, 3, 4)
  );
  b: matrix = (
    (4, 7, 9),
    (2, 6, 5),
    (5, 3, 8)
  );
  c: matrix = (
    (4, 9, 2),
    (5, 7, 1),
    (3, 5, 2)
  );

var
  z, t1, t2: matrix;

begin
  scale(b, max(a), t1);  { t1 = b*max(a) }
  scale(c, min(b), t2);  { t2 = c*min(b) }
  add(t1, t2, t1);       { t1 = t1 + t2 = b*max(a) + c*min(b) }
  scale(t1, max(b), t1); { t1 = t1 * max(b) }
  scale(a, max(c), t2);  { t2 = a * max(c)  }
  sub(t1, t2, t1);       { t1 = t1 - t2 }

  print(t1);

end.

PM MAIL   Вверх
Lesenok
Дата 6.12.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 5.12.2008
Где: Старый Оскол

Репутация: нет
Всего: нет



Большое спасибо вечером посмотрю, разберусь.
PM MAIL   Вверх
Lesenok
Дата 6.12.2008, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 5.12.2008
Где: Старый Оскол

Репутация: нет
Всего: нет



Что то я чуть чуть не поняла чего то. Нажимаю прочитать программу действий никаких. Может там не хватает какого нибудь оператора для вывода на экран?
PM MAIL   Вверх
Dobermann
Дата 6.12.2008, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Сперва CTRL+F9, затем ALT+F5 (просмотр)
PM   Вверх
Lesenok
Дата 7.12.2008, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 5.12.2008
Где: Старый Оскол

Репутация: нет
Всего: нет



Спасибо БОЛЬШОЕ. Все отлично работает. Постараюсь во всем разобраться.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.