Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
zow
0 / 0 / 0
Регистрация: 16.08.2015
1

CheckBox_тесты

15.09.2010, 00:49. Просмотров 463. Ответов 2
Метки нет (Все метки)

Следующее задание: нужно написать тестер для младших классов, в которой случайным образом выбрасываются два числа от 0 до 100 с любым арифметическим знаком между ними ( "+", "-", "*" и "/").
Все происходит рандомно.
Ученик вбивает в поле Edit правильный, по его мнению, ответ подсчета той или иной операции.
Программа сравнивает ответ с правильным ответом и выдает "Правильно" или "Неправильно".
С этим всем я разобрался и написал.

Но нужно еще при помощи четырех CheckBox-ов дать возможность ученику выбрать в пределах каких действий он будет работать.
То есть процедура выглядит таким образом, что ученик поставил галочку напротив "Сложение" и "Умножение", значит ему только эти операции и будут выпадать.

Существует две кнопки "Задать пример" и "Проверить пример".

Вот скрин внешнего вида программы:
CheckBox_тесты


Код того, что есть на данный момент:
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit1: TEdit;
    Label5: TLabel;
    Button1: TButton;
    Button2: TButton;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
Var x,y:Integer;
begin
Label5.Caption:='';
Edit1.Text:='0';
Randomize();
If random(4)=0 Then
  Label2.Caption:='+'
  Else
    If random(4)=1 Then
      Label2.Caption:='-'
        Else
          If random(4)=2 Then
            Label2.Caption:='*'
          Else
            Label2.Caption:='/';
If  Label2.Caption<>'/' Then
  Begin
    Label1.Caption:=InttoStr(Random(100));
    Label3.Caption:=InttoStr(Random(100));
  End
Else
   Repeat
      Label1.Caption:=InttoStr(Random(100));
      x:=  StrtoInt(Label1.Caption);
      Label3.Caption:=InttoStr(Random(99)+1);
      y:=  StrtoInt(Label3.Caption);
   Until ((x mod y) = 0);
 end;
 
procedure TForm1.Button2Click(Sender: TObject);
Var x,y,  res_user : Integer;
     res_comp:Real;
begin
   x:=StrToInt(Label1.Caption);
   y:=StrToInt(Label3.Caption);
   res_user:=StrToInt(Edit1.Text);
   If Label2.Caption='+' Then
    res_comp:=x+y;
   If Label2.Caption='-' Then
    res_comp:=x-y;
   If Label2.Caption='*' Then
    res_comp:=x*y;
   If Label2.Caption='/' Then
    res_comp:=x/y;
   If res_comp=res_user Then
     Label5.Caption:='Правильно'
    Else
    Label5.Caption:=' Не правильно';
end;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Puporev
Модератор
54693 / 42108 / 29075
Регистрация: 18.05.2008
Сообщений: 99,368
15.09.2010, 10:36 2
Ну например так
Delphi
1
2
3
4
5
If random(4)=0 Then
 begin
   if Chekbox1.checked then   Label2.Caption:='+'
   else Showmessage('Это действие я не хочу!');
  end;
и так для всех 4х действий.
0
zow
0 / 0 / 0
Регистрация: 16.08.2015
21.09.2010, 12:56 3
Цитата Сообщение от Puporev Посмотреть сообщение
Ну например так
Код Delphi
If random(4)=0 Then
begin
if Chekbox1.checked then Label2.Caption:='+'
else Showmessage('Это действие я не хочу!');
end;
и так для всех 4х действий.
Немножко не то, что я хотел, но разобрался) Спасибо))

В дополнении нужно еще сделать так, чтобы программа задавала всего 12 тестов и по окончании выводила оценку ученика. Каким образом это можно воплотить в жизнь...?

Ну а высшим пилотажем считается, что ученик просто не может начать тестирование заново не пройдя 12 тестов. То есть предостеречься от бесконечных повторов тестирования не дойдя до конца.
0
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru