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

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

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

 
 Ответить  Открыть новую тему 
> Типизированный файл
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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

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


Пионер
**

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

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


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

Цитата

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


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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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


Гость






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

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


Пионер
**

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

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


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

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

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


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


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

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

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


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

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


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


Пионер
**

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

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


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

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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

 



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