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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2008, 12:14   #1
Turok
 
Регистрация: 26.05.2008
Сообщений: 7
Вопрос Программа на Дин.структуры(НУЖНА ПОМОЩЬ)

Программа на Дин.структуры...Содержит информацию об автобусном парке(номер автобуса, ФИО водителя, маршрут) Должна отображать автобусы в парке и автобусы на маршруте, через меню переводить автобусе с маршрута в парк, и обратно...собственно всё...

Последний раз редактировалось Turok; 11.06.2008 в 23:37.
Turok вне форума Ответить с цитированием
Старый 11.06.2008, 12:16   #2
Turok
 
Регистрация: 26.05.2008
Сообщений: 7
По умолчанию

Код:
program voron;
uses crt;
type
    pSp=^park;
    park=record
    name:string[25];
    id:string[25];
    nomer:integer;
    del:boolean;
end;

FN=File of park;

var t:FN;
    f:pSp;
    safe:boolean;
    ex:boolean;
    key:char;
    i:integer;
procedure initdb;
begin

     assign(t,'C:\din.dat');
     reset(t);
     if ioresult <> 0 then
     begin
          rewrite(t);
          close(t);
          reset(t);
          if ioresult<>0 then safe:=false else safe:=true;
     end
     else safe:=true;

end;

procedure readrecord(n:integer; var rec:park);
var s:integer;
begin
if safe then
begin
     s:=filesize(t);
     if ((s>0) and (n<s)) then
     begin
     seek(t,n);
     read(t,rec);
     end
     else begin rec.name:='NULL';rec.id:='NULL';rec.nomer:=0 end;
end;
end;

procedure removerecord(n:integer);
var s:integer;
    rec:park;
begin
if safe then
begin
     s:=filesize(t);
     if ((s>0) and (n<s)) then
     begin
     seek(t,n);read(t,rec);
     rec.del:=true;
     seek(t,n);write(t,rec);
     end;
end;
end;

Последний раз редактировалось Alex21; 11.06.2008 в 16:49. Причина: используй редактировать и [code][/code]
Turok вне форума Ответить с цитированием
Старый 11.06.2008, 12:17   #3
Turok
 
Регистрация: 26.05.2008
Сообщений: 7
По умолчанию

Код:
procedure addrecord(rec:park);
var n,s:integer;
    ex:boolean;
    rec2:park;
begin
write('Введите номер автобуса ');readln(rec.id);
write('Введите ФИО водителя (Не > 25 знаков) ');readln(rec.name);
write('Введите маршрут ');readln(rec.nomer);
if safe then
begin
     s:=filesize(t);
     n:=0;ex:=false;
     if (s>0) then
     begin
          repeat
          seek(t,n);
          read(t,rec2);
          if rec2.del=true then ex:=true else n:=n+1;
          until ((n>=s)or(ex=true)) ;
     end;
     rec.del:=false;
     seek(t,n);
     write(t,rec);
end;
end;

procedure writerecord(n:integer;rec:park);
var s:integer;
begin
if safe then
begin
     s:=filesize(t);
     if ((s>0) and (n<s)) then
     begin
     seek(t,n);
     rec.del:=false;
     write(t,rec);
     end;
end;
end;

procedure drawtable(x:boolean);
var rec:park;
begin
if safe then
begin
     writeln('########################################################################');
     writeln('# ID  #      Номер автобуса      |      ФИО водителя         | Маршрут #');
     writeln('#--------------------------------+---------------------------+---------#');
     for i:=1 to filesize(t) do
     begin
          readrecord(i-1,rec);
          if x=false then if rec.del=false then writeln('#',(i-1):4,' |',rec.id:25,' |',rec.name:25,'  | ',rec.nomer:5,' #');
          if x=true then if rec.del=true then writeln('#',(i-1):4,' |',rec.id:25,' |',rec.name:25,'  | ',rec.nomer:5,' #');
     end;
     writeln('########################################################################');
end;
end;

begin
     ex:=false;
     initdb;
     repeat
     clrscr;
     writeln('* Главное меню *');
     writeln('1. Автобусы находящиеся в парке');
     writeln('2. Автобусы на маршруте');
     writeln('3. Добавить новые данные');
     writeln('4. На маршрут');
     writeln('5. В парк');
     writeln('0. Выход');
     key:=readkey;
     case key of
          '0':begin ex:=true;close(t) end;

          '1':begin
                   clrscr;
                   drawtable(false);
                   readkey;
              end;

          '2':begin
                   clrscr;
                   drawtable(true);
                   readkey;
              end;

          '3':begin
                   clrscr;
                   addrecord(t);
              end;


          '4':begin
                   clrscr;
                   drawtable(false);
                   write('Введите ID ');readln(i);
                   readrecord(i,f);
                   f.id:=true;
                   writerecord(i,f);
              end;
          '5':begin
                   clrscr;
                   drawtable(true);
                   write('Введите ID: ');readln(i);
                   readrecord(i,f);
                   f.id:=false;
                   writerecord(i,f);

       end;
     else
         ex:=false;
     end;

     until ex=true;
end.

Последний раз редактировалось Alex21; 11.06.2008 в 16:49. Причина: используй редактировать и [code][/code
Turok вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа (не код!) simple Помощь студентам 8 14.01.2008 23:36
Программа ben95 Общие вопросы Delphi 1 04.01.2008 20:52
Программа на С++ natan Помощь студентам 1 23.12.2007 15:59