• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль. Помогите сделать данную программу не используя оператора 'record'

votsarskam

Новые
Регистрация
9 Дек 2015
Сообщения
23
Реакции
0
Баллы
0
Паскаль. Помогите сделать данную программу не используя оператора 'record'

Составить программы, с помощью которых:
- сформировать файл из записей, содержащих сведения о книге(фамилия автора, название, год издания);
- упорядочить компоненты файла так, чтобы сначала следовали все книги Петрова, а затем все остальные.


program qwertyui;
uses crt;
type book=record
fam:string[20];
naz:string[20];
god:word;
end;
var b,d,x:book;
f:file of book;
n,i,j,p:integer;
begin
clrscr;
assign(f,'book');
rewrite(f);
write('Kol-vo zapisei n=');
readln(n);
for i:=1 to n do
begin
writeln('Kniga ',i);
with b do
begin
write('Famaliya: ');readln(fam);
write('Nazvanie: ');readln(naz);
write('God: ');readln(god);
end;
write(f,b);
end;
clrscr;
reset(f);
p:=0;
for i:=0 to filesize(f)-1 do
begin
seek(f,i);
read(f,b);
if b.fam='Petrov' then{esli -}
begin
p:=p+1;{schitaem}
x:=b;{zapominaem}
for j:=i downto p do{igem nazaf}
begin
seek(f,j-1);{chitaem pred-ee chislo }
read(f,d);
seek(f,j);{vstavlyaem vpered}
write(f,d);
end;
seek(f,p-1);{vstavlyaem na mesto kotoroe nashli}
write(f,x);
end
end;
seek(f,0);
while not eof(f) do
begin
read(f,b);
with b do
writeln(fam,' ',naz,' ',god);
end;
writeln;
if p=0 then write('Knig avtora Petrova net');
close(f);
readln
end.
 
Прежде всего, "record" - это никакой не оператор, а тип данных. Вам что, требуется всё это без записей? Ладно, сейчас нарисую.
 
буду очень благодарен.
 
Например, так (пути к файлам поставьте свои):
Код:
program qwertyui;
Uses CRT;

var
 f1,f2:Text;
 S:String;
 n,i:integer;

begin
 clrscr;
 assign(f1,'D:\book1');
 rewrite(f1);
 assign(f2,'D:\book2');
 rewrite(f2);
 write('Kol-vo knig n=');
 readln(n);
 for i:=1 to n do
  begin
   writeln('Kniga ',i,':');
   write('Familiya: ');
   readln(S);
   writeln(f1,S);
   write('Nazvanie: ');
   readln(S);
   writeln(f1,S);
   write('God: ');
   readln(S);
   writeln(f1,S);
  end;
 Close(f1);
 Reset(f1);
 Repeat
  readln(f1,S);
  if S='Petrov' then
   begin
    writeln(f2,S);
    readln(f1,S);
    writeln(f2,S);
    readln(f1,S);
    writeln(f2,S);
   end;
 Until EoF(f1);
 Reset(f1);
 Repeat
  readln(f1,S);
  if S='Petrov' then
   begin
    readln(f1);
    readln(f1);
   end
  else
   writeln(f2,S);
 Until EoF(f1);
 Close(f1);
 Close(f2);
end.
 
спасибо Вам большое!!
 
Назад
Сверху