Задачи ДПА-2012
Решение экзаменационных задач ДПА по информатике 2012 года.
Содержание
01
Определите, принадлежит ли точка A, заданная координатами (x,y), площади ограниченной окружностью радиусом R с центром в точке O(x0,y0).
Формула круга: .
1 2 3 4 5 6 7 8 9 10 11 12 |
var x,y,x0,y0,r:real; BEGIN writeln('Введите координаты точки'); readln(x,y); writeln('Введите координаты центра окружности'); readln(x0,y0); writeln('Введите радиус окружности'); readln(r); if sqr(x-x0)+sqr(y-y0)<=sqr(r) then writeln('Принадлежит') else writeln('Не принадлежит'); END. |
02
На форме в произвольном месте расположите кнопку. Запрограммируйте изменение цвета и надписи при наведении на нее указателя мыши и возвращение первоначальных цвета и надписи при наведении указателя мыши на область формы не занятую кнопкой.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; procedure Button1MouseLeave(Sender: TObject); procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Button1.Color:=clYellow; Button1.Caption:='Желтый'; end; procedure TForm1.Button1MouseLeave(Sender: TObject); begin Button1.Color:=clWhite; Button1.Caption:='Белый'; end; end. |
03
Определите, принадлежит ли точка A с координатами (x,y), площади ограниченной отрезком оси абсцисс от 0 до и синусоидой
.
1 2 3 4 5 6 7 8 9 |
var x,y:real; BEGIN writeln(pi); writeln('Введите координаты точки'); readln(x,y); if (x>=0)and(x<=pi)and(y>=0)and(y<=sin(x)) then writeln('Принадлежит') else writeln('Не принадлежит'); END. |
04
На форме в левом верхнем углу расположите кнопку. Запрограммируйте перемещение расположения кнопки в произвольное место на форме при наведении на нее указателя мыши.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Button1.Top:=round(random(Form1.Height-Button1.Height)); Button1.Left:=round(random(Form1.Width-Button1.Width)); end; end. |
05
Определите, принадлежит ли точка А, заданная координатами (x,y) площади ограниченной кольцом с радиусами R1, R2 и центром в точке O(x0,y0).
Формула кольца: .
1 2 3 4 5 6 7 8 9 10 11 12 |
var x,y,x0,y0,r1,r2:real; BEGIN writeln('Введите координаты точки'); readln(x,y); writeln('Введите координаты центра кольца'); readln(x0,y0); writeln('Введите радиусы кольца (R1<R2)'); readln(r1,r2); if (sqr(x-x0)+sqr(y-y0)>=sqr(r1)) and (sqr(x-x0)+sqr(y-y0)<=sqr(r2)) then writeln('Принадлежит') else writeln('Не принадлежит'); END. |
06
На форме в левом верхнем углу расположите кнопку. Запрограммируйте перемещение кнопки на один пиксель вправо и на один пиксель вниз через определенный интервал времени. При достижении кнопкой рамки окна формы происходит изменение движения кнопки: кнопка отражается от границ формы под углом 450.
- Прежде всего необходимо добавить TTimer (вкладка System);
- Значение Interval выставить где-то 10-100;
- Процедуру «повесить» на событие OnTimer.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; x,y:integer; implementation { TForm1 } procedure TForm1.Timer1Timer(Sender: TObject); begin Button1.Left:= Button1.Left + x; Button1.Top:=Button1.Top+y; if (Button1.Left+Button1.Width = Form1.Width) or (Button1.Left = 0) then x:=x*(-1); if (Button1.Top+Button1.Height = Form1.Height) or (Button1.Top = 0) then y:=y*(-1); end; initialization {$I unit1.lrs} BEGIN x:=1; y:=1; END; end. |
07
Дано целое число N (). Сформируйте и выведите целочисленный массив A размера N который содержит N первых элементов последовательности чисел Фибоначчи.
По определению k-е число Фибоначчи вычисляют по формуле
1 2 3 4 5 6 7 8 9 10 |
const n=13; var a:array [1..n] of longint; i:integer; BEGIN a[1]:=1;a[2]:=1; for i:=3 to n do a[i]:=a[i-2]+a[i-1]; for i:=1 to n do writeln(a[i]); END. |
08
На форме расположите следующие элементы: три текстовых поля, две кнопки и четыре переключателя. Запрограммируйте вывод в третьем текстовом поле результата арифметического действия по щелчку на кнопке «Результат». Арифметическое действие определяется с помощью переключателей. Операнды действия определяются первым и вторым текстовым полем. Кнопка «Выход» завершает работу программы и закрывает окно формы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; RadioButton4: TRadioButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); var a,b:real; begin a:=StrToFloat(Edit1.text); b:=StrToFloat(Edit2.text); if RadioButton1.checked then Edit3.text:=FloatToStr(a+b) else if RadioButton2.checked then Edit3.text:=FloatToStr(a-b) else if RadioButton3.checked then Edit3.text:=FloatToStr(a*b) else if (RadioButton4.checked) and (b<>0) then Edit3.text:=FloatToStr(a/b) else Edit3.text:='На 0 делить нельзя'; end; procedure TForm1.Button2Click(Sender: TObject); begin close; end; end. |
09
Определите, принадлежит ли точка А заданная координатами (x,y) площади ограниченной отрезком оси абсцисс от 0 до и синусоидой
.
1 2 3 4 5 6 7 8 9 |
var x,y:real; BEGIN writeln(pi); writeln('Введите координаты точки'); readln(x,y); if (x>=0)and(x<=pi)and(y>=0)and(y<=abs(sin(2*x))) then writeln('Принадлежит') else writeln('Не принадлежит'); END. |
10
На форме расположите счетчик, поле для вывода текста в формате RFT и кнопку. Выведите в текстовое поле вторую и третью степени числа N. Целое число N
получить из счетчика. Расчет производится после щелчка на кнопке «Результат».
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, Spin, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; ListBox1: TListBox; SpinEdit1: TSpinEdit; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); var x:integer; begin x:=SpinEdit1.Value; ListBox1.Items.Add(IntToStr(x)+'^2= '+IntToStr(sqr(x))); ListBox1.Items.Add(IntToStr(x)+'^3= '+IntToStr(sqr(x)*x)); end; end. |
11
Даны четыре числа определяющие длины отрезков a, b, c, d. Определите, можно ли из этих отрезков построить параллелограмм.
1 2 3 4 5 6 7 8 |
var a,b,c,d:real; BEGIN writeln ('Введите отрезки'); readln(a,b,c,d); if (a=b) and (c=d) or (a=c) and (b=d) or (a=d) and (b=c) then writeln ('Можно построить') else writeln ('Невозможно построить!'); END. |
12
Проверка устного счета учащихся младших классов (сложение).
На форме разместите необходимое количество меток, текстовое поле и кнопку. Слагаемые выводятся в метки на форме в виде произвольных чисел. Ответ учащегося вводится в текстовое поле. При нажатии кнопки «Проверка» в метку выводится соответствующий текст: «Правильно, молодец!» или «Неверный ответ».
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin if StrToInt(Label1.Caption)+StrToInt(Label3.Caption)=StrToInt(Edit1.Text) then Label5.Caption:='Правильно' else Label5.Caption:='Неправильно'; Application.ProcessMessages; sleep(1000); Edit1.Text:='0'; randomize; Label1.Caption:=IntToStr(random(100)); Label3.Caption:=IntToStr(random(100)); end; end. |
13
Даны три числа определяющие длины отрезков a, b, c. Определите, можно ли из этих отрезков построить прямоугольный треугольник.
Теорема Пифагора: a2+b2=c2.
1 2 3 4 5 6 7 8 |
var a,b,c:real; BEGIN writeln ('Введите отрезки'); readln(a,b,c); if (sqr(a)+sqr(b)=sqr(c)) or (sqr(c)+sqr(b)=sqr(a)) or (sqr(a)+sqr(c)=sqr(b)) then writeln ('Можно построить') else writeln ('Невозможно построить!'); END. |
14
На форме расположите кнопку. Подпишите кнопку «Ok». Запрограммируйте следующую реакцию на щелчок мыши по кнопке: в центре экрана появляется новая форма с фоновым рисунком.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, unit2; type { TForm1 } TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin Form2.ShowModal; end; initialization {$I unit1.lrs} end. |