Помогите пожалуйста, необходимо очень срочно. Надобно написать программу на 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
Женек
Тогда объясните пожалуйста
Viktorija Brakas
На данный момент попробую. У меня что то вообщем не грузит(
, оставишь ответ?
Имя:*
E-Mail:


Последние вопросы

Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт