// PascalABC.NET 3.1, сборка 1250 от 28.05.2016 const k=650;
function GetData(f:file of integer):integer; // получить из файла очередное значение begin if not f.Eof then Read(f,Result) else Result:=0 end;
function NOD(a,b:integer):integer; // нахождение НОД begin while b>0 do (a,b):=(b,a mod b); Result:=a end;
function VZP(a,b:integer):boolean; // являются ли a и b взаимно простыми? begin Result:=NOD(a,b)=1; end;
function Has1(n:integer):boolean:=(Pos('1',n.ToString)>0);
begin var f:file of integer; // создаем файл Assign(f,'F.dat'); Rewrite(f); var n:integer; for var i:=1 to k do begin n:=(Random(1,2)=1?Random(135,4000):Random(4578,15000)); f.Write(n); end; f.Close; // файл создан, начинаем его читать и обрабатывать Reset(f); Writeln('Задание 1'); while not f.Eof do begin n:=GetData(f); Print(n); end; Writeln(NewLine,'Задание 2'); f.Seek(0); var a:=GetData(f); var b:=GetData(f); var c:integer; var VZPLeft:=VZP(a,b); var VZPRight:boolean; if VZPLeft then Print(a); for var i:=3 to k-1 do begin c:=GetData(f); VZPRight:=VZP(b,c); if VZPLeft and VZPRight then Print(b); (a,b):=(b,c); VZPleft:=VZPRight end; c:=GetData(f); if VZP(b,c) then Print(b,c); Writeln(NewLine,'Задание 3'); f.Seek(0); var mx:=0; while not f.Eof do begin a:=GetData(f); if Has1(a) then mx:=Max(mx,a) end; if mx>0 then Writeln(mx); f.Close end.
Тестовое решение в прикрепленном файле
gaina6678
22.05.2021
//PascalABC.NET 3.1 сборка 1239
1) хотя не понятно зачем изобретать велосипед function max(a, b: integer): integer; begin max := a; if b > a then max := b; end;
begin var a:=ReadInteger('a ='); var b:=ReadInteger('b ='); writeln(max(a, 2 * b) * max(2 * a - b, b)); end. 2) const handfree = false;
begin var a:= new integer[ReadInteger('n =')]; if handfree then a := ArrRandomInteger(a.Length, -50, 50) else a := ReadArrInteger(a.Length);
writeln('Array:'); a.Println; writeln('Sum of odds by value = ', a.Where(x -> x mod 2 = 0).Sum); writeln('Sum of odds by position = ', a.Slice(0, 2).Sum); end. 3) const n = 5; m = 6; handsfree = false;
begin var a := new integer[n, m]; writeln('Данные матрицы:'); for var i := a.GetLowerBound(0) to a.GetUpperBound(0) do begin for var j := a.GetLowerBound(1) to a.GetUpperBound(1) do if handsfree then begin a[i, j] := random(-50, 50); write(a[i, j]:4, ' ') end else read(a[i, j]); writeln; end;
writeln('Вывод:'); for var i := a.GetLowerBound(0) to a.GetUpperBound(0) do begin for var j := a.GetLowerBound(1) to a.GetUpperBound(1) do begin if a[i, j] < 0 then a[i, j] := 0; write(a[i, j]:4, ' '); end; writeln; end; end.
4) не ясно что они конкретно под паркетом подразумевали uses GraphABC; const r = 30;
begin var x := r; var y := 7 * r; Brush.Color := clPurple;
for var i := 1 to 6 do Circle(x + r * i, y - r * i, r); end.
5) uses graphabc; const radius = 50;
begin var step := radius div 5; // var step := 0; var x := 2 * radius; var y := 2 * radius; SetPenWidth(radius div 10);
SetPenColor(clBlue); Drawcircle(x, y, radius); x += 2 * radius + step;
SetPenColor(clBlack); Drawcircle(x, y, radius); x += 2 * radius + step;
SetPenColor(clRed); Drawcircle(x, y, radius); y += radius + step; x := 3 * radius + step div 2;
SetPenColor(clYellow); Drawcircle(x, y, radius); x += 2 * radius + step;
SetPenColor(clLimeGreen); Drawcircle(x, y, radius); x += 2 * radius + step; end.
6) uses GraphABC; const w = 500; d = 10;
begin Window.Init(0, 0, w, w, clGreen); Window.CenterOnScreen; Brush.Color := clBlack;
for var x := 0 to Window.Width do begin var y := Window.Height - x; Sleep(10); Window.Clear(clGreen); FillPolygon((x, y), (x + d, y - d), (x + 2 * d, y)); end; end.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Делфи в матрице с размером 4x5 просуммировать элементы каждой строки. результат получить в одномерном массиве х размером 4.
const
k=650;
function GetData(f:file of integer):integer;
// получить из файла очередное значение
begin
if not f.Eof then Read(f,Result)
else Result:=0
end;
function NOD(a,b:integer):integer;
// нахождение НОД
begin
while b>0 do (a,b):=(b,a mod b);
Result:=a
end;
function VZP(a,b:integer):boolean;
// являются ли a и b взаимно простыми?
begin
Result:=NOD(a,b)=1;
end;
function Has1(n:integer):boolean:=(Pos('1',n.ToString)>0);
begin
var f:file of integer;
// создаем файл
Assign(f,'F.dat'); Rewrite(f);
var n:integer;
for var i:=1 to k do begin
n:=(Random(1,2)=1?Random(135,4000):Random(4578,15000));
f.Write(n);
end;
f.Close;
// файл создан, начинаем его читать и обрабатывать
Reset(f);
Writeln('Задание 1');
while not f.Eof do begin n:=GetData(f); Print(n); end;
Writeln(NewLine,'Задание 2');
f.Seek(0);
var a:=GetData(f);
var b:=GetData(f);
var c:integer;
var VZPLeft:=VZP(a,b);
var VZPRight:boolean;
if VZPLeft then Print(a);
for var i:=3 to k-1 do begin
c:=GetData(f);
VZPRight:=VZP(b,c);
if VZPLeft and VZPRight then Print(b);
(a,b):=(b,c); VZPleft:=VZPRight
end;
c:=GetData(f);
if VZP(b,c) then Print(b,c);
Writeln(NewLine,'Задание 3');
f.Seek(0);
var mx:=0;
while not f.Eof do begin
a:=GetData(f);
if Has1(a) then mx:=Max(mx,a)
end;
if mx>0 then Writeln(mx);
f.Close
end.
Тестовое решение в прикрепленном файле