Показать сообщение отдельно
Непрочитано 04.08.2005, 21:36   #11
KpeHgeJIb
Мужской Заслуженный
 
Аватар для KpeHgeJIb
 
Регистрация: 10.02.2003
Адрес: Израиль
И так разбор полетов
Код:
Program pr_12;
   uses crt;
   type person=record
   sname,name,otc,avtr,nb,pub,year:string[14];
   end;
   
   var  rbook:array[1..20] of person;
   f1,f2:text; i,n:integer;
   st1:string;
   s:string;

BEGIN 
  clrscr;  
  Assign(f1, 'E:\p1.pas');
  Reset(f1);
  Readln(f1,s); {Что и куда ты тут считываеш? Читай п. 1}
	         
  Assign(f2,'p2.pas');  
  rewrite(f2); 
  st1:='1995';
  Writeln('Ф И О Автар книги Название книги Издательство Год выпуска');
  Writeln(f2,'Ф И О Автар книги Название книги Издательство Год выпуска');
  for i:=1 to n do {Чему равно n ? читай п. 2}
  begin   
    With rbook[i] do    
      if year=st1 then       
      begin        
         Writeln(sname:10,name:10,otc:10,avtr:10,nb:10,pub:10,year:10);       
         Writeln(f2,sname:10,name:10,otc:10,avtr:10,nb:10,pub:10,year:10);     
      end; 
  end;
  close(f1);
  Close(f2);
  readln; 
END.
1. Ты внмательно читал то, что я писал выше? От того что ты считываеш одну строку из файла, да еще и в переменную s, твой масив rbook не заполняется а остается пустым. Ты когда с клавы вводиш, ты что читаеш только одну строку? Нет, ты читаеш все, и из фала нужно читать ВСЕ.
2. Этот цикл for не выполняется вообще, потому что ты не задаеш начальное значение переменной n. А это означает что ее значение не определено. Правда pascal изначально нулюет переменные главной программы, поэтому n=0. А цикл for от 1 до 0 выполнятся не будет.

И совет на будущее, начни табировать код, а то так как ты пишеш, без сдвигов, несколько команд в одну строчку, ничерта не понятно, кто под кем сидит.

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

PS будут вопросы по коду спрашивай.

KpeHgeJIb добавил :

Цитата (flashg) »
а вот прога которая не запускается - в чём дело где ошибка
Код:
type a=array[1..180,1..180] of integer;
     b=array[1..180,1..180] of integer;
Написав это ты обявляеш два типа данных, один под именем "a", а другой под именем "b".
Вышеописаный код не создает переменных данного типа, а лиш определяет тип.
если тебе надо объявить два двухмерных масива, то делается это так
Код:
var
  a,b:array[1..180, 1..180] of integer;
Вложения
Тип файла: zip vot.zip (1.7 Кб, 115 просмотров)
KpeHgeJIb вне форума  
Конфигурация ПК
Ответить с цитированием