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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2009, 21:50   #1
Засоня
Новичок
Джуниор
 
Регистрация: 11.07.2009
Сообщений: 2
По умолчанию массивы.

Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
const
  Nmax=10;
Type
Mas1 = array[1..Nmax,1..Nmax] of extended;
Mas2 = array[1..Nmax] of extended;
var
Form1: TForm1;
A: Mas1;
B: Mas2;
N,M,i,j:integer;
t:boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
N:=StrToInt(Edit1.Text);
M:=StrToInt(Edit2.Text);
   StringGrid1.RowCount:=N+1;
   StringGrid1.ColCount:=M+1;
   StringGrid2.RowCount:=N+1;
   StringGrid2.RowCount:=N+1;
for i:=1 to N do StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);
for i:=1 to M do StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
N:=3;
M:=3;
      Edit1.Text:=FloatToStr(N);
      Edit2.Text:=FloatToStr(M);
   StringGrid1.RowCount:=N+1;
   StringGrid1.ColCount:=M+1;
   StringGrid2.RowCount:=N+1;
   StringGrid2.RowCount:=N+1;
StringGrid1.Cells[0,0]:='Массив A:';
StringGrid2.Cells[0,0]:='Массив B:';
for i:=1 to N do begin
    StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);
    StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);
    end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
try
    for i:=1 to N do
    for j:=1 to M do
    A[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);
except
on ERangeError do
                  begin
                        ShowMessage('Выход за пределы массива. Уменьшите размер массива');
                        Exit;
                  end;
on EConvertError do
                  begin
                  ShowMessage('В ячейке отсутствует значение, либо число введено не правильно');
                  Exit;
                  end;
else              begin
                  ShowMessage('Возникла неизвестная исключительная ситуация!');
                  Exit;
                  end;
end;
try
for i:=1 to n do
      for j:=1 to m do
     begin
    if A[i,j]=0  then
    B[i]:=0 else B[i]:=1;
    StringGrid2.Cells[0,j]:=FloatToStrf(B[i],fffixed,6,0);
    end;
except
on EInvalidOp do
                  begin
                  MessageDlg('Неправильная операция с плавающей точкой',mtError,[mbCancel],0);
                  Exit;
                  end;
on EOverFlow do
                  begin
                  MessageDlg('Переполнение при выполнении операции с плавающей точкой',mtError,[mbCancel],0);
                  Exit;
                  end;
else
      begin
      MessageDlg('Возникла неизвестная исключительная ситуация! ',mtError,[mbCancel],0);
      Exit;
      end;
end;
end;
end.

как сделать так, чтоб получить такой же результат, но в программе использовать двумерный динамический массив?

Последний раз редактировалось Stilet; 14.07.2009 в 09:33.
Засоня вне форума Ответить с цитированием
Старый 13.07.2009, 22:17   #2
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Замени:
Код:
type
  Mas1 = array[1..Nmax,1..Nmax] of extended;
  Mas2 = array[1..Nmax] of extended;
на:
Код:
type
  Mas1 = array of array of extended;
  Mas2 = array of extended;
Код:
var
  A: Mas1;
Для определения длины массива есть функция: Length(A);
Для изменения длинны массива - функция SetLength(A, n);
где n = новый размер.
Для изменения длинны матрицы(array of array) - SetLength(A, n, m);
n = кол-во строк.
n = кол-во столбцов.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".

Последний раз редактировалось Daramant; 13.07.2009 в 23:17.
Daramant вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Представить математическую запись (+описание решения) фрагмента программы и вычислить значение переменной (Kate) Помощь студентам 7 18.10.2011 16:52
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
С++, массивы Svetlyachok Помощь студентам 4 23.04.2009 12:21
Массивы Olalya da Silva Паскаль, Turbo Pascal, PascalABC.NET 2 14.01.2009 20:26