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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2010, 09:29   #1
Ulena
 
Регистрация: 31.03.2010
Сообщений: 6
По умолчанию Обработка двумерных массивов (матриц) в Delphi

Пожалуйста, помогите найти ошибку....
Задание такое: Дана матрица вещественных чисел. Найти в каждой строке элемент с наименьшим значением, а затем среди этих чисел выбрать наибольшее. Указать индексы найденного элемента. Удалить из матрицы строку и столбец, на пересечении которых располагается найденный элемент. Использовать компоненты StringGrid, PageControl.
У меня почему-то индеексы не правильно выводятся и соответсвенно строка и столбец не правильно удаляются. Вот код программы:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Grids, ExtCtrls;

type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    Label1: TLabel;
    Button1: TButton;
    StringGrid1: TStringGrid;
    Button2: TButton;
    Button3: TButton;
    RadioGroup1: TRadioGroup;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    StringGrid2: TStringGrid;
    Label2: TLabel;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
TabSheet2.Show
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  i,j:byte;
begin
for i:=0 to 4 do
for j:=0 to 4 do
StringGrid1.Cells[i,j]:='';
end;

procedure TForm1.Button2Click(Sender: TObject);
type TMat= array [1..5, 1..5] of real;
     TVec= array [1..5] of real;
var a, c: TMat;
    b: TVec;
    z,i, j, ic, jc, k, imax, jmax: byte;
    max, min: real;

begin


    if RadioButton1.Checked then z:=3;
    if RadioButton2.Checked then z:=4;
    if RadioButton3.Checked then z:=5;
    for i:=1 to z do
    for j:=1 to z do
      a[i, j]:=StrToFloat(StringGrid1.Cells[j-1, i-1]);


    k:= 1;
      for i:= 1 to z do
        begin
        min:= a[i,1];
            for j:= 2 to z do
              if min>a[i,j] then min:= a[i,j];
              b[k]:= min;
              inc(k);
         end;
        max:= b[1];
            for j:= 1 to k-1 do if max<b[i] then max:= b[i];
             for i:= 1 to z do
              for j:= 1 to z do
                if a[i,j]= max then
                      begin
                      max:= a[i,j];
                      imax:= i;
                      jmax:= j;
                      Label3.Caption:='Индексы максимального элемента из наименьших в каждой строке:'+FloatTostr(imax)+'строка, '+FloatTostr(jmax)+'столбец';

                      end;

                      i:= 1;
                       for ic:= 1 to z do
                       begin
                           j:= 1;
                           if ic= imax then i:= i+1;
                            for jc:= 1 to z do
                            begin
                                if jc= jmax then j:= j+1;
                                c[ic,jc]:= a[i,j];
                            inc(j);
                            end;
                       inc(i);
                      end;
                      for ic:= 1 to z-1 do
                      begin
                          for jc:= 1 to z-1 do
                          StringGrid2.Cells[jc-1,ic-1]:=FloatToStr(c[ic,jc]);
                      end;

                     end; 
end.

Последний раз редактировалось Stilet; 31.03.2010 в 09:33.
Ulena вне форума Ответить с цитированием
Старый 31.03.2010, 09:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вместо своего кода лучше бы прикрепляла архив с проектом, ато по нему пересобирать проект - это жесть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка двумерных массивов... Mizantrop Помощь студентам 2 25.03.2010 09:11
Паскаль.Обработка двумерных массивов. popozoglo Помощь студентам 2 12.02.2010 01:33
Гики двумерных массивов Кипящий чайник Общие вопросы C/C++ 13 02.02.2010 13:25
Обработка двумерных массивов Kreigen Помощь студентам 3 29.11.2009 10:50
Заполнение двумерных массивов(Basic) mde Помощь студентам 1 30.05.2008 09:23