Не подходит — 1) 2528, так как максимальное число разряда 9, то мы понимаем что максимальное возможное число любой поразрядной суммы трех чисел 27. 2528 если брать 25 и 28, то 28 больше 27 (про другой вариант и говорить не стоит — 2 и 528). А номер 2) как раз подходит, например числа 90, 91, 90 получается 127 (27 — старшие разряды, 1 — младшие, записываем в порядке возрастания). В общем результатом работы "автомата" могут быть все кроме 1) 2528. Ну конечно если я правильно понял условия. То что 2) не правильный в условии или как, с чего ты решил что это так?
// PascalABC.NET 3.3, сборка 1579 от 18.11.2017 // Внимание! Если программа не работает, обновите версию!
Нулевой шаг: создание типизированного файла нужной структуры
begin var f:file of real; Assign(f,'MyReal.bin'); Rewrite(f); loop 2 do begin SeqRandomInteger(10,1,100).Select(t->t/10).ForEach(t->Write(f,t)); SeqRandomInteger(10,-100,-1).Select(t->t/10).ForEach(t->Write(f,t)); end; f.Seek(0); // начало файла var b:real; while not Eof(f) do begin Read(f,b); Print(b) end; Println; f.Close end.
begin var f1,f2:file of real; Assign(f1,'MyReal.bin'); Reset(f1); if f1.FileSize mod 20<>0 then begin Writeln('Количество компонент во входном файле не кратно 20'); Exit end; Assign(f2,'MyReal2.bin'); Rewrite(f2); var buf:=new real[5]; var b:real; while not Eof(f1) do begin // переписываем пять положительных loop 5 do begin Read(f1,b); Write(f2,b) end; // считываем пять положительных в буфер for var i:=0 to 4 do Read(f1,buf[i]); // переписываем пять отрицательных loop 5 do begin Read(f1,b); Write(f2,b) end; // пишем пять положительных из буфера foreach var t in buf do Write(f2,t); // переписываем пять отрицательных loop 5 do begin Read(f1,b); Write(f2,b) end end; f1.Close; // контрольное чтение f2.Seek(0); // к началу while not Eof(f2) do begin Read(f2,b); Print(b) end; Writeln; f2.Close end.
А номер 2) как раз подходит, например числа 90, 91, 90 получается 127 (27 — старшие разряды, 1 — младшие, записываем в порядке возрастания).
В общем результатом работы "автомата" могут быть все кроме 1) 2528. Ну конечно если я правильно понял условия. То что 2) не правильный в условии или как, с чего ты решил что это так?
// Внимание! Если программа не работает, обновите версию!
Нулевой шаг: создание типизированного файла нужной структуры
begin
var f:file of real;
Assign(f,'MyReal.bin'); Rewrite(f);
loop 2 do begin
SeqRandomInteger(10,1,100).Select(t->t/10).ForEach(t->Write(f,t));
SeqRandomInteger(10,-100,-1).Select(t->t/10).ForEach(t->Write(f,t));
end;
f.Seek(0); // начало файла
var b:real;
while not Eof(f) do begin Read(f,b); Print(b) end;
Println;
f.Close
end.
Пример:
9.7 1 4.1 8.3 5.6 9.3 2.2 9.3 5.8 8.8 -8.8 -7.7 -1.4 -5.2 -7.2 -8.3 -1.3 -8.9 -6.3 -4.8 3.5 3.8 3.2 6 3.2 4.5 10 4.5 6.1 0.7 -8 -0.8 -3.3 -9.5 -7.9 -0.9 -7.4 -9.4 -1.8 -4.6
Собственно, программа
begin
var f1,f2:file of real;
Assign(f1,'MyReal.bin'); Reset(f1);
if f1.FileSize mod 20<>0 then begin
Writeln('Количество компонент во входном файле не кратно 20');
Exit
end;
Assign(f2,'MyReal2.bin'); Rewrite(f2);
var buf:=new real[5];
var b:real;
while not Eof(f1) do begin
// переписываем пять положительных
loop 5 do begin Read(f1,b); Write(f2,b) end;
// считываем пять положительных в буфер
for var i:=0 to 4 do Read(f1,buf[i]);
// переписываем пять отрицательных
loop 5 do begin Read(f1,b); Write(f2,b) end;
// пишем пять положительных из буфера
foreach var t in buf do Write(f2,t);
// переписываем пять отрицательных
loop 5 do begin Read(f1,b); Write(f2,b) end
end;
f1.Close;
// контрольное чтение
f2.Seek(0); // к началу
while not Eof(f2) do begin Read(f2,b); Print(b) end;
Writeln;
f2.Close
end.
Пример
9.7 1 4.1 8.3 5.6 -8.8 -7.7 -1.4 -5.2 -7.2 9.3 2.2 9.3 5.8 8.8 -8.3 -1.3 -8.9 -6.3 -4.8 3.5 3.8 3.2 6 3.2 -8 -0.8 -3.3 -9.5 -7.9 4.5 10 4.5 6.1 0.7 -0.9 -7.4 -9.4 -1.8 -4.6