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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2010, 03:11   #1
auhb
 
Регистрация: 06.12.2009
Сообщений: 4
По умолчанию Pascal, решена, редактирование.

Требуется помощь в небольшом редактировании.
Проблема заключается в том, что список надо брать не из массива, а из файла. Собственно проверка существование файла и его использование - чуть ниже, а после вставки того отрезка, ничего не пашет, сказали проблема в
Код:
readln(a[i].Uliza)
и аналогичных...

Сама задача.
Код:
Program ALP;
uses crt;
type
  TZakaz=record
     Uliza: string;
     Dom: string;
     Kvart: integer;

     chislo: integer;
     mesez: integer;
     god: integer;
  end;

type mas = array[1..100] of TZakaz;

var a: mas;
    n: integer;
    i: integer;
    c: integer;
    Uliza: string;
    chislo, mesez, god: integer;

procedure Vvod(var a: mas);
var i: integer;
begin
 write('Vvedite col-vo zapisei: '); readln(n);
 for i:=1 to n do
 begin
  write('Uliza: '); readln(a[i].Uliza);
  write('Dom: '); readln(a[i].dom);
  write('Kvartira: '); readln(a[i].kvart);

  write('Chislo: '); readln(a[i].chislo);
  write('Mesez: '); readln(a[i].mesez);
  write('God: '); readln(a[i].god);
  writeln;
 end;
end;

begin
c:=0;
 clrscr;
 Vvod(a);
 writeln('Vvedite danie dla poiska:');
 writeln;
 write('Uliza: '); readln(Uliza);
 write('God: '); readln(god);
 write('Mesez: '); readln(mesez);
 write('Chislo: '); readln(chislo);

 writeln;
 writeln('Resultat poiska: ');
 writeln;
 for i:=1 to n do
 if (a[i].uliza=Uliza)and(a[i].god=god)and(a[i].mesez=mesez)and(a[i].chislo=chislo) then
 begin
  inc(c);
  writeln('Uliza: ',a[i].Uliza);
  writeln('Dom: ',a[i].dom);
  writeln('Kvartira: ',a[i].kvart);

  writeln('Chislo: ',a[i].chislo);
  writeln('Mesez: ',a[i].mesez);
  writeln('God: ',a[i].god);
что надо впихнуть
Код:
fn:string;
f:text;
begin
fn:='';
repeat
write('input name of fail: ');
readln(fn)
assign(f,fn);
{$I-} {reset(f); {$I+}
if IOresult <>0 then
begin
writeln('Fail', fn,'not fround');
fn:='';
end;
until fn <>'';
while not eof(f) do
auhb вне форума Ответить с цитированием
Старый 25.02.2010, 08:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну примерно так:
Код:
procedure Vvod(var a: mas);
var i: integer;fn:string;f:file of mas;
begin
 write('input name of fail: ');
 readln(fn)
 assign(f,fn);
 reset(f);
 if IOResult<>0 then begin
  writeln('Fail', fn,'not fround');
  readln;
  halt;
 end;
 i:=1;
 while (not eof(f))and(i<=length(a)) do begin
  read(f,a[i]);
 end;
  writeln;
 end;
end;
Не проверял, ибо файла нет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на FOR, почти решена... просто проверить. Andrux Помощь студентам 5 29.12.2008 11:27
правильно решена или нет?? durachok) Помощь студентам 1 27.12.2008 08:23
решена правильно или нет??? durachok) Паскаль, Turbo Pascal, PascalABC.NET 3 25.12.2008 15:24
Нужно объснить как решена задача diesel-dbx Паскаль, Turbo Pascal, PascalABC.NET 3 04.08.2008 17:53