![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Merlin |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 114 Пол: Мужской Реальное имя: Ден Репутация: ![]() ![]() ![]() |
Условие задачи :
Создать типизированный файл, запись которого имеет следующую структуру: номер УДК, фамилию и инициалы автора, название книги, год издания, количество экземпляров данной книги в библиотеке. Вывести на экран в алфавитном порядке название книг, количество экземпляров которых больше 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.
Что то у меня с сортировкой "название книги" по алфавиту проблемы... ![]() Остальное отладить я смогу, а в сортировке ошибка вылазит И ещё вопрос: как переделать ввод массива в подпрограмму ? -------------------- |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата в сортировке ошибка вылазит Var
...
temp: knigi; { <--- А не Integer, как у тебя !!! }
|
Merlin |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 114 Пол: Мужской Реальное имя: Ден Репутация: ![]() ![]() ![]() |
Спасибо за исправление
![]() Цитата Создание и обработку файла оформить в виде подпрограмм Т.е. надо оформить в иде процедур и функций ? Что нужно для этого переделать в программе ? ![]() -------------------- |
Merlin |
![]()
Сообщение
#4
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 114 Пол: Мужской Реальное имя: Ден Репутация: ![]() ![]() ![]() |
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 -------------------- |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
У тебя ошибки, или что? В чем вопрос?
Почему вы все думаете, что здесь сидят телепаты? |
Merlin |
![]()
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 114 Пол: Мужской Реальное имя: Ден Репутация: ![]() ![]() ![]() |
У меня условие : создать типизированный файл..
Я правильно его объявляю ? Или надо делать так, как я написал программу с массивом ,, Пост : 16.12.2005 0:45 ? -------------------- |
klem4 |
![]()
Сообщение
#7
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Да, файл который ты создал - типизированный, а чтобы таких вопросов больше не возникало - F A Q : ФАЙЛЫ
Сообщение отредактировано: klem4 - 19.12.2005 17:11 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Merlin |
![]()
Сообщение
#8
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 114 Пол: Мужской Реальное имя: Ден Репутация: ![]() ![]() ![]() |
А как мне в этой проге сделать ввод массива и сортировку , через процедуру ?
А то я не могу разобраться в этих локальных и глобальных переменных... Может хоть пример какой .. -------------------- |
Merlin |
![]()
Сообщение
#9
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 114 Пол: Мужской Реальное имя: Ден Репутация: ![]() ![]() ![]() |
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.
Где у меня ошибки ?? Подскажите как вывести результат на экран и сделать сортировку без использования массива, -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 24.07.2025 14:59 |