Задача № 2
Написать программу на языке программирования для задания: создать матрицу NN и вычислить суммы элементов диагоналей. Форма должна содержать компоненты для отображения исходного массива, для ввода значения N и результата.
П
ример
решения –
var
Form1: TForm1;
n,i,j:integer;
sum1,sum2:integer;
mas:array[0..100,0..100] of integer;
implementation
{$R *.dfm}
procedure TForm1.zapolnenieClick(Sender: TObject);
begin
Randomize;
n:=StrToInt(Edit1.Text);
StringGrid1.RowCount:=n;
StringGrid1.colCount:=n;
for i:=0 to n-1 do
for j:=0 to n-1 do
begin
mas[i,j]:=random(10);
StringGrid1.Cells[j,i]:=IntToStr(mas[i,j]);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
sum1:=0;sum2:=0;
for i:=0 to n-1 do
begin
sum1:=sum1+mas[i,i];
sum2:=sum2+mas[i,n-1-i];
end;
Edit2.Text:=IntToStr(sum1);
Edit3.Text:=IntToStr(sum2);
end;
end.
Задача № 3
Написать программу на языке программирования для задания: создать одномерный массив из N элементов, заполнить его случайным образом и отсортировать по возрастанию. Форма должна содержать компоненты для отображения исходного и отсортированного массивов, компонент для ввода значения N.
П
ример
решения –
var
Form1: TForm1;
m,i,j,a:integer;
mas:array of integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
m:=StrToInt(Edit1.Text);
Edit2.Text:='';
SetLength(mas,m);
randomize;
for i:=0 to m-1 do
begin
mas[i]:=random(100);
Edit2.Text:=Edit2.Text+IntToStr(mas[i])+' ';
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit3.Text:='';
for i:=0 to m-2 do
for j:=i to m-1 do
if mas[i]>mas[j] then
begin
a:=mas[i];
mas[i]:=mas[j];
mas[j]:=a;
end;
for i:=0 to m-1 do
Edit3.Text:=Edit3.Text+IntToStr(mas[i])+' ';
end;
end.
Задача № 4
Написать программу на языке программирования для задания: создать одномерный массив из N элементов, заполнить его случайным образом и отсортировать по убыванию. Форма должна содержать компоненты для отображения исходного и отсортированного массивов, компонент для ввода значения N.
Пример решения –
v
ar
Form1: TForm1;
m,i,j,a:integer;
mas:array of integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
m:=StrToInt(Edit1.Text);
Edit2.Text:='';
SetLength(mas,m);
randomize;
for i:=0 to m-1 do
begin
mas[i]:=random(10);
Edit2.Text:=Edit2.Text+IntToStr(mas[i])+' ';
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit3.Text:='';
for i:=0 to m-2 do
for j:=i to m-1 do
if mas[i]<mas[j] then
begin
a:=mas[i];
mas[i]:=mas[j];
mas[j]:=a;
end;
for i:=0 to m-1 do
Edit3.Text:=Edit3.Text+IntToStr(mas[i])+' ';
end;
end.
Задача № 5
Написать программу на языке программирования для задания: создать одномерный динамический массив из N элементов, заполнить его случайным образом неповторяющимися значениями от 1 до N. Форма должна содержать поле ввода значения N, компонент для отображения массива.
Пример решения
–
var
Form1: TForm1;
n,i,k:integer;
mas:array of integer;
implementation
{$R *.dfm}
procedure TForm1.zapolnenieClick(Sender: TObject);
begin
n:=StrToInt(Edit1.Text);
SetLength(mas,n);
Edit2.Text:='';
for i:=0 to n-1 do
mas[i]:=0;
randomize;
for k:=1 to n do
begin
repeat
i:=random(n);
until mas[i]=0;
mas[i]:=k;
end;
for k:=0 to n-1 do
Edit2.Text:=Edit2.Text+IntToStr(mas[k])+' ';
end;
end.
Задача № 6
Написать программу на языке программирования для задания: создать матрицу NN и заполнить внешний периметр -1 (минус один), а остальная часть массива должна быть заполнена случайными числами от 0..9. Форма должна содержать поле ввода значения N, компонент для отображения массива.
Пример решения –
v
ar
Form1: TForm1;
n,i,j:integer;
mas:array[0..100,0..100] of integer;
implementation
{$R *.dfm}
procedure TForm1.zapolnenieClick(Sender: TObject);
begin
n:=StrToInt(Edit1.Text);
StringGrid1.RowCount:=n;
StringGrid1.colCount:=n;
Randomize;
for i:=0 to n-1 do
begin
mas[0,i]:=-1;
mas[n-1,i]:=-1;
mas[i,0]:=-1;
mas[i,n-1]:=-1;
end;
for i:=1 to n-2 do
for j:=1 to n-2 do
mas[i,j]:=random(10);
for i:=0 to n-1 do
for j:=0 to n-1 do
StringGrid1.Cells[j,i]:=IntToStr(mas[i,j]);
end;
end.
Задача № 7
Написать программу на языке программирования для задания: определить, сколько раз в строке встречается заданное слово (слово вводится с клавиатуры).
Пример решения –
var
Form1: TForm1;
Implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var i,k:integer;
s,s1:string;
begin
s:=edit1.text;
s1:=edit2.Text;
k:=0;
while pos(s1,s)<>0 do begin
delete(s,pos(s1,s),1);
k:=k+1;
end;
edit3.text:=inttostr(k);
end;
end.
Задача № 8
Написать программу на языке программирования для задания: в тексте, записанном в объект TMemo, удалить все символы, равные введённому символу.
Пример решения –
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var s,s1:string;
i,j,a,b:integer;
begin
s1:=Edit1.Text;
for i:=0 to Memo1.Lines.Count do
begin
s:=Memo1.Lines.Strings[i];
repeat
b:=0;
a:=pos(s1,s);
if a>0 then delete(s,a,1);
until a=0;
Memo1.Lines.Strings[i]:=s;
end;
end;
end.
Задача № 9
Написать программу на языке программирования для задания: из строки удалить все лишние пробелы. Лишними считаются повторяющиеся пробелы, пробелы в начале и в конце строки.
Пример решения –
var
Form1: TForm1;
implementation
{$R *.dfm}
p
rocedure
TForm1.Button1Click(Sender: TObject);
var i,a:integer;
s:string;
begin
s:=Edit1.Text;
repeat
a:=pos(' ',s);
if a>0 then delete(s,a,1);
until a=0;
if s[1]=' ' then delete(s,1,1);
if s[length(s)]=' ' then delete(s,length(s),1);
Edit1.Text:=s;
end;
end.
Задача № 10
Написать программу на языке программирования для задания: определить, является ли введённое слово палиндромом (читается одинаково слева направо и справа налево). Все символы слова имеют одинаковый регистр (либо только маленькие, либо только большие).
Пример палиндрома – слева направо – потоп; справа налево – потоп.
П
ример
решения –
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
i,f:integer;
begin
s:=Edit1.Text;
f:=0;
for i:=1 to length(s) div 2 do
if s[i]<>s[length(s)-i+1] then
begin
f:=1;
break;
end;
if f=1 then Label2.Caption:=’Не по линдром’
else Label2.Caption:=’Полиндром’;
end;
end.
Задача № 11
Написать программу на языке программирования для задания: даны два слова. Определить, можно ли из первого слова составить второе. Пример – монитор и мотор.
Пример решения –
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var s1,s2:string;
i,j:integer;
f:boolean;
begin
s1:=Edit1.Text;
s2:=Edit2.Text;
f:=true;
//перебор всех символов слова s2
for i:=1 to Length(s2) do
begin
j:=Pos(s2[i],s1); //поиск символа из слова s2 в слове s1
if j=0 then f:=false //если символ отсутствует f=false
else Delete(s1,j,1); //иначе удалить символ из слова s1
end;
//если f=true вывести ‘Можно’, иначе вывести ‘Нельзя’
if f then Label3.Caption:='Можно'
else Label3.Caption:='Нельзя';
end;
end.
Задача № 12
Написать программу на языке программирования для задания: натуральное двухзначное число в десятичном представлении, вводимое в текстовое поле (TEdit), вывести в десятичном представлении на естественном языке. Например, 7 – семь, 24 – двадцать четыре, 52 –пятьдесят два.
Пример решения –
v
ar
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:integer;
s:string;
begin
a:=StrToInt(Edit1.text); Edit2.Text:=''; s:='';
if a>19 then
begin b:=a div 10; a:=a mod 10;
case b of
2: s:=s+'двадцать ';
3: s:=s+'тридцать ';
4: s:=s+'сорок ';
5: s:=s+'пятьдесят ';
6: s:=s+'шестьдесят ';
7: s:=s+'семьдесят ';
8: s:=s+'восемьдесят ';
9: s:=s+'девяносто ';
end;
end;
case a of
1: s:=s+'один ';
2: s:=s+'два ';
3: s:=s+'три ';
4: s:=s+'четыре ';
5: s:=s+'пять ';
6: s:=s+'шесть ';
7: s:=s+'семь ';
8: s:=s+'восемь ';
9: s:=s+'девять ';
10: s:=s+'десять ';
11: s:=s+'одиннадцать ';
12: s:=s+'двенадцать ';
13: s:=s+'тринадцать ';
14: s:=s+'четырнадцать ';
15: s:=s+'пятнадцать ';
16: s:=s+'шестнадцать ';
17: s:=s+'семнадцать ';
18: s:=s+'восемнадцать ';
19: s:=s+'девятнадцать ';
end;
Edit2.Text:=s;
end; end.
Задача № 13
Написать программу на языке программирования, используя оператор CASE. Для целого числа k от 1 до 99 напечатать фразу «Мне k лет», учитывая при этом, что при некоторых значениях k слово «лет» надо заменить словом «год» или «года». Например, 11 лет, 22 года, 51 год.
П
ример
решения –
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var k,a:integer;
s:string;
begin
k:=StrToInt(Edit1.Text);
if k>19 then a:=k mod 10
else a:=k;
case a of
1:s:=' год';
2..4:s:=' года';
0,5..19:s:=' лет';
end;
Label2.Caption:='Мне '+IntToStr(k)+s;
end;
end.
Задача № 14
Написать программу на языке программирования для задания: вывести все простые числа от 1 до 1000.
Пример решения –
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
f:boolean;
begin
Label1.Caption:='1 2 ';
for i:=3 to 1000 do
begin
f:=false;
for j:=2 to round(sqrt(i)) do
if i mod j=0 then
begin
f:=true;
break;
end;
if f=false then Label1.Caption:=Label1.Caption+IntToStr(i)+' ';
end;
end;
end.
Задача № 15
Написать программу на языке программирования, которая преобразует введённое двоичное число в десятичное.
Пример решения –
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var i,a,sum,stepen,c,j:integer;
s:string;
begin
Edit2.Text:='';
s:=Edit1.Text;
sum:=0;
c:=length(s);
for i:=1 to c do
begin
a:=StrToInt(s[i]);
stepen:=1;
for j:=1 to c-i do
stepen:=stepen*2;
sum:=sum+stepen;
end;
Edit2.Text:=IntToStr(sum);
end;
end.
Задача № 16
Написать программу на языке программирования, которая выводит двоичное представление введённого с клавиатуры десятичного целого числа в диапазоне от 0 до 255.
Пример решения
–
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var a,b,i:integer;
s:string;
begin
a:=StrToInt(Edit1.Text);
s:='';
Edit2.Text:='';
for i:=1 to 8 do
begin
b:=a mod 2;
s:=s+IntToStr(b);
a:=a div 2;
end;
s:=s+IntToStr(b);
for i:=8 downto 1 do
Edit2.Text:=Edit2.Text+s[i];
end;
end.
Задача № 17
Написать программу на языке программирования, которая вычисляет сумму ряда 1-1/3+1/5-1/7+…+1/N. Число N вводится с клавиатуры.
П
ример
решения –
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var s:real;
i,n,z:integer;
begin
i:=1;
n:=StrToInt(Edit1.Text);
s:=1;
z:=-1;
while i<n do
begin
i:=i+2;
s:=s+1/i*z;;
z:=-z;
end;
Label3.Caption:='Сумма ряда равна: '+FloatToStr(s);
end;
end.
Задача № 18
Написать программу на языке программирования, выводящую наибольший общий делитель (НОД) двух вводимых целых чисел.
Пример решения –
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var a,b:integer;
begin
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
while a<>b do
if a>b then a:=a-b
else b:=b-a;
Edit3.Text:=IntToStr(a);
end;
end.
Задача № 19
Написать программу на языке программирования для задания: дан текст на русском языке. В алфавитном порядке напечатать все строчные русские гласные буквы (а, е, и, о, у, ы, э, ю, я), входящие в этот текст (использовать тип «множество»).
Пример
решении –
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
i:integer;
c:char;
n:set of char;
const m:set of char=['а','е','и','о','у','ы','э','ю','я'];
begin
s:=Edit1.Text;
n:=[];
Edit2.Text:='';
for i:=1 to Length(s) do
if s[i] in m then n:=n+[s[i]];
for c:='а' to 'я' do
if c in n then Edit2.Text:=Edit2.Text+c;
end;
end.
Задача № 20
Написать программу на языке программирования для задания: даны два многозначных числа. Вывести на экран все цифры первого числа, которые отсутствуют во втором и все цифры второго числа, отсутствующие в первом (использовать тип «множество»).
Пример
решения –
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var m1,m2,a:set of byte;
s1,s2:string;
i:integer;
begin
s1:=Edit1.Text;
s2:=Edit2.Text;
Edit3.Text:='';
Edit4.Text:='';
m1:=[];
m2:=[];
for i:=1 to Length(s1) do
if not(StrToInt(s1[i]) in m1) then m1:=m1+[strtoint(s1[i])];
for i:=1 to Length(s2) do
if not(StrToInt(s2[i]) in m2) then m2:=m2+[strtoint(s2[i])];
a:=m1-m2;
for i:=1 to 9 do
if i in a then Edit3.Text:=Edit3.Text+IntToStr(i);
a:=m2-m1;
for i:=1 to 9 do
if i in a then Edit4.Text:=Edit4.Text+IntToStr(i);
end;
end.
Задача № 21
Написать программу на языке программирования для задания: дан текст из строчных латинских букв. Напечатать все буквы, входящие в текст по одному разу.
Пример решения –
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
i:integer;
n:set of char;
c:char;
const m:set of char=['a'..'z'];
begin
s:=Edit1.Text;
Edit2.Text:='';
n:=[];
For i:=1 to Length(s) do
if (not(s[i] in n))and(s[i] in m) then n:=n+[s[i]];
for c:='a' to 'z' do
if c in n then Edit2.Text:=Edit2.Text+c;
end;
end.
Задача № 22
Написать программу на языке программирования для следующего задания. Запись содержит поля: фамилия, рост студентов. Создать константный массив типа «запись» из пяти строк. Вывести в компонент TstringGrid все записи из массива. Вычислить средний рост студентов.
Пример решения –
var
Form1: TForm1;
sr: real;
i:integer;
type people=record
fam:string[20];
rost:integer;
end;
const mas:array[1..5] of people=
((fam:'Иванов'; rost:185),
(fam:' Иванова'; rost:165),
(fam:'Петров'; rost:175),
(fam:' Петрова'; rost:155),
(fam:'Сидорова';rost:158));
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='Фамилия';
StringGrid1.Cells[1,0]:='Рост';
for i:=1 to 5 do
begin
StringGrid1.Cells[0,i]:=mas[i].fam;
StringGrid1.Cells[1,i]:=IntToStr(mas[i].rost);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
sr:=0;
for i:=1 to 5 do sr:=sr+mas[i].rost;
sr:=sr/5;
Label1.Caption:='Средний рост: '+FloatToStr(sr);
end;
end.
Задача № 23
Написать программу на языке программирования для задания: создать запись, состоящую из полей: марка машины, год выпуска, цена. Создать константный массив типа «запись» из пяти строк. Вывести в компонент TStringGrid марки машин, имеющие стоимость не больше указанной, с указанием года выпуска и цены.
Пример решения –
var
Form1: TForm1;
i:integer;
type people=record
marka:string[20];
god:integer;
cena:integer;
end;
const mas:array[1..5] of people=
((marka:'Mazda CX7'; god:2008;cena:1500),
(marka:'Toyota RAV4';god:2007;cena:1000),
(marka:'Honda Civic';god:2009;cena:1100),
(marka:'ВАЗ 11183'; god:2005;cena:270),
(marka:'Alfa Romeo'; god:2006;cena:2500));
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='Марка';
StringGrid1.Cells[1,0]:='Год выпуска';
StringGrid1.Cells[2,0]:='Цена, тыс';
end;
procedure TForm1.Button1Click(Sender: TObject);
var c,k:integer;
begin
c:=StrToInt(Edit1.Text);
k:=1;
for i:=1 to 5 do
if mas[i].cena<=c then
begin
StringGrid1.Cells[0,k]:=mas[i].marka;
StringGrid1.Cells[1,k]:=IntToStr(mas[i].god);
StringGrid1.Cells[2,k]:=IntToStr(mas[i].cena);
k:=k+1;
end;
end;
end.
Задача № 24
Написать программу на языке программирования для задания: создать запись, состоящую из полей: фамилия, год рождения. Создать константный массив типа «запись» из пяти строк. Вывести в компонент TMemo фамилию и год рождения людей, которые родились позже указанного года.
Пример
решения –
var
Form1: TForm1;
sr: real;
type people=record
fam:string[20];
yahr:integer;
end;
const mas:array[1..5] of people=
((fam:'Иванов'; yahr:1980),
(fam:'Иванова'; yahr:1981),
(fam:'Петров'; yahr:1985),
(fam:'Петрова'; yahr:1988),
(fam:'Сидоров';yahr:1983));
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var i,k:integer;
begin
k:=StrToInt(Edit1.Text);
for i:=1 to 5 do
if mas[i].yahr>k then
Memo1.Lines.Add(mas[i].fam+' '+IntToStr(mas[i].yahr));
end;
end.
Задача № 25
Написать программу на языке программирования для задания: Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Определить, сколько процентов от общего числа элементов составляют положительные элементы файла.
Пример решения –
var
Form1: TForm1;
f:file of integer;
b:integer;
a,i:word;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToInt(Edit1.Text);
AssignFile(f,'file.txt');
rewrite(f);
randomize;
Edit2.Text:='';
for i:=1 to a do
begin
b:=random(100)-50;
write(f,b);
Edit2.Text:=Edit2.Text+IntToStr(b)+' ';
end;
CloseFile(f);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
reset(f);
i:=0;
while not eof(f) do
begin
read(f,b);
if b>=0 then i:=i+1;
end;
Label1.Caption:=Label1.Caption+FloatToStr(i*100/a)+'%';
end;
end.
Задача № 26
Написать программу на языке программирования для следующего задания. Записать в файл f последовательного доступа N натуральных чисел. Получить в другом файле последовательного доступа все компоненты файла f, кроме тех, которые кратны К. Вывести полученный файл на экран.
П
ример
решения –
var
Form1: TForm1;
f1,f2:file of integer;
i,a:integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var n:integer;
begin
Randomize;
n:=StrToInt(Edit1.Text);
AssignFile(f1,'file1');
rewrite(f1);
Edit3.Text:='';
for i:=1 to n do
begin
a:=random(100);
write(f1,a);
Edit3.Text:=Edit3.Text+IntToStr(a)+' ';
end;
closeFile(f1);
end;
procedure TForm1.Button2Click(Sender: TObject);
var k:integer;
begin
k:=StrToInt(Edit2.Text);
AssignFile(f1,'file1');
AssignFile(f2,'file2');
rewrite(f2);
reset(f1);
Edit4.Text:='';
while not eof(f1) do
begin
read(f1,a);
if a mod k=0 then
begin
write(f2,a);
Edit4.Text:=Edit4.Text+IntToStr(a)+' ';
end;
end;
closeFile(f1);
closeFile(f2);
end;
end.
Задача № 27
Написать программу на языке программирования для задания: найти объём текстового файла. Один символ занимает один байт. Файл необходимо создать после запуска программы. Данные в файл записываются из поля TMemo.
Пример
решения –
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var f:TextFile;
s:string;
n,i:integer;
begin
AssignFile(f,'text.txt');
Rewrite(f);
for i:=0 to Memo1.Lines.Count-1 do
begin
s:=Memo1.Lines.Strings[i];
writeln(f,s);
end;
CloseFile(f);
reset(f);
n:=0;
while not eof(f) do
begin
readln(f,s);
n:=n+length(s);
end;
Label1.Caption:=Размер файла='+IntToStr(n)+' байт';
CloseFile(f);
end;
end.
Задача № 28
Написать программу на языке программирования для задания: дан текстовый файл, содержащий текст с цифрами. Сколько цифр в тексте и какова их сумма? Файл необходимо создать после запуска программы. Данные в файл записываются из поля TEdit.
Пример решения –
var
Form1: TForm1;
f:TextFile;
s:string;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
AssignFile(f,'text.txt');
Rewrite(f);
s:=Edit1.Text;
write(f,s);
CloseFile(f);
end;
procedure TForm1.Button2Click(Sender: TObject);
var n,i,sum:integer;
begin
AssignFile(f,'text.txt');
Reset(f);
read(f,s);
n:=0;
sum:=0;
for i:=1 to length(s) do
if s[i] in ['0'..'9'] then
begin
sum:=sum+StrToInt(s[i]);
n:=n+1;
end;
Label2.Caption:=Количество цифр: '+IntToStr(n);
Label3.Caption:='Сумма цифр: '+IntToStr(sum);
CloseFile(f);
end;
end.
Задача № 29
Написать программу на языке программирования для задания: вывести на экран шахматную доску 88. Размер клеток необходимо задавать вручную в интервале 10…30.
Пример решения –
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var i,j,k:integer;
begin
k:=StrToInt(Edit1.Text);
with PaintBox1.Canvas do
begin
Pen.Color:=clBtnFace;
Brush.Color:=clBtnFace;
Rectangle(0,0,PaintBox1.Width,PaintBox1.Height);
for i:=1 to 8 do
for j:=1 to 8 do
if (i+j)mod 2=0 then
begin
Pen.Color:=clBlue;
Brush.Color:=clBlue;
Rectangle((i-1)*k,(j-1)*k,k+(i-1)*k,k+(j-1)*k);
end
else
begin
Pen.Color:=clYellow;
Brush.Color:=clYellow;
Rectangle((i-1)*k,(j-1)*k,k+(i-1)*k,k+(j-1)*k);
end;
end;
end;
end.
Задача № 30
Написать программу на языке программирования для задания: вывести на экран звёздное небо, состоящее из 100 звёзд разного размера и цвета. Звезда представляет собой крестик (два отрезка, пересекающиеся перпендикулярно по середине).
П
ример
решения –
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormPaint(Sender: TObject);
var i,x,y,r,cvet:integer;
begin
randomize;
with Canvas do
begin
for i:=1 to 100 do
begin
x:=random(Form1.ClientWidth);
y:=random(Form1.ClientHeight);
r:=random(20)+5;
cvet:=random(5000000);
Pen.Color:=cvet;
MoveTo(x-(r div 2),y); LineTo(x+(r div 2),y);
MoveTo(x,y-(r div 2)); LineTo(x,y+(r div 2));
end;
end;
end;
end.
Задача № 31
Нарисовать на форме правильный многоугольник. Количество углов многоугольника необходимо задать после запуска программы.
Пример решения –
v
ar
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var x0,y0,x,y,a,b,R:integer;
alfa:real;
begin
b:=StrToInt(Edit1.Text);
x0:=150;
y0:=200;
R:=100;
with canvas do
begin
Pen.Color:=clBtnFace;
Brush.Color:=clBtnFace;
Rectangle(0,65,Form1.ClientWidth,Form1.ClientHeight);
Pen.Color:=clRed;
Brush.Color:=clRed;
moveto(x0,y0-R);
for a:=1 to b do
begin
alfa:=360/b*a;
x:=x0+round(R*sin(pi*alfa/180));
y:=y0-round(R*cos(pi*alfa/180));
lineto(x,y);
end;
end;
end;
end.
Задача № 32
Н
аписать
программу на языке программирования
для задания: вывести в центре экрана
график функции y =
x2.
Пример решения –
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormPaint(Sender: TObject);
var x,y,xx,yy:integer;
begin
xx:=Form1.ClientWidth div 2;
yy:=Form1.ClientHeight div 2;
with Canvas do
begin
MoveTo(xx,0); LineTo(xx,yy*2);
MoveTo(0,yy); LineTo(xx*2,yy);
for x:=-100 to 100 do
begin
y:=-(x*x)div 60;
Ellipse(x+xx,y+yy,x+xx+2,y+yy+2);
end;
end;
end;
end.
