С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 10.06.2014
Сообщений: 10
1

Как сделать чтобы в конце теста выводило оценку?

12.06.2014, 17:33. Показов 3789. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Делаю тест, количество правильных и неправильных ответов выводит, мне еще нужно чтобы ставило оценку 2...5 балов за определенное количество ответов! Как это сделать, помогите кодом если не сложно!
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Menus, ExtCtrls;
 
type
 
    TPrTime = Record
    Min: Byte;
    Sec: Byte;
  end;
 
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N11: TMenuItem;
    Panel1: TPanel;
    Lbl_Last: TLabel;
    Lbl_FQuestion: TLabel;
    BtnV1: TButton;
    BtnV2: TButton;
    BtnV3: TButton;
    BtnV4: TButton;
    MQuestion: TMemo;
    MIAbout: TMenuItem;
    Timer1: TTimer;
    MITest: TMenuItem;
    MITBegin: TMenuItem;
    MIOpenFile: TMenuItem;
    Memo_Temp: TMemo;
    MV1: TMemo;
    MV2: TMemo;
    MV3: TMemo;
    MV4: TMemo;
    OpenDialog1: TOpenDialog;
    GBox: TGroupBox;
    MIExit: TMenuItem;
    MITEnd: TMenuItem;
    LblNameTest: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    PanelButton: TPanel;
    Label3: TLabel;
    Lbl_NomQuestion: TLabel;
    N1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    function  DecTime(Var aa:TPrTime; Sender: TObject): string;
    procedure PrTimeOut(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure MIOpenFileClick(Sender: TObject);
    procedure MIAboutClick(Sender: TObject);
    procedure PrFillFileds(Sender: TObject);
    procedure MITBeginClick(Sender: TObject);
    procedure PrClickButton(Sender: TObject);
    procedure MIExitClick(Sender: TObject);
    procedure N1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  PrTimeLast: TPrTime;
  PrTimeFull: TPrTime;
  NomQuestion: Byte;
  PrVAnsverOK: Byte;
  PrOrderQuestion: array [1..255] of byte;
 
 
implementation
 
uses Unit2;
 
 
{$R *.DFM}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  GBox.Visible:=False;
  Timer1.Enabled:=False;
  PrTimeLast.Min:=0;
  PrTimeLast.Sec:=0;
  MITBegin.Enabled:=True;
  MITEnd.Enabled:=False;
  NomQuestion:=1;
  Memo_Temp.Lines.Clear;
  PrVAnsverOK:=0;
  PanelButton.Visible:=True;
end;
 
Function PrFormatConvert(aa:TPrTime): String;
begin
  if aa.Min<=9 then result:=result+'0'+IntToStr(aa.Min)
   else result:=IntToStr(aa.Min);
  if aa.Sec<=9 then result:=result+':0'+IntToStr(aa.Sec)
   else result:=result+':'+IntToStr(aa.Sec);
end;
 
function TForm1.DecTime(Var aa:TPrTime; Sender: TObject): string;
begin
  if aa.Sec=0 then
    if aa.Min>0 then
      begin
        dec(aa.Min);
        aa.Sec:=59;
      end
     else PrTimeOut(Sender)
   else dec(aa.Sec);
  result:=PrFormatConvert(aa);
end;
 
procedure TForm1.PrTimeOut(Sender: TObject);
begin
    if NomQuestion=StrToInt(copy(Memo_Temp.Lines[1],1,pos(' ',Memo_Temp.Lines[1])-1)) then
    begin
      Timer1.Enabled:=False;
      PanelButton.Visible:=False;
                ShowMessage('³äïîâ³äåé (çàãàëüíà ê³ëüê³ñòü\ïðàâèëüíèõ):'+#13+#10
                   +IntToStr(NomQuestion)+'\'+IntToStr(PrVAnsverOK));
      Abort;
    end;
   PrTimeLast.Min:=StrToInt(copy(Memo_Temp.Lines[1],pos(' ',Memo_Temp.Lines[1])+1,pos(':',Memo_Temp.Lines[1])-pos(' ',Memo_Temp.Lines[1])-1));
   PrTimeLast.Sec:=StrToInt(copy(Memo_Temp.Lines[1],pos(':',Memo_Temp.Lines[1])+1,Length(Memo_Temp.Lines[1])-pos(':',Memo_Temp.Lines[1])));
   inc(NomQuestion);
  PrFillFileds(Sender);
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Lbl_Last.Caption:=DecTime(PrTimeLast,Sender);
end;
 
procedure TForm1.MIOpenFileClick(Sender: TObject);
begin
  FormCreate(Sender);
  OpenDialog1.InitialDir:=ExtractFilePath(Application.ExeName);
  if OpenDialog1.Execute then
    Memo_Temp.Lines.LoadFromFile(OpenDialog1.FileName);
end;
 
procedure TForm1.MIAboutClick(Sender: TObject);
begin
  ShowMessage('Âèêîíàâ: Êîëî쳺öü Ð. Þ.;'+#13+#10+
              ' '+#13+#10+
              'Ñòóäåíò ãðóïè: ²ÒÏÑ-1233'+#13+#10+#13+#10+'');
end;
 
procedure TForm1.PrFillFileds(Sender: TObject);
begin
 
  MQuestion.Clear;
  MV1.Clear;
  MV2.Clear;
  MV3.Clear;
  MV4.Clear;
 
  MQuestion.Lines[0]:=Memo_Temp.Lines[2+6*(PrOrderQuestion[NomQuestion]-1)];
  MV1.Lines[0]:=Memo_Temp.Lines[3+6*(PrOrderQuestion[NomQuestion]-1)];
  MV2.Lines[0]:=Memo_Temp.Lines[4+6*(PrOrderQuestion[NomQuestion]-1)];
  MV3.Lines[0]:=Memo_Temp.Lines[5+6*(PrOrderQuestion[NomQuestion]-1)];
  MV4.Lines[0]:=Memo_Temp.Lines[6+6*(PrOrderQuestion[NomQuestion]-1)];
  Lbl_NomQuestion.Caption:=IntToStr(NomQuestion);
 
  if MQuestion.Lines.Count>=3 then MQuestion.scrollbars:=ssVertical else MQuestion.scrollbars:=ssNone;
  if MV1.Lines.Count>=3 then  MV1.scrollbars:=ssVertical else MV1.scrollbars:=ssNone;
  if MV2.Lines.Count>=3 then  MV2.scrollbars:=ssVertical else MV2.scrollbars:=ssNone;
  if MV3.Lines.Count>=3 then  MV3.scrollbars:=ssVertical else MV3.scrollbars:=ssNone;
  if MV4.Lines.Count>=3 then  MV4.scrollbars:=ssVertical else MV4.scrollbars:=ssNone;
 
end;
 
procedure TForm1.MITBeginClick(Sender: TObject);
Var
   Stroka: String;
   tempNomQuestion, i: byte;
begin
  if Memo_Temp.Lines.Count<4 then
    begin
      ShowMessage('³äêðèéòå ôàéë Ôàéë òåñòóâàííÿ');
      Abort;
    end;
 
  Stroka:=Memo_Temp.Lines[1];
  PrTimeLast.Min:=StrToInt(copy(Stroka,pos(' ',Stroka)+1,pos(':',Stroka)-pos(' ',Stroka)-1));
  PrTimeLast.Sec:=StrToInt(copy(Stroka,pos(':',Stroka)+1,Length(Stroka)-pos(':',Stroka)));
  PrTimeFull.Sec:=StrToInt(copy(Stroka,1,pos(' ',Stroka)-1))
                  *PrTimeLast.Sec mod 60;
  PrTimeFull.Min:=StrToInt(copy(Stroka,1,pos(' ',Stroka)-1))
                  *PrTimeLast.Min + StrToInt(copy(Stroka,1,pos(' ',Stroka)-1))
                  *PrTimeLast.Sec div 60;
 
  for i:=1 to 255 do
    PrOrderQuestion[i]:=0;
  tempNomQuestion:=0;
 
  while tempNomQuestion<StrToInt(copy(Memo_Temp.Lines[1],1,pos(' ',Memo_Temp.Lines[1])-1)) do
      begin
        randomize;
        i:=1+random(StrToInt(copy(Memo_Temp.Lines[1],1,pos(' ',Memo_Temp.Lines[1])-1)));
        if PrOrderQuestion[i]=0 then
          begin
           inc(tempNomQuestion);
           PrOrderQuestion[i]:=tempNomQuestion;
          end;
      end;
 
  PrFillFileds(Sender);
 
  LblNameTest.Caption:=Memo_Temp.Lines[0];
 
  Lbl_FQuestion.Caption:=PrFormatConvert(PrTimeFull);
  Lbl_Last.Caption:=PrFormatConvert(PrTimeLast);
  NomQuestion:=1;
  MITBegin.Enabled:=False;
  MITEnd.Enabled:=True;
  GBox.Visible:=True;
  PanelButton.Visible:=True;
  Timer1.Enabled:=True;
end;
 
procedure TForm1.PrClickButton(Sender: TObject);
begin
  if StrToInt(Memo_Temp.Lines[7+6*(PrOrderQuestion[NomQuestion]-1)])=(Sender as TButton).Tag Then
    begin
      ShowMessage('Ïðàâåëüíà â³äïîâ³äü');
      inc(PrVAnsverOK);
    end
   else ShowMessage('Íåïðàâèëüíà â³äïîâ³äü');
  PrTimeOut(Sender);
end;
 
procedure TForm1.MIExitClick(Sender: TObject);
begin
  Close;
end;
procedure TForm1.N1Click(Sender: TObject);
begin
Form2.Show
end;
 
end.
Добавлено через 47 секунд
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.PrTimeOut(Sender: TObject);
begin
    if NomQuestion=StrToInt(copy(Memo_Temp.Lines[1],1,pos(' ',Memo_Temp.Lines[1])-1)) then
    begin
      Timer1.Enabled:=False;
      PanelButton.Visible:=False;
                ShowMessage('Відповідей (загальна кількість\правильних):'+#13+#10
                   +IntToStr(NomQuestion)+'\'+IntToStr(PrVAnsverOK));
      Abort;
    end;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2014, 17:33
Ответы с готовыми решениями:

Как сделать чтобы ответ выводило в Chart?
нужно после прохождения всего теста чтобы выводило результат в диаграмму.Код теста в архиве

Как в Delphi 7 сделать чтобы рандомом выводило определенные числа?
Как в Delphi 7 сделать чтобы рандомом выводило определенные числа?

Как сделать чтобы при нажатии на CheckBox в Edit выводило сообщение?
Например Вопрос что такое integer? Жмякаю на CheckBox и в рядом стоящий Edit выводит сообщение -...

Сделать так, чтобы выводило результат с десятичной частью
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4:...

10
Житель Земли
3001 / 3009 / 390
Регистрация: 26.07.2011
Сообщений: 11,464
Записей в блоге: 1
12.06.2014, 17:48 2
каковы критерии оценивания? за что нужно ставить 2, а за что 5? ответь себе на эти вопросы, и решение придет СРАЗУ ЖЕ. это не тот случай, когда можно просто помочь кодом
0
0 / 0 / 0
Регистрация: 10.06.2014
Сообщений: 10
12.06.2014, 17:57  [ТС] 3
Цитата Сообщение от DenNik Посмотреть сообщение
каковы критерии оценивания? за что нужно ставить 2, а за что 5? ответь себе на эти вопросы, и решение придет СРАЗУ ЖЕ. это не тот случай, когда можно просто помочь кодом
Вопросов всего 50: если меньше 12 то 2, если меньше 25 и больше 12 то 3, если больше 25 и меньше 37 то 4, если больше 37 то 5!
0
Житель Земли
3001 / 3009 / 390
Регистрация: 26.07.2011
Сообщений: 11,464
Записей в блоге: 1
12.06.2014, 17:59 4
ну вот, ответ дан.

псевдокод
Код
if result < 12 then оценка = 2 и так далее
Добавлено через 1 минуту
тобой решена довольно сложная задача, а на простом почему-то возникли проблемы
1
0 / 0 / 0
Регистрация: 10.06.2014
Сообщений: 10
12.06.2014, 18:01  [ТС] 5
Цитата Сообщение от DenNik Посмотреть сообщение
ну вот, ответ дан.
псевдокод
Код Code
1
if result < 12 then оценка = 2 и так далее
что то вроде этого?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.PrTimeOut(Sender: TObject);
begin
    if NomQuestion=StrToInt(copy(Memo_Temp.Lines[1],1,pos(' ',Memo_Temp.Lines[1])-1)) then
    begin
      Timer1.Enabled:=False;
      PanelButton.Visible:=False;
                ShowMessage('Відповідей (загальна кількість\правильних):'+#13+#10
                   +IntToStr(NomQuestion)+'\'+IntToStr(PrVAnsverOK));
                  if PrVAnsverOK < 12 then
                   ShowMessage('Ваша оцінка: 2');
      Abort;
    end;
0
Житель Земли
3001 / 3009 / 390
Регистрация: 26.07.2011
Сообщений: 11,464
Записей в блоге: 1
12.06.2014, 18:03 6
я весь код не разбирал.

где у тебя общее количество правильных ответов? вот его и сравнивай
0
0 / 0 / 0
Регистрация: 10.06.2014
Сообщений: 10
12.06.2014, 18:04  [ТС] 7
Цитата Сообщение от DenNik Посмотреть сообщение
тобой решена довольно сложная задача, а на простом почему-то возникли проблемы
Это не я делал, мне препод сказал здесь сделать чтобы ставило оценку! (
0
Житель Земли
3001 / 3009 / 390
Регистрация: 26.07.2011
Сообщений: 11,464
Записей в блоге: 1
12.06.2014, 18:06 8
аааа...
то есть, здесь должны за тебя проштудировать код и выдать готовый ответ?!
0
0 / 0 / 0
Регистрация: 10.06.2014
Сообщений: 10
12.06.2014, 18:07  [ТС] 9
Цитата Сообщение от DenNik Посмотреть сообщение
я весь код не разбирал.
где у тебя общее количество правильных ответов? вот его и сравнивай
Если тебе не сложно можешь также написать мне на все 4 оценки?

Добавлено через 55 секунд
Цитата Сообщение от DenNik Посмотреть сообщение
аааа...
то есть, здесь должны за тебя проштудировать код и выдать готовый ответ?!
Я спросил нет так нет! Спс тогда й на том что помог!
0
5 / 5 / 4
Регистрация: 12.01.2014
Сообщений: 22
15.06.2014, 02:02 10
Лучший ответ Сообщение было отмечено Andariell21 как решение

Решение

Тебе надо просто взять одну переменную, туда записать кол-во правильных ответов, и создать например ещё одну переменную для хранения оценки
Delphi
1
2
3
4
5
6
7
8
9
10
11
var
i:integer; //для оценки
x:integer; //для количества правильных ответов
 
case x of
  0..20:i:= 2;
 21..30:i:= 3;
 31..40:i:= 4;
 41..50:i:= 5;
  else ShowMessage('Чего-то тут лажа какая-та :)');
end;
Вместо i:= 2; можно писать ShowMessage('Вам 2 балла');
тогда переменная i вообще не нужна))
1
0 / 0 / 0
Регистрация: 10.06.2014
Сообщений: 10
15.06.2014, 18:19  [ТС] 11
Спасибо большое!
0
15.06.2014, 18:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2014, 18:19
Помогаю со студенческими работами здесь

Нужно в Delphi 7 сделать чтобы в ShowMessage выводило три рандомных числа от 0 до 9
Нужно в Delphi 7 сделать чтобы в ShowMessage выводило три рандомных числа от 0 до 9

Как заменить проще, чтобы ошибку не выводило?
как заменить мне переменную &quot;d&quot;?

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

как сделать что б каждую подстроку выводило с новой строки?
Дана строка символов C1, C2,…CM, в которой могут встречаться цифры, пробелы, буква &quot;Е&quot; и знаки &quot;+&quot;,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru