Помощь - Поиск - Пользователи - Календарь
Полная версия: База Данных "Детская библиотека"
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
flashg
Помогите усовешенствовать и разобратся - Задание в паскале.
Мне было задана куча заданий - и вот решил тут одно заданице набить.

Посмотрел пример и набил - и получается. Но хочу усовершенствовать работу программы.

Вот задание: РАЗРАБОТАТЬ БАЗУ ДАННЫХ "ДЕТСКАЯ БИБЛИОТЕКА" (ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО, АВТОРА КНИГИ, НАЗВАНИЕ КНИГИ, ГОРОД И ИЗДАТЕЛЬСТВО, ГОД ВЫПУСКА). ВЫВЕСТИ НА ЭКРАН ДАННЫЕ О КНИГАХ, ВЫПУЩЕННЫХ В 1995 ГОДУ.
======================================
-------------------------------------------

программа работает но вот что мне не нравится - фантазировать имена фаимли отчества итд для N количества персон - это немного нудно

и я подумал а почему бы не сделать так создать уже файл P1.pas вбить туда эти данные (вот тока сразу возникает вопрос каким оброзом) запустив уже удавшеюся программуу и минутку думая на соченяв имена прогнав её выполнев все действия я уже получил этот файл мне тока остаётся переписать программу чтобы уже содержимое файла считать)
klem4
Не очень я понял что ты хочешь, помойму тебе нужно просто забить все данные константами, чтобы в ходе выполнения ничего не вводить, я прав ? :

const
names:array[1..5] of string = ('Вася','Коля','Дима','Петя','Иван');

type
TRec = record
name:string;
{i vse ostalnoe}
end;

var
book:array[1..5] of TRec;
i:integer;

Begin

...

for i:=1 to 5 do
with book[i] do begin
...
...
name:=names[i];
end;

...
End.

flashg
да я прав но чтобы во время уже выполнения (RUN) программа показала что она отсеяла васю, идругих года 94 а высветила Петю 1995года

т.е. чтобы показала что она фильтрует

Т.е. чтобы в процессе ран было указано что

имеются персоны
отобразила сперва их данные
1
2
3
4

а потом указала что толко 2 и 3 к примеру 1995 года.
Guest
Извени но я не пойму что с кусками этими делать куда подставить - заменить полностью на свой вариант ?

я тут внеск кое какие изменения иначе всё бы нормально бы да вот тока эта гадина считывает тока (полностью) 1ую строку стобы там нибыло набито а остальные не трогает
Guest
чёто не получилось сделать вложение

12n-2.pas
Код
Program pr_12;
  uses crt;
  type person=record
  sname,name,otc,avtr,nb,pub,year:string[14];
  end;
 
  var  rbook:array[1..20] of person;
  f1,f2:text; i,n:integer;
  st1:string;
 
   BEGIN clrscr;  Assign(f1,'p1.pas');  reset(f1);

         ReadLn(f1,rbook[i].sname,rbook[i].name,rbook[i].otc,rbook[i].avtr,
             rbook[i].nb,rbook[i].pub,rbook[i].year);
    Writeln (rbook[i].sname,rbook[i].name,rbook[i].otc,rbook[i].avtr,
             rbook[i].nb,rbook[i].pub,rbook[i].year);
    
Assign(f2,'p2.pas');  rewrite(f2);
st1:='1995';
Writeln('Ф И О Автар книги Название книги Издательство Год выпуска');
Writeln(f2,'Ф И О Автар книги Название книги Издательство Год выпуска');
for i:=1 to n do begin   With rbook[i] do    if year=st1 then      
begin        
Writeln(sname:10,name:10,otc:10,avtr:10,nb:10,pub:10,year:10);      
Writeln(f2,sname:10,name:10,otc:10,avtr:10,nb:10,pub:10,year:10);    
end; end;close(f1); Close(f2);readln;  END.

---------------------
файл к считыванию

p1.pas
------------
snameАзимов nameАйзек otc1 avtr2 nb3 pub1994 year1994
snameДик nameФилип otcК avtr2 nb3 pub1995 year1995
snameШекли nameРоберт otcК avtr2 nb3 pub1995 year1995

Сколько можно говорить? Тегами пользоваться будешь, или "не царское это дело?" angry.gif И, кстати, зарегистрируйся, и сможешь свои посты редактировать, а то десятки постов, а информации - кот наплакал...
Malice
Цитата(Guest @ 4.08.05 12:28)
чёто не получилось сделать вложение

Не знай, что ты имел ввиду, но вот это:
Код
    ReadLn(f1,rbook[i].sname,rbook[i].name,rbook[i].otc,rbook[i].avtr,
             rbook[i].nb,rbook[i].pub,rbook[i].year);
    Writeln (rbook[i].sname,rbook[i].name,rbook[i].otc,rbook[i].avtr,
             rbook[i].nb,rbook[i].pub,rbook[i].year);

надо бы в цикле делать, на всякий случай..
volvo
Чтобы не было проблем со считыванием строчных данных, располагай их вот так (Названия полей заносить не нужно, только саму информацию !!!):
Цитата
Азимов
Айзек
1
2
3
1994
1994
Дик
Филип
К
2
3
1995
1995
Шекли
Роберт
К
2
3
1995
1995
flashg
Цитата(Malice @ 4.08.05 16:44)
Не знай, что ты имел ввиду, но вот это:
Код
    ReadLn(f1,rbook[i].sname,rbook[i].name,rbook[i].otc,rbook[i].avtr,
             rbook[i].nb,rbook[i].pub,rbook[i].year);
    Writeln (rbook[i].sname,rbook[i].name,rbook[i].otc,rbook[i].avtr,
             rbook[i].nb,rbook[i].pub,rbook[i].year);

надо бы в цикле делать, на всякий случай..



Цитата(volvo @ 4.08.05 16:44)
Чтобы не было проблем со считыванием строчных данных, располагай их вот так (Названия полей заносить не нужно, только саму информацию !!!):


Ваши предложенные варианты не работают. Во гляньте.
volvo
Правда? А если чуть-чуть подумать, прежде чем делать что-то?
Тебе же сказали: "в цикле" !!! Где ты у себя цикл видел? Я почему-то его не нашел... Это первое...

Второе:
for i:=1 to n do begin
Круто... А где ты присвоил какое-нибудь значение в N? Я опять что-то пропустил?

А про оформление программы ты никогда ничего не слышал? Постороннему в твоей программе... как бы это сказать... Не совсем просто разобраться. А ведь правильное оформление программы ОЧЕНЬ помогает в поиске ошибок...

Кстати, вот рабочий вариант:
flashg
Спасибо :molitva:

а что значит команда EOF
klem4
Функция, возвращает true , если достигнут конец файла.

EndOfFile
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.