Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задачи по делфи.docx
Скачиваний:
8
Добавлен:
26.09.2019
Размер:
608 Кб
Скачать
☆

Задача № 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.