Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 09.03.2016, 19:18   #1 (permalink)
votsarskam
Member
 
Регистрация: 09.12.2015
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль. Помогите сделать данную программу не используя оператора '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.
votsarskam вне форума   Ответить с цитированием

Старый 09.03.2016, 19:18
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Похожие топики уже создавались, предлагаю вам почитать их

Помогите пожалуйста составить программу с использованием оператора выбора
Помогите написать программу, Паскаль

Старый 09.03.2016, 19:37   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Прежде всего, "record" - это никакой не оператор, а тип данных. Вам что, требуется всё это без записей? Ладно, сейчас нарисую.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.03.2016, 19:47   #3 (permalink)
votsarskam
Member
 
Регистрация: 09.12.2015
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

буду очень благодарен.
votsarskam вне форума   Ответить с цитированием
Старый 09.03.2016, 20:05   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Например, так (пути к файлам поставьте свои):
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.03.2016, 20:14   #5 (permalink)
votsarskam
Member
 
Регистрация: 09.12.2015
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

спасибо Вам большое!!
votsarskam вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 10:34.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.