IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Файлы прямого доступа, Программа тестирования
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 92
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


Хмммм если честно, попробовала сделать эту программу.. Только или запуталась где-то или что-то вообще неверно делаю... Просто не компилирует.

Программа тест.. Сначала делается файл с вопросами в виде-вопросб количество вариантов ответа, сами варианты ответов и номер правильного.
А результат записывается так- номер вопроса, имя и фамилия, выбранный номер ответа, правильный ответ.

Прикрепленный файл  UZD10.PAS ( 2.37 килобайт ) Кол-во скачиваний: 568

Может кто-нибудь в этом разбирается...

Сообщение отредактировано: Anastacia Adesso -


--------------------
Ben sensiz yaşayamam
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






как ты думаешь, сколько ошибок вот в этом фагменте?
      readln(f1,q.vopr);
writeln(q.vopr);
readln(f1,j_sk,prav);
for i:=1 to j_sk do
begin
readln(f1,q.vopr);
writeln(i,'. ',q.vopr);
end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 92
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


Надо
      begin
readln(f1,q.otv);
writeln(i,'. ',q.otv);
end;
да?


--------------------
Ben sensiz yaşayamam
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Не совсем... Файл F1 определен, как File of Test - соотвественно, типизированный... А к типизированным файлам процедура ReadLn неприменима, только Read... Во-вторых, читать надо в переменную типа Test, то есть всю запись сразу, а не кусками, иначе опять же компилятор не пропустит...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 92
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


Эммм

read(f1,q.vopr);
writeln(q.vopr);
read(f1,j_sk,prav);
for i:=1 to j_sk do
begin
read(f1,q.vopr);
writeln(i,'. ',q.vopr);
end;
у меня же q и есть переменная типа test. А история та же всё ещё


--------------------
Ben sensiz yaşayamam
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Я же предупредил:
Цитата
читать надо в переменную типа Test, то есть всю запись сразу, а не кусками
, а ты опять хочешь прочесть только одно поле...
read(f1, q); { <--- Вот так у компилятора не будет претензий }
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 92
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


Тогда можно оставить вот так..
      read(f1,q);
writeln(q.vopr);
for i:=1 to q.j_sk do
begin
writeln(i,'. ',q.vopr);
end;
те ридлайны, что были раньше надо убрать, так как прочитана уже вся запись?


--------------------
Ben sensiz yaşayamam
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

Группа: Пользователи
Сообщений: 92
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


Тогда теперь ему что-то уже здесь не нравится
      for i:=1 to q.j_sk do
begin writeln(i,'. ',q.otv);{<--здесь}
end;


--------------------
Ben sensiz yaşayamam
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(Anastacia Adesso @ 8.01.2007 13:59) *

Тогда теперь ему что-то уже здесь не нравится

for i:=1 to q.j_sk do
for j=1 to n do
writeln(i,'. ',q.otv[j]);{<--здесь}



 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 92
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


Нет
      for i:=1 to q.j_sk do
begin writeln(i,'. ',q.otv[i]);
end;

теперь почему-то после заполнения файла вопросов он выдает оценку ПЛОХО и всё... Что делать?


--------------------
Ben sensiz yaşayamam
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата
if otv_nr=q.prav then inc(prav_otv);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Пионер
**

Группа: Пользователи
Сообщений: 92
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


Не в этом смысле..
Вначале идёт вообще создание файла с вопросами..
Это всё работает, но потом сразу же (не задавая вопросов) даёт оценку


--------------------
Ben sensiz yaşayamam
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Приведи еще раз, что получилось, ведь были еще исправления, а то в исходном коде есть такие интересные строки:

writeln('Vvedite nomer praviljnogo otveta i nazhmite <Enter>');
writeln('Nazhmi <Enter> chtob nachatj test');
clrscr;

т.е. написали и стерли сразу..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Пионер
**

Группа: Пользователи
Сообщений: 92
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


Вот такое получилось
Прикрепленный файл  UZD10.PAS ( 2.4 килобайт ) Кол-во скачиваний: 552


--------------------
Ben sensiz yaşayamam
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Перед
while not eof(f1) do begin

надо поставить Reset (f1), чтоб сбросить указатель чтения в начало файла. + то, о чем я говорил раньше:

if otv_nr=q.prav then inc(prav_otv);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Пионер
**

Группа: Пользователи
Сообщений: 92
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


На otv_nr он говорит что неизвестный идентификатор. Если поставить r.otv_nr ое перестаёт дальше компилировать

Вот так программа работае.
write('Vash vybor-->');
readln(r.otv_nr);
if r.otv_nr=q.prav then inc(prav);
writeln;
end;

Проблемма.. Всё можно ввести, задаст вопросы, примет ответы, и ... напишет что файл не открыт.. А почему?


--------------------
Ben sensiz yaşayamam
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(Anastacia Adesso @ 9.01.2007 15:48) *

Вот так программа работае.

Ну да, правильно, я имел ввиду, что прблема в отсутствующем "q.".
if r.otv_nr=q.prav then inc(r.prav_nr);

Про файл ничего не говорит у меня, оценку ставит..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Пионер
**

Группа: Пользователи
Сообщений: 92
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


А может потому что у меня в папке много файлов и я одно и то же название ввожу? Его заглючило

Да работает...
А как сделать так, чтоб он записывал во второй файл результаты, а не просто его создавал?


--------------------
Ben sensiz yaşayamam
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Ты делаешь Close (f2), хотя его не открывала. Он у тебя вообще не используется. Поставь в начале Rewrite (f2) хотя бы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Пионер
**

Группа: Пользователи
Сообщений: 92
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


Сделала... Всё равно не пишет.. Ну и ладно...

Спасибо!!!!


--------------------
Ben sensiz yaşayamam
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.10.2024 7:14
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name