Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.12.2008, 15:55
nav nav вне форума
Прохожий
 
Регистрация: 27.11.2007
Сообщения: 30
Репутация: 10
По умолчанию матрица

надо прочитать матрицу NxN целых чисел. Идея есть, но она не работает

Код:
procedure TForm1.Button1Click(Sender: TObject);
var nproc,i,j:0..n;
    a:matr;
begin
 nproc:=upDown1.Position;
 while nproc>=n do button1.Caption:='N должно быть меньше 100';
 nproc:=nproc-1;
 with stringgrid1 do
  begin stringgrid1.ColCount:=updown1.Position-1;
        stringgrid1.RowCount:=stringgrid1.ColCount-1;
    for i:=0 to nproc do
      for j:=0 to nproc do a[i,j]:=strToInt(cells[j,i]);
  end

Moderatorial: Пользуемся тегами!!!

Последний раз редактировалось Admin, 10.12.2008 в 16:00.
Ответить с цитированием
  #2  
Старый 10.12.2008, 16:01
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А где описание типа matr? Это раз.
Два. А что конкретно надо делать-то?
Здесь только заполнение матрицы.
Ответить с цитированием
  #3  
Старый 11.12.2008, 10:02
Grunch Grunch вне форума
Новичок
 
Регистрация: 08.04.2008
Адрес: Краснодар
Сообщения: 52
Репутация: 10
По умолчанию

Есть подозрение что на строке
Код:
while nproc>=n do button1.Caption:='N должно быть меньше 100';
при выполнении условия прога зависнет.
Ответить с цитированием
  #4  
Старый 11.12.2008, 14:44
nav nav вне форума
Прохожий
 
Регистрация: 27.11.2007
Сообщения: 30
Репутация: 10
По умолчанию

Цитата:
Сообщение от Grunch
Есть подозрение что на строке
Код:
while nproc>=n do button1.Caption:='N должно быть меньше 100';
при выполнении условия прога зависнет.
не виснет. Всё ок
Ответить с цитированием
  #5  
Старый 11.12.2008, 15:18
nav nav вне форума
Прохожий
 
Регистрация: 27.11.2007
Сообщения: 30
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
А где описание типа matr? Это раз.
Два. А что конкретно надо делать-то?
Здесь только заполнение матрицы.
необходимо вычислить определитель.
Код:
const n=100;
type matr=array[1..n,1..n] of integer;
Ответить с цитированием
  #6  
Старый 11.12.2008, 17:15
xchrom xchrom вне форума
Начинающий
 
Регистрация: 08.04.2008
Сообщения: 177
Репутация: 15
По умолчанию

хехехе, был у меня в дипломе подсчет определителя матрицы 14*14 методом квадратов если не ошибаюсь ) рекурсия и все радости жизни...
для таких размерностей конечно это несерьезно

советую поискать реализацию в инете
__________________
правильный вопрос содержит в себе 90% ответа
Ответить с цитированием
  #7  
Старый 11.12.2008, 17:20
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ты думаешь все помнят что такое опреелитель матрицы и как он считается??? Формулу в студию.
Ответить с цитированием
  #8  
Старый 12.12.2008, 12:27
nav nav вне форума
Прохожий
 
Регистрация: 27.11.2007
Сообщения: 30
Репутация: 10
По умолчанию

Цитата:
Сообщение от xchrom
хехехе, был у меня в дипломе подсчет определителя матрицы 14*14 методом квадратов если не ошибаюсь ) рекурсия и все радости жизни...
для таких размерностей конечно это несерьезно

советую поискать реализацию в инете
у меня алгоритм есть. Вся проблема в том, что матрица a[i,j] не заполняется
Ответить с цитированием
  #9  
Старый 12.12.2008, 12:47
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А данные то в StringGrid есть?
Ответить с цитированием
  #10  
Старый 12.12.2008, 13:12
nav nav вне форума
Прохожий
 
Регистрация: 27.11.2007
Сообщения: 30
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
А данные то в StringGrid есть?
печаю во время компиляции с клавиатуры
Ответить с цитированием
  #11  
Старый 12.12.2008, 13:22
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Весь проект кинь сюда - посмотрю.
Ответить с цитированием
  #12  
Старый 12.12.2008, 13:55
nav nav вне форума
Прохожий
 
Регистрация: 27.11.2007
Сообщения: 30
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Весь проект кинь сюда - посмотрю.
если можно, глянь. Я пока определитель не вычисляю, с чтением данных проблема.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, Grids;
const n=100;
type matr=array[1..n,1..n] of integer;
type
  TForm1 = class(TForm)
    LabeledEdit1: TLabeledEdit;
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    UpDown1: TUpDown;
    StringGrid1: TStringGrid;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin close
end;


procedure TForm1.Button1Click(Sender: TObject);
var nproc,i,j:0..n;
    a:matr;
begin
 nproc:=upDown1.Position;
 while nproc>=n do button1.Caption:='N должно быть меньше 100';
 nproc:=nproc-1;
 with stringgrid1 do
  begin stringgrid1.ColCount:=updown1.Position-1;
        stringgrid1.RowCount:=stringgrid1.ColCount-1;
    for i:=0 to nproc do
      for j:=0 to nproc do a[i,j]:=strToInt(cells[j,i]);
  end
end;

end.

Последний раз редактировалось nav, 12.12.2008 в 13:59.
Ответить с цитированием
  #13  
Старый 12.12.2008, 14:32
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

На:

Код:
unit Unit1;

interface

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

const
  n = 100;

type
  ntype = 0..n;
  matr = Array [1..n] Of Array [1..n] Of Integer;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    UpDown1: TUpDown;
    LabeledEdit1: TLabeledEdit;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure UpDown1ChangingEx(Sender: TObject; var AllowChange: Boolean;
      NewValue: Smallint; Direction: TUpDownDirection);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

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

procedure TForm1.Button2Click(Sender: TObject);
var
  nproc : ntype;
  i, j : integer;
  a : matr;

  Buf : String;
begin
  nproc:=upDown1.Position;
  If nproc >= n Then
    Begin
      ShowMessage('N должно быть меньше 100');
      Exit;
    End;

  Dec(nproc);

  with stringgrid1 do
    for i:=0 to nproc do
      for j:=0 to nproc do
        a[i+1,j+1]:=strToInt(cells[j,i]);


  // Check mart
  Buf := '';
  For i := 0 To nproc Do
    Begin
      For j := 0 To nproc Do
        Buf := Buf + IntToStr(a[i+1,j+1]) + ' - ';
      Buf := Buf + #13#10;
    End;

  ShowMessage(Buf);
end;

procedure TForm1.UpDown1ChangingEx(Sender: TObject;
  var AllowChange: Boolean; NewValue: Smallint;
  Direction: TUpDownDirection);
begin
  StringGrid1.ColCount := NewValue;
  StringGrid1.RowCount := NewValue;
end;

end.
Ответить с цитированием
  #14  
Старый 14.12.2008, 14:21
nav nav вне форума
Прохожий
 
Регистрация: 27.11.2007
Сообщения: 30
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
На:

спасибо, пошел разбирать
Ответить с цитированием
  #15  
Старый 14.12.2008, 14:40
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да, собственно, у тебя было почти правильно. Только у тебя массив начинается с 1, а ты пытался туда запихнуть в 0 элемент. Вот и вся ошибка. Остальное это я больше для красоты поправил.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:43.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter