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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2010, 22:44   #1
Arm!n
 
Регистрация: 09.12.2010
Сообщений: 7
По умолчанию Вычисления массивов. Дельфи

Собственно, задачка:
Создать приложения для вычисления и отображения 2-х одномерных массивов B и С. Элементы массивов должны быть получены из исходной целочисленной матрицы А в результате вычисления формул: a[р,j]/ a[р-1,j] (для массива В) и a[р,j]/ a[р+1,j] (для массива С). Организовать выбор номера строки р матрицы А. В случае выбора в качестве р номера первой или последней строки организовать замену на номер последней или первой строки соответственно. Массивы должны формироваться при нажатии на кнопку «Пуск».

Проблемы в следующем: иногда не работает кнопка "Load", не пойму с чем связано. И еще никак не могу загрузить матрицу А из файла, загружается только последняя строка. Помогите, пожалуйста!

Написал вот код
Код:
unit Unit1;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Spin, Grids;

type
  TForm1 = class(TForm)
    SpinEdit1: TSpinEdit;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    StringGrid3: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Label1: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
 var
 f1,f:textfile;
 A:array of array of extended;
  c,r:integer;               
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
  var i,j,k:integer;
 begin
  if opendialog1.Execute then
  if fileexists(opendialog1.FileName) then begin
   assignfile(f1,opendialog1.filename);
   reset(f1);
   readln(f1,c);
   readln(f1,r);
   stringgrid1.ColCount:=c;
   stringgrid1.rowCount:=r;
   stringgrid2.ColCount:=c;
   stringgrid3.ColCount:=c;
   spinedit1.MinValue:=0;
   spinedit1.MaxValue:=r-1;
   setlength(a,c,r);
 try
  try
    for i:=0 to r-1 do
    for j:=0 to c-1 do begin
    read(f1,k);
    a[j,i]:=k;
    stringgrid1.Cells[j,i]:=inttostr(k);
    end;
 finally
  closefile(f1);
 end;
 except
  on einouterror do   showmessage('Ошибка при работе с файлом!!!');
  on econverterror do showmessage('Ошибка преобразования типов!!!');
 end;
 end
 else showmessage('Файл не найден');
end;
procedure TForm1.Button2Click(Sender: TObject);
  var i,j,d,n:integer;

      b:extended;
 begin
  n:=spinedit1.Value;
  d:=stringgrid1.rowCount;
 try
  for i:=0 to d-1 do begin
         for j:=0 to c-1 do begin
     if a[j,n]<=0 then raise erangeerror.Create('Îøèáêà ïðè ôîðìèðîâàíèè ìàññèâà!!!  '+inttostr(j+1)+'-é ýëåìåíò ìàññèâà <=0');
     if n=0 then begin
                   stringgrid2.Cells[j,0]:=floattostrf(a[j,n]/a[j,d-1],fffixed,3,1);
                   stringgrid3.Cells[j,0]:=floattostrf(a[j,n]/a[j,n+1],fffixed,3,1);
                   end;
     if n=d-1 then begin
                   stringgrid2.Cells[j,0]:=floattostrf(a[j,n]/a[j,n-1],fffixed,3,1);
                   stringgrid3.Cells[j,0]:=floattostrf(a[j,n]/a[j,0],fffixed,3,1);
                   end;
     if (0<n)and(n<d-1)   then begin
                   stringgrid2.Cells[j,0]:=floattostrf(a[j,n]/a[j,n-1],fffixed,3,1);
                   stringgrid3.Cells[j,0]:=floattostrf(a[j,n]/a[j,n+1],fffixed,3,1);
                   end;
                 end;
     end;
  except
 on econverterror do showmessage('Îøèáêà ïðåîáðàçîâàíèÿ òèïîâ!!!');
 on ezerodivide do messagedlg('Ïîïûòêà äåëåíèÿ íà íîëü',mterror,[mbok],0);
 end;
 end;
procedure TForm1.Button3Click(Sender: TObject);
 var  j:integer;
      str,str1:string;
 begin
    if savedialog1.Execute then   begin
    assignfile(f,savedialog1.filename);
 try
   try
   rewrite(f);
   writeln(F,'  ÌÀÑÑÈÂ Â    ');
   for j:=0 to c-1 do
   str:=str+stringgrid2.cells[j,0]+'; ' ;
   writeln(f,str);
   writeln(f);
   WRITELN(F,'  ÌÀÑÑÈÂ Ñ  ');
  for j:=0 to c-1 do
  str1:=str1+stringgrid3.cells[j,0]+'; ' ;
 writeln(f,str1);
finally
closefile(f);
end;
  except
   on einouterror do showmessage('Îøèáêà ïðè ðàáîòå ñ ôàéëîì!!!');
   on econverterror do showmessage('Îøèáêà ïðåîáðàçîâàíèÿ òèïîâ!!!');
  end;
end
 else showmessage('Ôàéë íå íàéäåí!!!');
 end;
end.
Вложения
Тип файла: rar Project.rar (208.2 Кб, 7 просмотров)

Последний раз редактировалось Arm!n; 09.12.2010 в 23:03.
Arm!n вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисления AcidBurst Помощь студентам 14 22.09.2010 15:09
Вычисления alex2212 Помощь студентам 0 09.04.2009 21:11
вычисления Александр8585 Microsoft Office Excel 8 16.09.2008 15:22
Вычисления дискрета Corpse-Rustu Помощь студентам 1 23.05.2008 22:37