VF
Administrator
|
KMA, ты про внешняя ссылка удалена ?
Требуется создать оболочку тест и желательно на Делфе. Т. е. мы имеем какой-то файл, в котором находятся вопросы, а пользователь должен на них отвечать, в конце программа должна вывести результат, показать ответы правильные и выбранные пользователем. + сохранять информу о пользователях. Если есть какие-инбудь идеи, типа как оформить файл, чтобы его можно было хоть как-нибудь да закодировать от ненужных глаз, или типа как вообще проработать структуру записи и чтения вопросов (требуется из общего количества вопросов задать только определенное количесво. Т. е. в базе 60 вопросов, а из них надо задать только 20), то, пожалуйста не пренебрегайте своими знаниями, а поделитесь.
Такие программ для тестов уже делано-переделано много тысяч . Самый разумный вариант - клиент-сервер. На клиент поступает только текст вопроса, а возвращается выбранный ответ. Проверку вопросов и статистику ведет сервер.
- При изменении тестов не нужно менять клиентов.
- Не нужно придумывать никакого хитрого кодирования (которое все равно было бы не надежно, т.к. в доступной пользователю программе содержалось бы все, необходимое для раскодирования).
- Если клиентом будет веб-браузер, то получится простое и хорошо переносимое решение.
|
Всего сообщений: 3110 | Присоединился: май 2002 | Отправлено: 25 фев. 2006 17:47 | IP
|
|
KMA
Долгожитель
|
Нет, дело то в том, что это надо делать для студентов, при чем не залезая в и-нет, а просто проходить компьютерное тестирование, т. е. у тебя есть компьютер, ты за ним сидишь и отвечаешь на вопросы, после он тебе выдает сколько у тебя баллов. что-то вроде ЕГЭшных вариантов. А если не секрет, то поделитесь, где можно почитать о таких клиент-сервер тестах, и если можно то поподробнее к самому программированию. Просто мне может и такую штучку смогу предложить.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 25 фев. 2006 22:40 | IP
|
|
VF
Administrator
|
Компьютеры в сети? Тогда достаточно локального веб-сервера, установленного на один из компьютеров. А читать нужно про web-формы (HTML) и серверные скрипты (Perl, PHP).
|
Всего сообщений: 3110 | Присоединился: май 2002 | Отправлено: 26 фев. 2006 7:24 | IP
|
|
azatik
Удален
|
Привет всем у меня наконец-то кончилась вычислительная практика, но у меня осталась одна задача: Даны несколько слов (например, три) из русских букв. Вывести на экран: все звонкие и глухие согласные, которые входят в любые два слова. У меня есть 2 кода на неё, но 1-ый не всегда пашет, а 2-ой зацикливает, приходится посылать его на ctrl + Pause Break, Помогите Плииз!!! (Сообщение отредактировал azatik 2 марта 2006 23:21)
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 2 марта 2006 20:05 | IP
|
|
miss_graffiti
Долгожитель
|
давай коды - поищем ошибки.
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 2 марта 2006 22:36 | IP
|
|
KMA
Долгожитель
|
Слушай, а как это в любые два слова, т. е. они должны содержаться сразу в двух словах??? А если у меня их 150, то это значит, что я должен буду пробежаться по всем глухим в разных словах, и просмотреть где буква встречается как минимум в двух словах... Ну блин, и дают же задачи...
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 3 марта 2006 0:57 | IP
|
|
azatik
Удален
|
Вот первый: program Lab_15; uses crt; var s,o:string; g:array {{1..100] of char; a:array{{1.. 100] of string; m,m1,mn,m2,m3:set of char; h:char; k,p,q,n,i:integer; begin clrscr; m:={{'b'..'d','f'..'h','j'..'n','p'..'t','v'..'x','z']; writeln('vvedite stroku'); readln(s); for k:=1 to length(s) do begin if s{{k]=' ' then begin p:=p+1; end; end; p:=p+1; for k:=1 to p do begin o:=copy(s,1,pos(' ',s)-1); delete(s,1,pos(' ',s)); a{{k]:=o; end; a{{p]:=copy(s,1,length(s)); o:=' '; for k:=1 to p do begin for q:= 1 to length(a{{k]) do begin if (a{{k]{{q] in m){and(not(a{{k]{{q]in m1))and(not(a{{k-1]{{q]in m1))} then begin m1:=m1+{{a{{k]{{q}}; o:=o+a{{k]{{q]; end; end; end; for i:=1 to length(o) do g{{i]:=o{{i]; for i:= 1 to length(o) do if g{{i] >g{{i+1] then begin h:= g{{i]; g{{i]:=g{{i+1]; g{{i+1]:=h; end; for i:= 1 to length(o) do begin if g{{i]= g{{i+1] then writeln(g{{i]); end; textcolor(2); writeln; readkey; end. А вот второй: program lab_15; uses crt; var s:string; a:array{{1..100] of string; n,i,j,k:integer; begin clrscr; writeln('Vvedite stroku'); readln(s); k:=1; n:=length(s); for i:=1 to n do if s{{i] <> ' 'then a{{k]:=a{{k]+s{{i] else k:=k+1; for i:=1 to k do begin for i:=1 to length(a{{i]) do begin s:=a{{i]; if s{{i]='b' then s{{i]:=s{{i+1]; if s{{i]='c' then s{{i]:=s{{i+2]; if s{{i]='d' then s{{i]:=s{{i+3]; if s{{i]='f' then s{{i]:=s{{i+4]; if s{{i]='g' then s{{i]:=s{{i+5]; if s{{i]='h' then s{{i]:=s{{i+6]; if s{{i]='j' then s{{i]:=s{{i+7]; if s{{i]='k' then s{{i]:=s{{i+8]; if s{{i]='l' then s{{i]:=s{{i+9]; if s{{i]='m' then s{{i]:=s{{i+10]; if s{{i]='n' then s{{i]:=s{{i+11]; if s{{i]='p' then s{{i]:=s{{i+12]; if s{{i]='r' then s{{i]:=s{{i+13]; if s{{i]='s' then s{{i]:=s{{i+14]; if s{{i]='t' then s{{i]:=s{{i+15]; if s{{i]='v' then s{{i]:=s{{i+16]; if s{{i]='w' then s{{i]:=s{{i+17]; if s{{i]='x' then s{{i]:=s{{i+18]; if s{{i]='z' then s{{i]:=s{{i+19]; end; writeln(s{{i]); end; readkey; end. Суть такая вводим три слова, (не обизательно русских) через пробел, если естть согласные встрещающиеся в 2-х словах, выводим, а те которые в 1-ом или в 3-х выводить не надо.
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 3 марта 2006 5:56 | IP
|
|
miss_graffiti
Долгожитель
|
я бы сделала по-другому. тупо в лоб. памяти будет жрать жуткое кол-во, но пофиг. плохо только, что динамические массивы в паскале делать не умею итак: создаем массив из логических переменных размера кол-во согласных * кол-во слов (если заранее неизвестно, то максимальное... в строке 256 символов, то есть больше 128 слов не будет никогда). дальше анализируем имеющуюся строку. и каждую согласную буковку заносим в соответствующую ячейку. (то есть на пересечении номера согласной и номера слова. соответственно, по пробелам отслеживаем, когда кончилось слово). а дальше смотрим. если в столбце 2 истины, а все остальное - ложь, то букву выводим.
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 3 марта 2006 19:37 | IP
|
|
KMA
Долгожитель
|
Пусть у нас есть неограниченное количество слов, тогда алгоритм мисс граффити пойдет в пух и прах. Мой вариант таков, сравнивая два слова рядом стоящих, а это не так уж и сложно просто найти первую согласную в первом слове, проверить не встречается ли оно во втором, если да, то выводим, если нет смотрим дальше, пока не закончиться первое слово, потом сравниваем второе с третьим ну т. д. Красиво будет решить это рекурсией.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 4 марта 2006 0:19 | IP
|
|
miss_graffiti
Долгожитель
|
неограниченного кол-ва слов у нас не может быть, т.к.в паскале длина строки ограничена. твой вариант... если у тебя буква встречается в 1,2 и 7 слове, она выведется. (один или 3 раза - неважно). а нам надо, чтобы вывелись только те, которые встречаются ровно в 2 словах.
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 4 марта 2006 8:37 | IP
|
|
|