Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2011, 17:20   #1
KitoPoni
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 11
Восклицание Тест по рус. яз. delphi

Помогите доделать-переделать тест по русскому языку.
Т.е. в самой программе, сделанной через делфи, (*1*) необходимо переделать счет правильных-неправильных ответов. В моей проге если делаешь 1 ошибку, то тест прекращает работу и пишет, что "Вы не прошли тест...", а надо, чтоб баллы правильных-неправильных ответов выводились в конце теста, после всех 10 вопросов.
(*2*) Вопросы берутся из файла test.txt. Необходимо сделать, чтоб вопросы выбирались не из 10 написанных, а 10 из 50, но рандомом.
И прошу показать, как пишется этот файл - test.txt.

Вот код программы. Самой проги нету, т.к. полетел комп. Заранее благодарен.

Код:
unit Unit1; 

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg;

type 
Tform1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
RadioGroup1: TRadioGroup;
Button2: TButton;
Label3: TLabel;
Panel1: TPanel;
Image1: TImage;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);

 private
{ Private declarations } 

public
{ Public declarations }
procedure GenerateNewQ;
procedure GenerateResult;
procedure GenerateLost; 
end;

const
Q = 'Вопрос '; 
O_k = 'Верно';
 _of = ' из ';
Win1 = 'Вы успешно прошли тест!';
win2 =' Поздравляем'; 
Iost2 = 'Неверно';
Lost1 = 'Вы не прошли тест. Вы не умнее пятиклассника! ';
 var
Forml: Tform1;
N     : Integer;
num  : Integer;
ri    : Integer;
implementation
uses Unit2; {$R *.dfm}
procedure Tform1.GenerateNewQ;
 var S: String; 
begin

begin
inc(num);
label1l.Caption: = Q+inttostr(num)+_of+inttostr(N);
readln(S); Iabel2.Caption: = S;
readln(S); RadioGroup1.Items.Strings[0]:= S;
readln(S); RadioGroup1.Items.Strings[1]:= S;
readln(S); RadioGroup1.Items.Strings[2]:= S;
readln(S); RadioGroup1.Items.Strings[3]:= S;
RadioGroup1. Buttons[ri] .Checked: = false;
readln(ri); 
end 
end;

procedure Tform1.GenerateResult; begin
label1.Caption: = win2;
Iabel2.Caption: = win1;
label3.Visible:= false;
button1.Visible: = false;
radiogroup1.Visible: = false; 
end;

procedure Tform1.GenerateLost; 
begin
label1.Caption := Iost2;
Iabel2.Caption: = lost1;
Iabel3.Visible: = false;
Button1.Visible: = false;
Radiogroup1.Visible:= false;
end;

procedure Tform1.FormCreate(Sender: TObject); 
begin
num:= 0;
assignfile(input/test.txt'); readln(N); if (N>0)then
GenerateNewQ
else
begin closefile(input);
form1.Close
end;

end;
procedure Tform1.Button1Click(Sender: TObject);
begin
If (RadioGroup1.Buttons[ri].Checked) and (num<N) then
begin
label3.Caption:= Q+inttostr(num)+' - '+O_k;
GenerateNewQ;
End

else
if (num=N) and (RadioGroup1.Buttons[ri].Checked) then
GenerateResult

Else
if (not RadioGroup1.Buttons[ri].Checked) then
GenerateLost;
end;

procedure Tform1.Button2Click(Sender: TObject);
begin
closefile(input);
forml.Close;
end;

procedure Tform1.Button3Click(Sender: TObject); begin
form2.show; 
end;
end.

unit Unit2; 

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

Type
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
LabeI6: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject); 
private
{ Private declarations } 
public
{ Public declarations } 
end;

var
Form2: TForm2;

Implementation
{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject); 
begin 
close; 
end;
end.

Последний раз редактировалось Stilet; 17.01.2011 в 17:23.
KitoPoni вне форума Ответить с цитированием
Старый 18.01.2011, 20:52   #2
dosha
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 224
По умолчанию

кинь проэкт мне на почту помогу
мой ник(собака)meta.ua
dosha вне форума Ответить с цитированием
Старый 19.01.2011, 13:37   #3
KitoPoni
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 11
По умолчанию

У меня нету проекта. Все удалилось. Есть только то, что написано тут.

Хотяб помогите добавить-прописать строку, которая будет брать вопросы из файла test.txt рандомом-вразброс.
KitoPoni вне форума Ответить с цитированием
Старый 19.01.2011, 14:09   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Хотяб помогите добавить-прописать строку, которая будет брать вопросы из файла test.txt рандомом-вразброс.
считать все вопросы в массив
и брать Random-но из этого массива. После взятия вопроса удалять его из массива или обнулять элемент с этим вопросом!
Код:
// считать в массив
assign(f,'test.txt');
reset(f);
k:=0;
while not eof(f) do begin
inc(k);
read(f,V[k]);
end;
closefile(f);
// вытащить по random из массива
NumQ=random(k)+1;
while V[NumQ]='' do 
NumQ=random(k)+1;
Vopr:=V[NumQ];

//обнулить вопрос в массиве
V[NumQ]:='';
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 19.01.2011 в 14:16.
Mad_Cat вне форума Ответить с цитированием
Старый 19.01.2011, 17:15   #5
KitoPoni
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 11
По умолчанию

А если не секрет, куда это вставить? =)
KitoPoni вне форума Ответить с цитированием
Старый 19.01.2011, 17:27   #6
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
А если не секрет, куда это вставить? =)
не секрет) в свой код)
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 19.01.2011, 17:31   #7
KitoPoni
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 11
По умолчанию

Оригинально, но в какую именно строку?
KitoPoni вне форума Ответить с цитированием
Старый 19.01.2011, 20:08   #8
KitoPoni
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 11
По умолчанию

Подниму...
KitoPoni вне форума Ответить с цитированием
Старый 19.01.2011, 20:16   #9
KitoPoni
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 11
По умолчанию

Т.е.
Цитата:
procedure Tform1.FormCreate(Sender: TObject);
begin
num:= 0;
assignfile(input/test.txt'); readln(N); if (N>0)then
GenerateNewQ
else
begin closefile(input);
form1.Close
end;
Заменяем на
Цитата:
// считать в массив
assign(f,'test.txt');
reset(f);
k:=0;
while not eof(f) do begin
inc(k);
read(f,V[k]);
end;
closefile(f);
// вытащить по random из массива
NumQ=random(k)+1;
while V[NumQ]='' do
NumQ=random(k)+1;
Vopr:=V[NumQ];

//обнулить вопрос в массиве
V[NumQ]:='';
Так получается? Просто самих файлов нету, проверить не могу.
KitoPoni вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передать рус буквы HTL Работа с сетью в Delphi 6 02.04.2022 14:19
Регулярные выражения + рус. яз. Linel PHP 1 26.11.2010 21:17
Программа-тест в Delphi) скиньте))а то програмку здавать преподу надо,и самой хочется понять Delphi Верчик Помощь студентам 9 02.03.2009 17:46
Сортировка рус/англ magistr_forever SQL, базы данных 1 18.07.2008 20:50
Метод секущих +решение рус.яз для DEV C++ Толик Общие вопросы C/C++ 1 27.04.2008 15:00