


Массив записей содержит информацию о результатах зимней сессии: фамилию, группу, оценки (физика, математика, программирование)
Написать программу, которая вводит эту информацию и определяет, какая из групп была лучшей по каждому из предметов.
Вот мой код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
student = record
name:string;
group:integer;
fizik:integer;
matem:integer;
prog:integer;
end;
arr=array[1..4] of student;
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i:integer;
a:arr;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
i:=i+1;
a[i].name:=edit1.Text;
a[i].group:=strtoint(edit2.Text);
a[i].fizik:=strtoint(edit3.Text);
a[i].matem:=strtoint(edit4.Text);
a[i].prog:=strtoint(edit5.Text);
st1.Cells[0,i]:=a[i].name;
st1.Cells[1,i]:=inttostr(a[i].group);
st1.Cells[2,i]:=inttostr(a[i].fizik);
st1.Cells[3,i]:=inttostr(a[i].matem);
st1.Cells[4,i]:=inttostr(a[i].prog);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
st1.Cells[0,0]:='Ôàìèëèÿ';
st1.Cells[1,0]:='Ãðóïïà';
st1.Cells[2,0]:='Ôèçèêà';
st1.Cells[3,0]:='Ìàòåìàòèêà';
st1.Cells[4,0]:='Ïðîãðàììèðîâàíèå';
i:=0;
end;
procedure TForm1.Button2Click(Sender: TObject);
var n,r:integer;
f:real;
begin
n := i;
for r := 1 to i do
if (a[r].fizik<4) or (a[r].matem<4) or (a[r].prog<4) then n:=n-1;
f:=(n/i)*100;
edit6.Text:=floattostr(f);
end;
end.
Пишет undeclared identifier st1. В чем я ошиблась?
Переименуй StringGrid1 в st1 или наоборот, у тебя больше StringGrid-ов нет.
А где ты ее определяешь?