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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2013, 21:05   #1
Mikheeva_Ksu
 
Регистрация: 20.06.2013
Сообщений: 6
По умолчанию работа с файлами.паскаль

смысл задачи след. дана база данных по электродвигателям, хранится в файле. в ней содержится информация о типе двигателя, напряжении, мощности, и т.д.. сама задача состоит в том, чтобы выбрать из файла инфу обо всех двигателях на заданное напряжение и обеспечить возможность полного просмотра выбранной инфы в порядке возрастания мощности двигателя. т.е. как я поняла...отсортировать файл по мощности и обеспечить поиск по напряжению, но вот код ошибки выдает и отказывается работать...плиз, хэлп...

Код:
 program zadacha_31;

uses crt;

type owner=record
  tip:string[30];
  Unom:integer;
  Pnom:real;
  Wnom:integer;
  Mnom:real;
  KPD:real;
  end;
 ownerptr=^ownerin;
 ownerin=record
    dat:owner;
    next:ownerptr;
  end;
var
karta:owner;
f:file of owner;
first:ownerptr;
ow:owner;
fname:string;
 { tip_:string;}
  Unom_:integer;
 { Pnom_:real;
  Wnom_:integer;
  Mnom_:real;
  KPD_:real; }
ch:char;


procedure File_create;
   var sym:char; i:integer;
     begin
     clrscr;
       rewrite(f);
       repeat
           with ow do
             begin
                     write('tip dvigatelya - ');
                     readln(tip);
                     write('nominalnoe napryajenie - ');
                     readln(Unom);
                     write('nominalnaya mojnost - ');
                     readln(Pnom);
                     write('nominalnaya chastota vraschenia - ');
                     readln(Wnom);
                     write('nominalnyi moment vraschenia - ');
                     readln(Mnom);
                     write('KPD - ');
                     readln(KPD);
             end;
           write(f,ow);
           write('Prodoljit ? [y(a)/n(i)]');
           readln(sym);
       until sym in ['N','n','I','i'];
       close(f);
     end;

procedure Sort_List_create(var first:ownerptr);
var tek,tek1,pred:ownerptr;
   begin
        reset(f);
        first:=nil;
         while not(eof(f)) do
          begin
             new(tek);
             read(f,tek^.dat);
             tek^.next:=nil;
             if first= nil
                then first:=tek
                else
                begin
                  tek1:=first;
                  pred:=nil; while (tek<>nil) and
                             (tek^.dat.Pnom>tek1^.dat.Pnom) do
                    begin
                      pred:=tek1;
                      tek1:=tek1^.next;
                    end;
                  if tek1=first then
                    begin
                       tek^.next:=first;
                       first:=tek;
                    end
                  else
                    begin
                      tek^.next:=pred^.next;
                      pred^.next:=tek;
                    end;
                end;
          end;
   end;

procedure print(var first:ownerptr);
var i:integer;
    tek:ownerptr;
begin
  clrscr;
  tek:=first;
  while tek<>nil do
    begin
      with tek^.dat do
        write(tip,' ':30-length(tip),Unom:5,' ',Pnom:7:3,' ',
         Wnom:5,' ',Mnom:7:3,' ',KPD:7:3,' ');
        writeln;

  tek:=tek^.next;
    end;
  writeln;
  writeln('najmite ENTER');
  readln;
end;


Procedure poisk(fname:string; Unom_:integer);
Var napr: integer;
flag:boolean;
i:integer;
Begin
assign(f, fname);
reset(f);

                begin
                writeln ('vvedite napryagenie dlya poiska');
                readln (Unom_);
                flag:=false;
                while not eof(f) do
           begin
read (f,karta);
If (karta.Unom=Unom_) then with karta do
begin
writeln('tip dvigatelya - ',tip);
writeln('nominalnoe napryajenie - ',Unom);
writeln('nominalnaya mojnost - ',Pnom);
writeln('nominalnaya chastota vraschenia - ',Wnom);
writeln('nominalnyi moment vraschenia - ',Mnom);
writeln('KPD - ',KPD);
Flag:=true;
end;
End;
if not flag then writeln ('ne naideno!');
Writeln ('nagmite Enter');
Readln;
End;
End;

Begin
assign(f, 'd:\as\dvig.dat');
{$i-}
reset(f);
{$i-}
{if ioresult<>0 then } File_create;
repeat
clrscr;
writeln('1.sortirovka');
writeln('2.poisk');
writeln('3.exit');
ch:=readkey;
case ch of
#49:
begin
sort_list_create(first);
writeln('*************************************************************');
writeln('skorrektirovannyi spisok');
print(first);
writeln('*************************************************************');
end;
#50:
begin
write('pit i imya faila');
readln(fname);
write('vvedite iskomoe napryajenie: ');
readln(Unom_);
poisk(fname,Unom_);
writeln('*************************************************************');
writeln('naidennie dannie');
print(first);
writeln('*************************************************************');
end;
end;
until ch=#51;
exit;
END.
end.

Последний раз редактировалось Stilet; 23.06.2013 в 22:31.
Mikheeva_Ksu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, работа с файлами. Ebon Помощь студентам 5 19.03.2012 22:05
Работа с файлами (паскаль) street_spirit Помощь студентам 2 24.11.2010 15:40
Работа с файлами (паскаль) patisson74 Помощь студентам 1 15.04.2010 01:18
Паскаль. Работа с файлами. Fortismine Помощь студентам 3 21.05.2009 14:16