Unit Unit1; interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls,
ComCtrls;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
Table1: TTable;
ListBox1: TListBox;
ListBox2: TListBox;
Button1: TButton;
RadioGroup1: TRadioGroup;
Button2: TButton;
RadioGroup2: TRadioGroup;
Button3: TButton;
Button4: TButton;
Edit1: TEdit;
ListBox3: TLstBox;
Button5: TButton;
btnWorkStart: TButton;
btnWorkBreak: TButton;
Button6: TButton;
Panel1: TPanel;
ProgressBar1: TProgressBar;
Label1: TLabel;
lblWorkPercent: TLabel;
lblSum: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnWorkStartClick(Sender: TObject);
procedure btnWorkBreakClick(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
WorkBreak:boolean;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
btnWorkStart.Enabled:=true;
btnWorkBreak.Enabled:=false;
WorkBreak:=false;
end;
procedure TForm1.btnWorkStartClick(Sender: TObject);
label 10;
var s:real;
begin
btnWorkStart.Enabled:=false;
btnWorkBreak.Enabled:=true;
s:=0;
// Это будет работать только при числе записей, меньших 3276
ProgressBar1.Max:=Table1.RecordCount;
Table1.DisableControls;
Table1.First;
while not Table1.Eof do begin
s:=s+Table1.FieldByName ('Salary').AsFloat;
//Без этого вызова не будет обрабатываться нажатие копки btnWorkBreak
Application.ProcessMessages;
// Это будет работать только при числе записей, меньших 3276
ProgressBar1.Position:=Table1.RecNo;
lblWorkPercent.Caption:=
IntToStr(Round(ProgressBar1.Position/ProgressBar1.Max*100))+'%';
if WorkBreak then goto 10;
Table1.Next;
end;
lblSum.Caption:='Èòîãî' + FloatToStr(s);
10:
Table1.EnableControls;
ProgressBar1.Position:=0;
lblWorkPercent.Caption:='';
btnWorkStart.Enabled:=true;
btnWorkBreak.Enabled:=false;
WorkBreak:=false;
end;
procedure TForm1.btnWorkBreakClick(Sender: TObject);
begin
WorkBreak:=true;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
close;
end;
end.
3
Объяснение:
Посчитаем количество участников по регионам:
Башкирия - 500
Чувашия - 600
Удмуртия - 900
Всего 2000
Следовательно Удмуртия занимает чуть меньше половины.
Рассмотрим диаграммы:
В 1 и 2 диаграммах один из регионов занимает ровно половину диаграммы (зелёный сектор). Они нам не подходят, т.к. самый большой регион должен занимать чуть меньше половины.
В 4 диаграмме все регионы занимают равные сектора, что тоже не соответствует условию. Она тоже не подходит.
В 3 диаграмме все условия выполнены. Она подходит.
45₁₀ = 55₈
45₁₀ = 2D₁₆
98₁₀ = 142₈
98₁₀ = 62₁₆
127₈ = 87₁₀
1С₁₆ = 28₁₀
Объяснение:
45 / 8 = 5 + остаток 5
5 / 8 = 0 + остаток 5
записываем остатки снизу вверх
45₁₀ = 55₈
В качестве цифр 16 СС используются цифры от 0 до 9 и латинские буквы от A до F.
А = 10₁₀ B = 11₁₀ C = 12₁₀ D = 13₁₀ E = 14₁₀ F = 15₁₀
45 / 16 = 2 + остаток 13
2 / 16 = 0 + остаток 2
записываем остатки снизу вверх
45₁₀ = 2D₁₆
98 / 8 = 12 + остаток 2
12 / 8 = 1 + остаток 4
1 / 8 = 0 + остаток 1
записываем остатки снизу вверх
98₁₀ = 142₈
98 / 16 = 6 + остаток 2
6 / 16 = 0 + остаток 6
записываем остатки снизу вверх
98₁₀ = 62₁₆
127₈ = 1 * 8² + 2 * 8¹ + 7 * 8⁰ = 1 * 64 + 2 * 8 + 7 * 1 = 64 + 16 + 7 = 87₁₀
В качестве цифр 16 СС используются цифры от 0 до 9 и латинские буквы от A до F.
А = 10₁₀ B = 11₁₀ C = 12₁₀ D = 13₁₀ E = 14₁₀ F = 15₁₀
1С₁₆ = 1 * 16¹ + С * 16⁰ = 1 * 16 + 12 * 1 = 16 + 12 = 28₁₀