Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2008, 20:20   #1
AxelOni
Новичок
Джуниор
 
Регистрация: 09.11.2008
Сообщений: 2
По умолчанию Помогите пожалуйста с задачей, 2-ве матрицы, max

Доброго времени суток.
Очень нужна помощь. Не хотелось бы вылететь на пятом курсе, сессия через две недели, а у меня долг с прошлой, вобщем сами понимаете...

Нужно решить задачу:
Для двух матриц A [5..6] и B [3..8] найти максимальные элементы и их номера. Язык написания любой.
С первого взгляда конечно кажется задачка плёвая, но фишка в том что её нужно написать по определённым правилам, в модуле программы должна быть процедура нахождения максимума и она должна вызываться для обоих матриц, да плюс всё должно быть максимально полно расписано, а это значит никакого перла, и как можно больше комментарий. Вот такая блин засада...

Вобщем, помогите кто может, мне уже три раза её возвращали, если ещё раз что то нетак напишу...
Последняя надежда на форум.
AxelOni вне форума Ответить с цитированием
Старый 09.11.2008, 22:53   #2
MalexG
Форумчанин
 
Регистрация: 06.11.2008
Сообщений: 100
По умолчанию

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, Windows;

// Функция вычисляет максимальное значение массива
// Arr - массив, в котором осущ. поиск,
// Index - номер вхождения максимального значения массива
// Функция возвращает само максимальное число и Index
function GetMax(Arr: array of integer; var Index: integer): integer;
var
  I: integer;
  Max: integer;  // Максимальное число
begin
  // т.к. мы не знаем истинных индексов границ массив,
  // то используем функции: Low - возвращает нижнюю границу массива
  // High - соответственно верхнюю
  I := 0;    // Нижняя граница массива = 0, т.к. Arr - открытый массив
  // Предполагаем, что максимальным является первое число массива
  Max   := Arr[I];
  Index := I;
  // Цикл по всем оставшимся элементам массива
  repeat
    inc(I);    // Увеличение счетчика цикла
    // Если очередной элемент массива больше Max
    if Arr[I] > Max then
    begin
      Max   := Arr[I];  // Новое максимальное число массива
      Index := I;       // номер вхождения максимального числа
    end;
  until I = High(Arr); // Выход из цикла по достижении верхней границы массива
                       // Она равна количеству элементов массива - 1
  Result := Max;    // Возвращаемое значение функции
end;

// Функция возвращает индекс максимального элемента массива
// Входные параметры:
// ALow - индекс нижней границы массива
// AHigh - индекс верхней границы массива
// Index - номер макс. элемента массива (нумерация начинается с "0")
//                                      (См. откр. массив)
function GetIndex(ALow, AHigh, Index: integer): integer;
var
  I: integer;    // Счетчик
  Ind: integer;  // Индекс искомого элемента массива
begin
  Ind := 0;
  // Цикл от нижней границы массива по верхнюю границу
  for I := ALow to AHigh do
  begin
    // Если счетчик достиг искомой величины, выход
    if Ind = Index then
      break;
    inc(Ind);    // Увеличение счетчика на "1"
  end;
  Result := I;   // Возвращаемое значние индекса
end;

var
  Str: array [0..255] of Char;
  Arr1: array[5..6] of integer;    // Первый массив
  Arr2: array[3..8] of integer;    // Второй массив
  AIndex: integer = 0;             
  AMax: integer;
  
begin
  // Действия по инициализации массива
  ...

  // Вычисление максимальных значений массивов и их индексов
  // Для первого массива
  AMax   := GetMax(Arr1, AIndex);
  AIndex := GetIndex(Low(Arr1), High(Arr1), AIndex);
  // Перевод строки в текст MS-DOS
  CharToOem('1-й массив:', Str);
  // Вывод на экран
  writeln(Str);
  writeln;
  CharToOem('Максимальное значение:    ', Str);
  writeln(Str, AMax);
  CharToOem('Индекс вхождения элем.:   ', Str);
  writeln(Str, AIndex);
  writeln;

  // Аналогично для второго массива
  AMax   := GetMax(Arr2, AIndex);
  AIndex := GetIndex(Low(Arr2), High(Arr2), AIndex);
  CharToOem('2-й массив:', Str);
  writeln(Str);
  writeln;
  CharToOem('Максимальное значение:    ', Str);
  writeln(Str, AMax);
  CharToOem('Индекс вхождения элем.:   ', Str);
  writeln(Str, AIndex);

  readln;    // Ожидание нажатия клавиши Enter
end.
MalexG вне форума Ответить с цитированием
Старый 10.11.2008, 14:23   #3
AxelOni
Новичок
Джуниор
 
Регистрация: 09.11.2008
Сообщений: 2
По умолчанию благодарствую

Огромное спасибо.
Я тоже считаю что нужны функции, веть нам нужно вернуть значение...
Но препод утверждал, что эту программу нужно написать именно с процедурами, может для него разници нет, ну он точно на перле не пишет... хотя преподаватель всётаки.

Попробую сдать так, коментарии отличные, подробные. Блин. Ну недолжны завалить...

Спасибо ещё раз)
AxelOni вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с поиском max элементов строк матрицы в Паскале annexion Помощь студентам 4 05.04.2010 10:44
Как найти max и min элементы матрицы????? ЕвгениуS Помощь студентам 19 02.03.2008 19:47
помогите пожалуйста с задачей! Coolmanz Помощь студентам 2 06.01.2008 23:07
Помогите пожалуйста с задачей по С++ Riddick2013 Помощь студентам 2 11.11.2007 16:54