Тәжірибелік- зерханалық жұмыс №20



бет4/5
Дата06.01.2022
өлшемі208 Kb.
#13148
1   2   3   4   5
Тапсырма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 жолдық массиві қолданылады, оның индексі кесте индексі сияқты нөлден беске дейін өзгереді.







Достарыңызбен бөлісу:
1   2   3   4   5




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет