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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2008, 21:05   #1
dm.os.
Новичок
Джуниор
 
Регистрация: 30.09.2008
Сообщений: 1
По умолчанию Delphi - обработка двумерного массива

Здравствуйте, уважаемые программисты!
Я нуждаюсь в вашей помощи, а именно мне необходимо сделать свою первую задачку с помощью объектно-ориентированной методики на Delphi.

Условие. Задан двумерный массив, содержащий N строк и M столбцов. Увеличить все элементы строки с максимальной суммой элементов на среднее арифметическое положительных элементов.
(В программе должно быть не менее двух классов, связанных отношением наследования. Использование формальных параметров в методах должно быть сведено к минимуму. Массивы динамические с инициализацией в конструкторе.)

Я составил программу, реализующую эту задачу, на Паскале, она вроде бы корректно работает.

Код:
const m=4; n=3;

var i, j, kol, nomstr : integer;
    sum, maxsumstr, sredn : real;
    A : array [1..n, 1..m] of real;
    SumStr : array [1..n] of real;

begin

  for i:=1 to n do
  for j:=1 to m do
    begin
      write('A[',i,',',j,']=');
      readln(A[i,j]);
    end;

  sum:=0; kol:=0; maxsumstr:=-10000000;

  for i:=1 to n do
    begin
      sumstr[i]:=0;
      for j:=1 to m do
        begin
          if A[i,j]>0 then
            begin
              sum:=sum+A[i,j];
              kol:=kol+1;
            end;
          sumstr[i]:=sumstr[i]+A[i,j];
        end;
      if sumstr[i]>maxsumstr then
        begin
          maxsumstr:=sumstr[i];
          nomstr:=i;
        end;
    end;

  sredn:=sum/kol;
  i:=nomstr;
  for j:=1 to m do A[i,j]:=A[i,j]+sredn;

  for i:=1 to n do
  for j:=1 to m do
    begin
      write('A[',i,',',j,']=');
      writeln(A[i,j]);
    end;

readln;
end.
Если у кого-то есть возможность, пожалуйста, подскажите, как правильно решить эту задачу с помощью ООП на Delphi.

Заранее благодарю за помощь.
dm.os. вне форума Ответить с цитированием
Старый 30.09.2008, 23:32   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Скажем, так: первый класс - просто реализация двумерного массива

Код:
type
   TArray = class
   private
      function getItem(x, y:integer):integer;
      procedure setItem(x, y, value:integer);
   public
      // Констрактор, создающий массив с указанным размером
      constructor Create(N, M:integer);

      // Соответственно, нужно возвращать размеры массива
      function sizeX : integer;
      function sizeY : integer;

      // Свойство для получения элемента массива
      property Item[x, y:integer] : integer read GetItem write SetItem; default;

      // Запрос данных массива (можно оставить консольный ввод)
      procedure ReadArray;
      // Можно еще сделать из файла
      procedure ReadFromFile(fileName:string);

      // Вывод данных
      procedure WriteArray;
      // Можно сделать и в файл
      procedure WriteToFile(filename:String);
   end;
Второй класс - конкретный для нашей задачи:

Код:
   TMyArray = class(TArray)
   protected
      // Возвращает среднее арифметическое положительных элементов
      function getAverageP : integer;
      // Возвращает сумму строки y
      function getSummLine(y:integer):integer;
      // Возвращает номер строки с максимальной суммой
      function getMaxSummLine : integer;
   public
      // Замена элементов строки с максимальной суммой на среднеарифметическое
      procedure ChangeToAverage;
   end;
Решение самой задачи:

Код:
var A:TMyArray;
begin
   A := TArray.Create(10, 10);
   A.ReadArray;
   A.ChangeToAverage;
   A.WriteArray;
Это на правах подсказки. Надеюсь смысл понятен. Реализация за Вами.
alexBlack вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод двумерного массива Kocapb Общие вопросы C/C++ 4 11.10.2012 11:05
Сортировка двумерного массива Makarov Помощь студентам 8 29.10.2011 11:55
[Delphi] создание и обработка двумерного массива screep Помощь студентам 5 16.06.2008 19:27
Поворот двумерного массива Guest_ Общие вопросы C/C++ 6 24.12.2007 23:02
сортировка двумерного массива cornholio Помощь студентам 1 27.11.2007 23:36