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

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

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

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


Гость






Помогите усовешенствовать и разобратся - Задание в паскале.
Мне было задана куча заданий - и вот решил тут одно заданице набить.

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

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

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

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


Прикрепленные файлы
Прикрепленный файл  12new.PAS ( 1.57 килобайт ) Кол-во скачиваний: 260
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

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

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


Не очень я понял что ты хочешь, помойму тебе нужно просто забить все данные константами, чтобы в ходе выполнения ничего не вводить, я прав ? :

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.



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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






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

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

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

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

а потом указала что толко 2 и 3 к примеру 1995 года.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






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

я тут внеск кое какие изменения иначе всё бы нормально бы да вот тока эта гадина считывает тока (полностью) 1ую строку стобы там нибыло набито а остальные не трогает
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






чёто не получилось сделать вложение

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 И, кстати, зарегистрируйся, и сможешь свои посты редактировать, а то десятки постов, а информации - кот наплакал...

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


Профи
****

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

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


Цитата(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);

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


Гость






Чтобы не было проблем со считыванием строчных данных, располагай их вот так (Названия полей заносить не нужно, только саму информацию !!!):
Цитата
Азимов
Айзек
1
2
3
1994
1994
Дик
Филип
К
2
3
1995
1995
Шекли
Роберт
К
2
3
1995
1995
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

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

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


Цитата(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)
Чтобы не было проблем со считыванием строчных данных, располагай их вот так (Названия полей заносить не нужно, только саму информацию !!!):


Ваши предложенные варианты не работают. Во гляньте.


Прикрепленные файлы
Прикрепленный файл  12new2.zip ( 857 байт ) Кол-во скачиваний: 191
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






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

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

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

Кстати, вот рабочий вариант:


Прикрепленные файлы
Прикрепленный файл  12new2.rar ( 846 байт ) Кол-во скачиваний: 195
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

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

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


Спасибо :molitva:

а что значит команда EOF
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Perl. Just code it!
******

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

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


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

EndOfFile

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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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