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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.12.2013, 18:35   #1
orandzheviyman
Пользователь
 
Регистрация: 11.11.2013
Сообщений: 74
По умолчанию Динамическая память

Как этот код написать разместив данные в динамической памяти, используя массив указателей на структуры?


Код:
const MAXbook = 100; {максимум книг}
type
  Tbook=record {данные книги}
    surname:string[20]; {фамилия автора}
    bookname:string[50]; {название книги}
    year:longint; {год выпуска}
    genre:string[30]; {жанр}
  end;
  TBookArray=array[1..MAXbook] of Tbook;


PROCEDURE{пункт 1} CreateNewFile(var AB:TBookArray; var N:integer; fname:string);
var
  f:file of Tbook;
  i:integer;
  count: char; {для ввода}
begin
  write('Введите имя файла: ');
  readln(fname);
  assign(f, fname);
  rewrite(f);
  i:=1; count :='y';
  while count ='y' do
  begin
    writeln('Введите данные ', i, '-ой книги');
    writeln;
    write('Фамилия автора: '); readLn(AB[i].surname);
    write('Название книги:  '); readLn(AB[i].bookname);
    write('Год выпуска:      '); readLn(AB[i].year);
    write('Жанр:                '); readLn(AB[i].genre);
    write(f, AB[i]);
    i := i + 1;
    if i<= MAXbook then begin
      write('Продолжить ввод? (y - любая кнопка - нет)'); readln(count); end
    else begin; count:='n'; end;
  end;
  close(f);
  N:=i-1;
end;


PROCEDURE {пункт 2} ShowList(AB:TBookArray);
var
  i:integer;
  N:longint;
  f:file of Tbook;
  fname:string;
begin
  writeln ('Введите имя файла: '); read (fname);
  assign(f, fname);
  reset(f);
  N:=FileSize(f);
  for i:=1 to N do
   begin Read(f, AB[i]); end;
  writeln ('Список книг:');
  for i:=1 to N do
   writeln (AB[i].surname:15,'     ', AB[i].bookname:15,'      ', AB[i].year:4,AB[i].genre:15);
  close (f);
  writeln;
  writeln('Нажмите ENTER для продолжения');
  Readln;
end;


PROCEDURE {пункт 3} Poisk(AB:TBookArray; N:longint; FindYear:longint);
var i:integer;
    f:file of Tbook;
    fname:string;
begin
  Writeln;
  Write ('Введите имя файла, в котором надо искать: '); readln (fname);
  assign(f, fname);
  reset(f);
  N:=FileSize(f);
  write ('Введите год для поиска: '); readLn(FindYear);
   writeln;
  for i:=1 to N do
   begin Read(f, AB[i]); end;
  writeln('Книги выпущенные в ',FindYear,' году: ');
   for i:=1 to N do
    if AB[i].year=FindYear then
         writeln(AB[i].surname, ', ',AB[i].bookname);
  writeln;
  WriteLn('Нажмите ENTER для продолжения');
  Readln;
end;

var ALLbooks:TBookArray;
  fname:string; {имя файла}
  N:integer; {факт число книг}
  M:integer; {для меню}
  FindYear: longint;


begin
  N:=0;
  M:=0;
  while M <> 4 do begin
    writeln(' Программа учёта книг ');
    writeln('1 - Создать новый файл');
    writeln('2 - Вывести на экран содержимое файла');
    writeln('3 - Поиск книг по году');
    writeln('4 - Выход');
    write('Введите номер требуемой операции: ');
    readln(M);

    case M of
      1: CreateNewFile(ALLbooks, N, fname);
      2: ShowList(ALLbooks);
      3: Poisk(ALLbooks, N, FindYear);
    end; {end of case}
  end; {end of while}
end.
orandzheviyman вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая память I.C.E Общие вопросы C/C++ 15 16.01.2011 19:27
Динамическая память zhenya.ya Помощь студентам 1 22.09.2010 08:43
динамическая память zhenya.ya Помощь студентам 2 24.02.2010 20:58
Динамическая память!!! Doholyan Паскаль, Turbo Pascal, PascalABC.NET 12 30.06.2009 17:11
Динамическая память. Пaвeл Помощь студентам 16 31.05.2009 21:16