0 / 0 / 2
Регистрация: 02.04.2012
Сообщений: 23
1

Не могу реализовать пример программы с учебника

10.10.2018, 12:17. Показов 1320. Ответов 2

Author24 — интернет-сервис помощи студентам
Здравствуйте. Помогите пожалуйста реализовать пример программы с учебника. Семакин Шестаков "Основы алгоритмизации и программирования" стр. 262. На поле есть две коробки: для черных и белых шариков, а также некоторое количество черных и белых шариков (от 2 до 10). Разложить эти шарики по коробкам и указать, каких больше - черных или белых.

Запускается без ошибок, рандомные шарики формируются, но не могу закинуть в коробку.
Delphi
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    White: TLabel;
    Black: TLabel;
    o1: TShape;
    o2: TShape;
    o3: TShape;
    o4: TShape;
    o5: TShape;
    o6: TShape;
    o7: TShape;
    o8: TShape;
    o9: TShape;
    o10: TShape;
    procedure FormCreate(Sender: TObject);
    procedure BlackDragOver(Sender, Source: TObject; x, y: integer;
    State:TDragState; var accept: boolean);
    procedure o1EndDrag (Sender, Target: TObject; x, y: integer);
    end;
 
var
  Form1: TForm1; n: integer;
  a: array[1..10] of TShape;
  b, w: byte;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
b:=0; w:=0;
Black.Height:=80; Black.Width:=80;
Black.Hint:='b';
White.Height:=80; White.Width:=80;
White.Hint:='w';
a[1]:=o1; a[2]:=o2; a[3]:=o3;
a[4]:=o4; a[5]:=o5; a[6]:=o6;
a[7]:=o7; a[8]:=o8; a[9]:=o9;
a[10]:=o10;
randomize;
n:=random(9)+2;
For i:=n+1 to 10 do
With a[i] do Visible:=False;
For i:=1 to n do
With a[i] do
Begin
If random(2)=0
Then Begin
Brush.Color:=clBlack;
Hint:='b'
end
else Begin
Brush.Color:=clWhite;
Hint:='w'
End;
DragMode:=dmAutomatic
end;
 
end;
    procedure TForm1.BlackDragOver(Sender, Source: TObject; x, y: integer;
    State:TDragState; var accept: boolean);
    begin
    if (Sender is TLabel) and (Source is TShape)
    then
    accept:=((sender as TLabel).Hint=(Source as TShape).Hint)
    end;
procedure TForm1.o1EndDrag (Sender, Target: TObject; x, y: integer);
var s: String;
begin
if Target <> Nil Then
Begin
If (Target as TLabel).Name='Black'
Then begin b:=b+1; str(b,s);
(Target as TLabel).Caption:='Чернызх'+#10+#13+s
end
else begin w:=w+1; str(w,s);
 (Target as TLabel).Caption:='Белых'+#10+#13+s
 end;
 (Sender as TShape).Visible:=False;
 end;
 end;
 end.
Вложения
Тип файла: rar Projects.rar (163.7 Кб, 12 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2018, 12:17
Ответы с готовыми решениями:

Пример из учебника. Не могу разобраться.
Читаю книжку, не могу понять одно упражнение оттуда. Кого не затруднит, разъясните пожалуйста....

Пример из учебника Шилдта - пояснить результат выполнения программы
Растолкуйте, пожалуйста, следующий пример ... public void Push(char ch) { if(tos==stck.Length)...

Пример из учебника
Буквально на первых строчках Advanced-bash-scripting-guide есть пример который не дает мне покоя,...

Пример из учебника
Программа для подсчёта символов типа ' '||'\t' на входящем потоке, но почему-то не срабатывает...

2
Модератор
9237 / 6020 / 2374
Регистрация: 21.01.2014
Сообщений: 25,723
Записей в блоге: 3
10.10.2018, 14:04 2
Лучший ответ Сообщение было отмечено Mr.Zero как решение

Решение

Или читали невнимательно, или такие составители учебника...
1. Надо для обеих меток выставить свойство AutoSize в false, а для черной метки цвет шрифта белым сделать - не видно же ничего! Сделать это можно через инспектор объектов или написав 3 строчки в событии OnCreate
Delphi
1
2
3
Black.AutoSize := false;
White.AutoSize := false;
Black.Font.Color := clWhite;
Обработчики событий надо создавать, а не просто текст писать!
2. для метки Black в инспекторе объектов на закладке Events найдите событие OnDragOver и в правой колонке на пустом месте сделайте двойной клик ЛКМ
3. для метки White в инспекторе объектов на закладке Events найдите событие OnDragOver, в правой колонке откройте выпадающий список и выберите событие BlackDragOver
4. Для шэйпа o1 в инспекторе объектов на закладке Events найдите событие OnEndDrag и в правой колонке на пустом месте сделайте двойной клик ЛКМ
5. Выделите все оставшиеся шэйпы (кроме о1) В инспекторе объектов, в верхней строке должно быть написано 9 items selected
6. в инспекторе объектов на закладке Events найдите событие OnEndDrag, в правой колонке откройте выпадающий список и выберите событие o1EndDrag
7. Все - запускайте свою красоту...
Миниатюры
Не могу реализовать пример программы с учебника  
1
0 / 0 / 2
Регистрация: 02.04.2012
Сообщений: 23
26.10.2018, 09:35  [ТС] 3
спасибо большое. получилось
0
26.10.2018, 09:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.10.2018, 09:35
Помогаю со студенческими работами здесь

Пример из учебника
Читаю сейчас о процедурах . Там был такой пример: .data Array DWORD 10 DUP(?) .code ... Invoke...

Пример из учебника
Добрый вечер! Пишу пример: class Box { double width; double height; double depth; //метод...

Пример с учебника - строки
Задание: Есть два массива. Нужно первый массив сцепить с вторым массивом. Код: .... .data...

Не работает пример из учебника
Приветствую, Вот...

Пример из учебника не работает
В общем записал код из учебника Стивен Прата - Язык программирования C. Лекции и упражнения (5-е...

Пример из учебника ЦИКЛ for
Всем привет! Код представленный учебником: &lt;?php $sum = 1; for ($i=l; $i&lt;=3; $i=$i+l) { $sum...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru