Тапсырма4. 2008 ж. Пекинде өткен олимпиада нәтижелері өрнектелген кесте берілген.
-
Мемлекет
|
Алтын
|
Күміс
|
Қола
|
Барлығы
|
Балл
|
Австралия
Беларусия
Великобритания
Германия
Италия
Китай
Корея
Куба
Казахстан
Россия
АҚШ
Франция Япония
|
3
2
2
6
5
10
5
6
6
8
9
4
5
|
5
3
4
7
4
8
3
5
7
6
7
6
3
|
2
4
6
9
6
6
4
3
4
5
4
3
6
|
|
|
Бағдарлама әр мемлекет бойынша медальдардың жалпы санын және оларға мына ереже бойынша балл беру керек. Әрбір алтын медаль үшін – 7, күміс медаль үшін – 6, қола медаль үшін – 5 балл командаға беріледі.
StrіngGrіd1 компонентінің қасиеттерінің мәні
Name = Tabl
ColCount = 6
RowCount = 14
FіxedCols = 0
FіxedRows = 1
Optіons.goEdіtіng = True
DefaultColWіdth = 65
DefaultRowHeіght = 14
GrіdLіneWіdth = 1
Кестенің бірінші жолын бағандардың тақырыбын жазу үшін қолданамыз. Яғни бірінші жолға мынадай мәліметтер енгіземіз: Мемлекет, Алтын, Күміс, Қола, Барлығы, Балл. Ал Мемлекет бағанына мына елдердің аттарын жазайық: Австралия, Белорусия, Великобритания, Германия, Италия, Қытай, Корей, Куба, Қазахстан, Россия, АҚШ, Франция, Япония.
unit Unit1; interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls; type
TForm1 = class(TForm)
Tabl: TStringGrid;
Button1: TButton; Label1: TLabel; procedure FormActivate(Sender: TObject); procedure Button1Click(Sender: TObject); private
{ Private declarations } public
{ Public declarations } end; var
Form1: TForm1; implementation
{$R *.DFM}
procedure TForm1.FormActivate(Sender: TObject); begin
tabl.Cells[0,0]:='Мемлекет'; tabl.Cells[1,0]:='Алтын'; tabl.Cells[2,0]:='Кумис'; tabl.Cells[3,0]:='Кола'; tabl.Cells[4,0]:='Барлыгы'; tabl.Cells[5,0]:='Балл'; tabl.Cells[0,1]:='Австралия'; tabl.Cells[0,2]:='Белоруссия'; tabl.Cells[0,3]:='Великобритания'; tabl.Cells[0,4]:='Германия'; tabl.Cells[0,5]:='Италия'; tabl.Cells[0,6]:='Китай'; tabl.Cells[0,7]:='Корея'; tabl.Cells[0,8]:='Куба'; tabl.Cells[0,9]:='Казахстан'; tabl.Cells[0,10]:='Россия'; tabl.Cells[0,11]:='АКШ'; tabl.Cells[0,12]:='Франция'; tabl.Cells[0,13]:='Япония'; end;
procedure TForm1.Button1Click(Sender: TObject); var c,r: integer; // кесте бағандары мен жолдарының номері s: integer; // командадағы медальдардың жалпы саны p: integer; // команда балы m: integer; // ең көп балл орналасқан жолдың номері buf: array[0..5] of string; // жолдарды алмастыру буфері i: integer; //жол нөмірі. Сорттау кезінде қолданылады begin for r:=1 to tabl.rowcount do // барлық жолды өңдеу begin s:=0;
// медальдардың жалпы санын есептеу
for c:=1 to 3 do if tabl.cells[c,r] <> '' then s:=s+StrToInt(tabl.cells[c,r]) else tabl.cells[c,r]:='0';
// балл санын есептеу
p:=7*StrToInt(tabl.cells[1,r])+ 6*StrToInt(tabl.cells[2,r])+ 5*StrToInt(tabl.cells[3,r]);
// нәтижені шығару
tabl.cells[4,r]:=IntToStr(s); // барлық медальдар tabl.cells[5,r]:=IntToStr(p); // баллдар end;
// Кестені балдардың кему реті бойынша сорттау
// Таңдау тәсілімен сорттау for r:=1 to tabl.rowcount-1 do begin m:=r; // ең үлкен элемент r жолда for i:=r to tabl.rowcount-1 do
if StrToInt(tabl.cells[5,i])>StrToInt(tabl.cells[5,m]) then m:=i; if r <> m then begin // кестенің r және m жолдарын алмастыру for c:=0 to 5 do
begin
buf[c]:=tabl.Cells[c,r]; tabl.Cells[c,r]:=tabl.Cells[c,m]; tabl.Cells[c,m]:=buf[c]; end; end; end;
end;
end.
Алдымен бағдарлама әрбір мемлекет үшін медальдардың жалпы санын есептейді және сәйкес баллдарды шығарады. Сонан соң жай таңдау тәсілін қолданып бағдарлама алған баллдарының кему реті бойынша кестені сорттайды. Сорттау кезінде кестелердің жолдарының орнын ауыстыру үшін Buf жолдық массиві қолданылады, оның индексі кесте индексі сияқты нөлден беске дейін өзгереді.
Достарыңызбен бөлісу: |