Дан типизированный файл целых чисел в в диапазоне от -2^31 до 2^31-1. Опишите соответствующий тип для типизированного файла. Опишите процедуру change(fname), которая поменяет минимальный элемент в данном файле с последним элементом. Если минимальных элементов несколько, взять первый из них. fname - имя типизированного файла. Решать на pascal.
На pascal можно так:
Объяснение:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, Windows;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
x,y,i:integer;
begin
x:=0; y:=0;
for i:=1 to 500 do
begin
x:=random(x+i);
y:=random(y+i);
if x>600 then x:=random(x-i);
if y>800 then y:=random(y-i);
canvas.Pen.Color:=RGB(i*5,128*i,-128*(i+1));
canvas.Pen.Width:=2;
canvas.LineTo(x,y);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.close;
end;
end.
Итак. Общий размер файла 1,5 = 1536 Мбайт. Размер буфера T 128 Мбайт. Значит, для передачи файла через этот буфер его потребуется заполнить 1536 / 128 = 12 раз. Получилось целое число, поэтому мы посчитаем время, которое требуется на шаги 1-6, и умножим его на 12.
Так как ничего не сказано о времени на закрытие соединения, будем считать, что на это время не тратится.
1) Устанавливаем соединение с А - 1 секунда
2) Принимаем от устройства А 128 Мбайт со скоростью 8 Мбайт в секунду - 128 / 8 = 16 секунд
3) Закрываем соединение с А
4) Открываем соединение с В - 4 секунды
5) Передаём устройству В 128 Мбайт со скорость 2 Мбайта в секунду - 128 / 2 = 64 секунды
6) Закрываем соединение с В
Итого: 1+16+4+64 = 85 секунд
85 * 12 = 1020 секунд = 17 минут.
ответ: 17 минут.