Помогите пожалуйста, необходимо очень срочно. Надобно написать программу на PascalABCNET, которая
Помогите пожалуйста, необходимо очень безотлагательно. Надо написать программку на PascalABCNET, которая творит типизированный файл из 40 вещественных чисел. Расположенны они по такому принципу: 1-ые 10- положительные, 2-ые 10- отрицательные, третьи 10- полижетельные, четвёртые 10- отрицательные (Пример: 1 2 3 4 5 6 7 8 9 10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 21 22 23 24...) Нужно создать новый типизированный файл, в котором эти же числа будут размещены последующим образом: 1-ые 5- положительные, 2-ые 5- отрицательные, третьи 5 - положительные и так далее.
Задать свой вопрос
Иван Калантадзе
Мне нужна конкретно помощь в том , как это смотрится в программе. Я не знаю, как написать сам код. Сможете посодействовать?
Irka Brailovskaja
Начальный файл записывается самим, числа берутся из головы.
Лидия Давыди
Я не разбираюсь в теме типизированных файлов, потому и прошу помощи
1 ответ
Шафилулина
Арина
// 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-gt;t/10).ForEach(t-gt;Write(f,t));
SeqRandomInteger(10,-100,-1).Select(t-gt;t/10).ForEach(t-gt;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 20lt;gt;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
// переписываем 5 положительных
loop 5 do begin Read(f1,b); Write(f2,b) end;
// считываем 5 положительных в буфер
for var i:=0 to 4 do Read(f1,buf[i]);
// переписываем 5 отрицательных
loop 5 do begin Read(f1,b); Write(f2,b) end;
// пишем 5 положительных из буфера
foreach var t in buf do Write(f2,t);
// переписываем 5 отрицательных
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
// Внимание! Если программка не работает, обновите версию!
Нулевой шаг: творение типизированного файла подходящей структуры
begin
var f:file of real;
Assign(f,'MyReal.bin'); Rewrite(f);
loop 2 do begin
SeqRandomInteger(10,1,100).Select(t-gt;t/10).ForEach(t-gt;Write(f,t));
SeqRandomInteger(10,-100,-1).Select(t-gt;t/10).ForEach(t-gt;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 20lt;gt;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
// переписываем 5 положительных
loop 5 do begin Read(f1,b); Write(f2,b) end;
// считываем 5 положительных в буфер
for var i:=0 to 4 do Read(f1,buf[i]);
// переписываем 5 отрицательных
loop 5 do begin Read(f1,b); Write(f2,b) end;
// пишем 5 положительных из буфера
foreach var t in buf do Write(f2,t);
// переписываем 5 отрицательных
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
Женек
Тогда объясните пожалуйста
Viktorija Brakas
На данный момент попробую. У меня что то вообщем не грузит(
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
выпиши в свою тетрадь те правила этикета которые тебе не были
Разные вопросы.
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
10) Килограмм конфет дороже килограмма печенья на 52 р. За 8
Математика.
Во сколько раз число атомов кислорода в земной коре больше числа
Химия.
Составить монолог от имени дневника двоечника 7-10 предложений
Русский язык.
Рассматривая литературный язык как сложное взаимодействие книжного языка и разговорного,В.И.Чернышёв горячо
Разные вопросы.
Облако тегов