Модераторы: Oleg_D, Модераторы
Гл.     Стр.      Исправление
9   67   Добавлено о типизированных константах
26   175   Исправлены функции шифрования-дешифрования
33   239   Исправлено объявление типа
36   260   Удалена лишняя запятая
38   272   6 7 22 21  <-– в строке входного файла была пропущена граница  20
49   378   Рис. 111 – исправлена нумерация границ на рисунке
49   380   Assign(FileIn, 'P_36_3.in'); --> Assign(FileIn, 'P_38_3.in');
Гл. Стр.
9    68
14  100
16  110
20  135
24  162
33  240
34  247
47  370
50  396
1-й отсев чисел, кратных 2: 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
2-й отсев чисел, кратных 3: 
1 2 3 * 5 * 7 * 9  * 11  * 13  * 15  * 17  * 19  * 
Результат – простые числа: 
1 2 3 * 5 * 7 * *  * 11  * 13  *  *  * 17  * 19  *var Names : array [ 1..30 ] of string;
    i : integer;    inF, outF : text;
begin
 i:=1;
Assign ( inF, 'C:\InFile.txt');   Assign ( outF, 'C:\OutFile.txt');
Reset ( inF );   Rewrite ( outF );
  { пока не конец файла и не введены все элементы } 
  while not Eof ( inF ) and ( i <=30 ) do begin
    Readln ( inF,  Names [ i ] );
    Writeln ( outF, Names [ i ] );
    i:= i+1;
  end;
  Close ( inF );   Close ( outF );
end.Valeriy писал(а):Глава 39 стр 278.В примере в двух местах после end отсутствует точка с запятой.
Valeriy писал(а):И ещё, посмотрите пожайлуста, правильно ли я сделал ввод и вывод массива?
sA:=[5];sb:=[4..7];
  if sA<=sb then 
    writeln('пересекаются');
  else writeln('не пересекаются');
sA:=[5];sb:=[4..7];
  if sA*sb <>[] then 
    writeln('пересекаются');
  else writeln('не пересекаются');Oleg_D писал(а):Уточните, пожалуйста, о какой задаче речь?
Oleg_D писал(а):А проверка на подмножество здесь не катит.
Paster Fob писал(а):А почему?Хотелось бы разобраться.
Oleg_D писал(а):Потому, что если SA будет даже пустым, то и тогда SA <= SB.
type tset=set of byte;
     tchar='B'..'I';
procedure readset(var afile:text;var aset:tset);
var n:byte;
begin
  aset:=[];
  while not eoln(afile) do
    begin
      read(afile,n);
      aset:=aset+[n];
    end;
  readln(afile);
end;
procedure writeset(var afile:text;var asetA,asetB:tset;var ach:tchar);
begin
  if asetA*asetB<>[] then
    writeln(afile,'A граничит с ',ach)
  else
    writeln(afile,'A не граничит с ',ach);
  if ach<>'I' then
    ach:=succ(ach);
end;
var f:text;ch:tchar;
  snA,snB,snC,snD,snE,snF,snG,snH,snI:tset;
begin
  assign(f,'C:\Files for Program Pascal\Granicain.txt');
  reset(f);
  readset(f,snA);
  readset(f,snB);
  readset(f,snC);
  readset(f,snD);
  readset(f,snE);
  readset(f,snF);
  readset(f,snG);
  readset(f,snH);
  readset(f,snI);
  close(f);
  assign(f,'C:\Files for Program Pascal\Granicaout.txt');
  rewrite(f);
  ch:='B';
  writeset(f,snA,snB,ch);
  writeset(f,snA,snC,ch);
  writeset(f,snA,snD,ch);
  writeset(f,snA,snE,ch);
  writeset(f,snA,snF,ch);
  writeset(f,snA,snG,ch);
  writeset(f,snA,snH,ch);
  writeset(f,snA,snI,ch);
  close(f);
end.
Oleg_D писал(а):Вот Вам задачка на тему подмножеств. Даны два слова, можно ли из букв первого из них составить второе? Количество букв неважно, т.е. в обоих словах они могут повторяться. Попробуйте решить, а не получится - поможем.
Paster Fob писал(а):вот так я решил эту задачу
Paster Fob писал(а):С множеством до конца ещё не разобрался,а тут ещё и подмножество
Writeln([1..3] <= [1..9]); { true }
Writeln([4..7] <= [1..9]); { true }
Writeln([0..3] <= [1..9]); { false поскольку 0 не попадает в множество 1..9 }Oleg_D писал(а):Можно принять в качестве тренеровочного упражнения.Только в будущем старайтесь искать короткие решения, а для этого надо применять циклы.
type tset=set of byte;
     tchar='A'..'H';
function readset(var arg:tchar):tset;
var f:text;s:string;asn:tset;
    n:byte;
begin
  writeln('введите путь к файлу ',arg);
    if arg<>'H' then
      arg:=succ(arg);
  readln(s);
  {s:=('C:\Files for Program Pascal\'+s);}
  assign(f,s);
  reset(f);
  asn:=[];
  while not eof(f) do begin
    read(f,n);
    asn:=asn+[n];
  end;
  close(f);
  readset:=asn;
end;
procedure writeset(arg:tset);
var k:byte;f:text;s:string;
begin
  assign(f,'');
  rewrite(f);
  s:='шпион найден!Это сотрудник под номером ';
  write(f,s);
  for k:=1 to 255 do
    if k in arg then
      write(f,k);
  close(f);
end;
var sn,snA,snB,snC,snD,snE,snF,snG,snH:tset;
    m:tchar;
begin
  m:='A';
  snA:=readset(m);
  snB:=readset(m);
  snC:=readset(m);
  snD:=readset(m);
  snE:=readset(m);
  snF:=readset(m);
  snG:=readset(m);
  snH:=readset(m);
  sn:=(snA*snD*snG*snH)-(snB+snC+snE+snF);
  writeset(sn);
  readln
end.
Вернуться в Книга "Песни о Паскале"
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1