
Модераторы: 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.
Вернуться в Книга "Песни о Паскале"
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4