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

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

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

 
 Ответить  Открыть новую тему 
> Библитечная база данных, поиск и наполнение
сообщение
Сообщение #1


Новичок
*

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

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


Задача
"Сведения о читателях библиотеки хранятся в файле, каждая запись которого включает фамилию, адрес, год рождения читателя и номер читательского билета. Данные из файла - в динамический массив записей. По известным фамилии, адресу и г.р. произвести поиск записи о читателе. Если запись не найдена - дополнить в файл(нолмер чит билета на 1 больше чем в последней записи файла)."
1. При создании файла записей, у первой записи проскакивает фамилия, т.е. заполняется сразу поле адреса, а фавмилия определяется пустой строчкой, с последующими записями такого нет.
2. При вводе данных для поиска - при вводе x.adr - поле записи string[20] выдает ошибку invalid numeric format 106 указатель в тексте программы стоит на readln(x.fam,x.adr,x.gr)
3. Больше вроде ничо не беспокоит хотя выглядит криво.
4. Взял номера читательского билета как порялковый номер в файле, таки правильно?
5. Как мне в паскале русскими буквами писать? А то закорючки какието только.

Текст программы весь ммммммм
program lib;
uses crt;
type
zap=record
fam:string[20];
adr:string[20];
Gr:integer;
Nom:integer;
end;
fz=file of zap;
mas=array[1..1] of zap;
pmas=^mas;
var
a:pmas;
x:zap;
i,n:integer;
f:fz;
v:boolean;

procedure create(var f:fz);
var i,n:integer; x:zap;
begin
rewrite(f);
writeln('n=');
read(n);
for i:=1 to n do
begin
writeln('Dlya #',i);
writeln('Familia');
readln(x.fam);
writeln('adres');
readln(x.adr);
writeln('g.r.');
readln(x.gr);
x.nom:=i;
write(f,x);
end;
close(f);
clrscr;
end;

procedure view(var f:fz);
var i:integer; x:zap;
begin
reset(f);
for i:=1 to filesize(f) do
begin
read(f,x);
writeln(i,'. ',x.fam);
writeln(' ',x.adr);
writeln(' G.r. ',x.gr);
writeln;
end;
writeln;
close(f);
end;

begin
assign(f,'lib.pas');
erase(f);
create(f);
view(f);
reset(f);
n:=filesize(f);
getmem(a,n*sizeof(zap));
for i:=1 to n do read(f,a^[i]);
writeln('Vvedite Fam Adr Gr');
readln(x.fam,x.adr,x.gr);
v:=false;
for i:=1 to n do
if ((x.fam=a^[i].fam) and (x.adr=a^[i].adr)) and (x.gr=a^[i].gr) then
begin break; writeln('Naiden, #',i); v:=true; end;
if v=false then begin x.nom:=n+1; writeln('ne naiden, dobavlen s nomerom ',x.nom); write(f,x); end;
readkey;
end.

както не по полочкам все вышло
Завтра про курсовик спрошу

Просьба выполнять Правила Форума (п.4)
На этот раз я исправил..
Lapp


Сообщение отредактировано: Lapp -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

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

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


Отредактируй название темы, чтоб было более, о чем речь..
По пункту 1: попробуй в процедуре create read(n) заменить на readln..
По пятому: Паскаль + русские слова

Сообщение отредактировано: Айра -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


ай извините за тему
по 1 все работает как надо
а вот по 2 ничо понять не могу почему ошибка
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
а вот по 2 ничо понять не могу почему ошибка
Как данные вводишь, расскажи? Все через Enter, или все сразу вводишь, и потом жмешь Enter один раз?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


ввожу подряд через ентер
на 2 раз вылезает ошибка 106
ввожу слова английскими буквами

заработало как мне надо, разбив на 3 readln, сдается мне я чото очень важное забыл

Сообщение отредактировано: Ученик -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
ввожу подряд через ентер
Ну, вот и вводи через Enter:
writeln('Vvedite Fam Adr Gr');
with X do
begin
readln(fam); readln(adr); readln(gr);
end;
, иначе у тебя происходят совсем не те вещи, которых ты ожидаешь. В частности, всё до первого Enter-а записывается в X.fam, потом #13 - в X.adr, ну, и ошибка при чтении числа, потому что то, что ты ввел как адрес - ни разу не число.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


еее спасибо вольво за разъяснения
теперь мой способ поиска читателя не работает, не могу понять что не так, хорошо хоть в конец добавляет ненайденного.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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