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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2011, 16:38   #1
Vitalina69
Пользователь
 
Регистрация: 16.11.2010
Сообщений: 16
По умолчанию Рбота с компонентом Chart

Здравствуйте!
Нужно построить график некоторой функции, координаты точек графика нужно вывести в StringGrid... я вывожу координаты обычной параболы х*х. По идее первой координатой, выводимой первой строкой в StringGrid, должна быть точка (0,0), а у меня (1,1)...
подскажите, пожалуйста, как нужно сделать чтобы первой первой строкой выводились первые координаты.Вот код программы

Код:
unit Unit1;

type
  Tchgraf=record
  arg:real;
  func:real;
  end;
  Ms=Array[1..50] of Tchgraf;

  TForm1 = class(TForm)
    ...........................
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  k:Tchgraf;
  a:Ms;
  f:file of Tchgraf;
  kod,n,i:integer;

  Form1: TForm1;

implementation

uses Unit3, Unit2, Unit4;


{$R *.dfm}

procedure sort(n:integer;var a:Ms); {процедура сортировки прямого включения}
var i,j:integer;
    x:Tchgraf;
begin
     for i:=2 to n do
       begin
         x:=a[i];
         for j:=i downto 2 do
           if a[j-1].arg>x.arg then
                                begin
                                 a[j]:=a[j-1];
                                 a[j-1]:=x;
                                end;
       end;
end;

procedure grafik(a:Ms; n:integer);  { процедура построения графика}
var i:integer;
begin
form3.Series1.Clear;
 for i:=1 to n do
  Form3.Series1.AddXY(a[i].arg,a[i].func,'',clblue);

end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  i:=1;
  assignfile(f,'rasschet.txt');
  StringGrid1.Cells[0,0]:='';
  StringGrid1.Cells[1,0]:='X';
  StringGrid1.Cells[2,0]:='Y';
end;

function yrav(x:real):real;  {данная функция}
begin
 result:=x*x;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  reset(f);
  i:=1;
  while not(eof(f)) do
  begin
    read(f,a[i]);
    StringGrid1.Cells[0,i]:=inttostr(i);
    StringGrid1.Cells[1,i]:=floattostr(a[i].arg);
    StringGrid1.Cells[2,i]:=floattostr(a[i].func);
    i:=i+1;
    StringGrid1.RowCount:=i+1;
  end;
  closefile(f);
  grafik(a,i-1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  rewrite(f);
  for i:=1 to stringgrid1.RowCount-2 do
  begin
    a[i].arg:=strtofloat(StringGrid1.Cells[1,i]);
    a[i].func:=strtofloat(StringGrid1.Cells[2,i]);
    write(f,a[i]);
  end;
  closefile(f);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Form3.Series1.Clear;
  StringGrid1.RowCount:=2;
  for i:=1 to 50 do
  begin
    a[i].arg:=i;
    a[i].func:=yrav(i);
    StringGrid1.Cells[0,i]:=inttostr(i);
    StringGrid1.Cells[1,i]:=floattostr(a[i].arg);
    StringGrid1.Cells[2,i]:=floattostr(a[i].func);
    StringGrid1.RowCount:=StringGrid1.RowCount+1;
  end;
  grafik(a,50);
end;

procedure TForm1.Button4Click(Sender: TObject);
var s:string;
begin
  i:=i+1;
  if i>50 then
          begin
           ShowMessage('Больше не надо!!!');
           exit;
          end;
  n:=i-1;
  s:=Edit1.Text;
 val(s,k.arg,kod);
  if kod<>0 then
             begin
              showmessage('Ошибка-x');
              exit;
             end;
  s:=Edit2.Text;
  val(s,k.func,kod);
  if kod<>0 then
             begin
              showmessage('Ошибка-y');
              exit;
             end;
  a[n]:=k;
  sort(n,a);
  StringGrid1.RowCount:=2;
  for i:=1 to n do
  begin
    StringGrid1.Cells[0,i]:=inttostr(i);
    StringGrid1.Cells[1,i]:=floattostr(a[i].arg);
    StringGrid1.Cells[2,i]:=Floattostr(a[i].func);
    StringGrid1.RowCount:=StringGrid1.RowCount+1;
  end;
  grafik(a,n);
  Edit1.Text:='';
  Edit2.Text:='';
end;


procedure TForm1.Button5Click(Sender: TObject);
var j:integer;
begin
 val(edit3.text,n,kod);
 if kod<>0 then
             begin
              showmessage('Ошибка-#');
              exit;
             end;
 for i:=n to StringGrid1.RowCount-1 do
  begin
   for j:=1 to 2 do
    begin
     StringGrid1.Cells[j,i]:=StringGrid1.Cells[j,i+1];
    end;
   if i<StringGrid1.RowCount-1 then a[i]:=a[i+1]
                               else
                                  a[i]:=a[i];
  end;
 grafik(a,stringgrid1.RowCount-2);
 StringGrid1.RowCount:=StringGrid1.RowCount-1;
 StringGrid1.Cells[0,StringGrid1.RowCount-1]:='';
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
  Form3.Show;
end;


end.
Vitalina69 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с компонентом Chart kta87 Общие вопросы Delphi 3 12.03.2010 18:59
Помогите с компонентом Aндрей Помощь студентам 2 13.05.2009 15:30
Работа с компонентом Chart KuevProger Компоненты Delphi 13 05.05.2009 15:57
Поделитесь компонентом Михаил Юрьевич Компоненты Delphi 2 27.04.2008 10:52
Помогите! Рбота со строками! TTS Помощь студентам 3 04.12.2007 21:15