Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2012, 18:30   #1
Camelot_2012
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 90
Счастье типизированный файл catalog.dat, содержащий сведения о книгах (TurboPascal)

Код:
program faili; 
uses crt; 
type book=record 
   avtor: string; 
   nazv: string; 
   god: integer; 
   razdel: integer; 
   end; 
const n=20; 
var f: file of book; 
    otv: char; 
    a: book; 
    b: array [1..n] of book; 
i,min,imin,k,j: integer; 
y: book; 
begin 
clrscr; 
assign (f,'catalog.dat'); 
rewrite (f); 
repeat 
writeln ('vvedite avtora'); 
readln (a.avtor); 
writeln ('vvedite nazvanie'); 
readln (a.nazv); 
writeln ('vvedite god'); 
readln (a.god); 
writeln ('vvedite razdel'); 
readln (a.razdel); 
write (f,a); 
writeln ('Prodolzhenie - lubaia knopka, vixod-esc'); 
otv:= readkey; 
until ord(otv)=27; 
close (f); 
clrscr; 
reset (f); 
repeat 
read (f,a); 
writeln (a.avtor:15, a.nazv:15,a.god:6,a.razdel:10); 
until eof (f); 
{sortiruem po razdelu} 
for i:=1 to n-1 do 
begin 
min:=b[i].razdel; 
imin:=i; 
for j:=i+1 to n do 
if b[j].razdel<min then 
begin 
min:=b[j].razdel; 
imin:=j; 
end; 
y:=b[imin]; 
b[imin]:=b[i]; 
b[i]:=y; 
end; 
clrscr; 
writeln ('avtor':15,'nazvanie':15,'god':7,'razdel':15); 
for i:=1 to n do 
with b[i] do 
writeln (avtor:15,nazv:15,god:7,razdel:15); 
{ishem razdel gde bolshe knig} 
k:=0; 
for i:=1 to n do 
begin 
k:=k+1; 
if (b[i+1].razdel<>b[i].razdel) or (i=n) then 
begin 
writeln ('v razdele  ',b[i].razdel,'  kol-vo knig  ',k); 
k:=0; 
end; 
end; 

repeat until keypressed; 
end.
Пожалуйста помогите доделать программу.

Вот УСЛОВИЕ:
Создать типизированный файл catalog.dat, содержащий сведения о книгах:
- автор;
- название;
- год издания;
- раздел.
а) найти раздел, в котором больше всего книг;
б) по заданному разделу занести в отдельный файл сведения о всех его книгах;
в) удалить из файла сведения о книгах, год издания которых меньше заданного;
г) обеспечить просмотр файла в табличном виде.


_________
Название темы должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В дальнейшем темы с подобным названием будут закрываться/удаляться,
а автор такой темы получать штрафы.

Прошу учесть на будущее...

Модератор.

Последний раз редактировалось Serge_Bliznykov; 25.05.2012 в 11:13.
Camelot_2012 вне форума Ответить с цитированием
Старый 25.05.2012, 00:55   #2
Arhangel7
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 90
По умолчанию

Код:
type book=record 
   avtor: string;//нужно задать явную длинну строки 
   nazv: string;//нужно задать явную длинну строки 
   god: integer; 
   razdel: integer; 
   end;
дальше не читал
как-то так
Arhangel7 вне форума Ответить с цитированием
Старый 25.05.2012, 11:11   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Arhangel7
Код:
   avtor: string;//нужно задать явную длину строки 
   nazv: string;//нужно задать явную длину строки
Arhangel7, +1
хотя для TurboPascal это необязательное условие (если длина не указана, это то же самое, что string[255]),
но для совместимости с более свежими версиями компиляторов языка Паскаль, да и для наглядности/надёжности,
я бы крайне настойчиво рекомедовал задать длину строки.
например, так:
Код:
type book=record 
   avtor: string[15];
   nazv: string[45];
   god: integer; 
   razdel: integer; 
end;


Camelot_2012, я бы крайне рекомендовал Вам не создавать файл КАЖДЫЙ раз при запуске программы! А ещё лучше, добавил в программу простейшее меню выбора действия - и пусть пользователь решает, что он хочет - пересоздать файл заново с внесением записей, посмотреть содержимое файла, удалить из файла записи по определённому условию, вывести сведения о разделе в файл или найти раздел с наибольшим числом записей...

каждая из этих подзадач может быть решена НЕЗАВИСИМО от остальных задач!
Какие из них у Вас вызывают сложности (ну непонятен алгоритм решения или не знаете, как алгоритм реализовать в коде?)

Последний раз редактировалось Serge_Bliznykov; 25.05.2012 в 11:17.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать файл, содержащий сведения о сотрудниках института. Olgaandsasha Помощь студентам 4 10.04.2012 03:11
Создать типизированный файл catalog.dat, содержащий сведения о книгах Хочу все знать! Помощь студентам 3 17.05.2011 01:01
Создать файл содержащий сведения о телефонах абонентов region23 Помощь студентам 2 30.11.2010 15:18
Создать файл содержащий сведения о том kot i @ Паскаль, Turbo Pascal, PascalABC.NET 0 25.05.2010 17:27