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

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

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

 
 Ответить  Открыть новую тему 
> Типизированный файл
Merlin
сообщение 16.12.2005 0:45
Сообщение #1


Пионер
**

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

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


Условие задачи :

Создать типизированный файл, запись которого имеет следующую структуру: номер УДК, фамилию и инициалы автора, название книги, год издания, количество экземпляров данной книги в библиотеке. Вывести на экран в алфавитном порядке название книг, количество экземпляров которых больше 3.

Создание и обработку файла оформить в виде подпрограмм.



Program tip;
 const
    n=20;
  type
     knigi = record
                      fam, io, nazv_kn : string[20] ;
                      udk: real;
                      god_izd, kol : integer;
      end;
  
 Var
        kn: array[1..n] of knigi;
        i,j: integer; 
        temp:integer;

Begin
         writeln('Введите данные о книге');
         writeln('-----------------------------');
  for i:=1 to n do
     with kn[i] do begin
    writeln(' Введите номер УДК ');
       readln(n_UDK);
    writeln('Введите Фамилию');
       readln(fam);
    writeln(' Введите Иницалы автора ');
       readln(io);
    writeln('Введите название книги');
       readln(nazv_kn);
    writeln('Введите год издания'); 
       readln(god_izd);
    writeln('Введите кол-во экземпляров данной книги'); 
       readln(kol);
end;
 
  if  kn[i].kol > 3 then 

for i:=2 to n do
  for j:=n downto i do
     if  kn[j-1].nazv_kn > mass[j].nazv_kn then begin
       temp:=kn[j-1]; 
       kn[j-1]:=kn[j];
       kn[j]:=temp;
end;
  for i:=1 to n do
    writeln (kn[i].nazv_kn);
end;
readln;
   end.




Что то у меня с сортировкой "название книги" по алфавиту проблемы... blink.gif , не знаю что делать
Остальное отладить я смогу, а в сортировке ошибка вылазит


И ещё вопрос: как переделать ввод массива в подпрограмму ?


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


Гость






Цитата
в сортировке ошибка вылазит

Var
  ...
  temp: knigi; { <--- А не Integer, как у тебя !!! }
 К началу страницы 
+ Ответить 
Merlin
сообщение 16.12.2005 1:55
Сообщение #3


Пионер
**

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

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


Спасибо за исправление smile.gif

Цитата

Создание и обработку файла оформить в виде подпрограмм


Т.е. надо оформить в иде процедур и функций ?
Что нужно для этого переделать в программе ? blink.gif


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Merlin
сообщение 19.12.2005 16:30
Сообщение #4


Пионер
**

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

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



Program tip;
 const
    n=20;
  type
     knigi = record
                      fam, io, nazv_kn : string[20] ;
                      udk: real;
                      god_izd, kol : integer;
      end;

var 

f: file of knigi; 
kn: knigi; 
vybor: byte; 
temp:knigi;
i,j:integer;


begin 

write('1- создать новый, 0 - открыть');readln(vybor); 
assign(f,'имя_файла.dat'); 

if vybor <>0 then 
begin 
{создать новый файл} 
rewrite(f); 

writeln('Введите данные о книге'); 
         writeln('-----------------------------'); 
  for i:=1 to n do 
  begin 
     with kn[i] do begin 
    writeln(' Введите номер УДК '); 
       readln(n_UDK); 
    writeln('Введите Фамилию'); 
       readln(fam); 
    writeln(' Введите Иницалы автора '); 
       readln(io); 
    writeln('Введите название книги'); 
       readln(nazv_kn); 
    writeln('Введите год издания'); 
       readln(god_izd); 
    writeln('Введите кол-во экземпляров данной книги'); 
       readln(kol); 
   end; 
  write(f,kn); 
  end; 
  close(f); 
end; 
reset(f); 

 
  if  kn[i].kol > 3 then 

for i:=2 to n do
  for j:=n downto i do
     if  kn[j-1].nazv_kn > mass[j].nazv_kn then begin
       temp:=kn[j-1]; 
       kn[j-1]:=kn[j];
       kn[j]:=temp;
end;
  for i:=1 to n do
    writeln (kn[i].nazv_kn);
end;
readln;
end.



Я правильно сделал задачу ?
Запутался с типизированным файлом, может я что то не так объявляю ?

Сообщение отредактировано: Merlin - 19.12.2005 16:31


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.12.2005 16:33
Сообщение #5


Гость






У тебя ошибки, или что? В чем вопрос?

Почему вы все думаете, что здесь сидят телепаты?
 К началу страницы 
+ Ответить 
Merlin
сообщение 19.12.2005 16:47
Сообщение #6


Пионер
**

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

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


У меня условие : создать типизированный файл..

Я правильно его объявляю ?

Или надо делать так, как я написал программу с массивом ,, Пост : 16.12.2005 0:45 ?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 19.12.2005 17:11
Сообщение #7


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

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

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


Да, файл который ты создал - типизированный, а чтобы таких вопросов больше не возникало - F A Q : ФАЙЛЫ

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


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


Пионер
**

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

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


А как мне в этой проге сделать ввод массива и сортировку , через процедуру ?

А то я не могу разобраться в этих локальных и глобальных переменных...
Может хоть пример какой ..


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Merlin
сообщение 27.12.2005 20:33
Сообщение #9


Пионер
**

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

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



Program tip; 
 const 
    n=20; 
  type 
     knigi = record 
                      fam, io, nazv_kn : string[20] ; 
                      udk: real; 
                      god_izd, kol : integer; 
      end; 

var 

f: file of knigi; 
kn_1: knigi; 
vybor: byte; 
temp:knigi; 
i,j:integer; 
kn: array [1..n] of knigi;


begin 

write('1- создать новый, 0 - открыть');readln(vybor); 
assign(f,'fd.dat'); 

if vybor <>0 then 
begin 
{создать новый файл} 
rewrite(f); 

writeln('Введите данные о книге'); 
         writeln('-----------------------------'); 
  for i:=1 to n do 
  begin 
     with kn_1 do begin 
    writeln(' Введите номер УДК '); 
       readln(n_UDK); 
    writeln('Введите Фамилию'); 
       readln(fam); 
    writeln(' Введите Иницалы автора '); 
       readln(io); 
    writeln('Введите название книги'); 
       readln(nazv_kn); 
    writeln('Введите год издания'); 
       readln(god_izd); 
    writeln('Введите кол-во экземпляров данной книги'); 
       readln(kol); 
   end; 
  write(f,kn_1); 
  end; 
  close(f); 
end; 
reset(f); 

  
 
for i:=2 to n do 
  for j:=n downto i do 
     if  kn[j-1].nazv_kn > kn[j].nazv_kn then begin 
       temp:=kn[j-1]; 
       kn[j-1]:=kn[j]; 
       kn[j]:=temp; 
end; 
       if  kn[i].kol > 3 then 
           for i:=1 to n do 
               writeln (kn[i].nazv_kn); 
end; 
readln; 
end. 



Где у меня ошибки ??
Подскажите как вывести результат на экран и сделать сортировку без использования массива,


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

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

 

- Текстовая версия 24.07.2025 14:59
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"