Задание No3 В соответствии с номером варианта (номер в списке группы) средствами Excel решить систему линейных алгебраических уравнений (СЛАУ) Ax=b: 1. методом обратной матрицы, 2. используя надстройку ПОИСКРЕШЕНИЯ. 3. используя надстройку ПОИСК РЕШЕНИЯрешить СЛАУ из первых трех уравнений. Объяснить результат решения
var a, b: array [1..m] of integer; i, max_num: integer;
begin for i := 1 to m do Read(a[i]); for i := 1 to m do if (a[i] mod 10 = 3) then begin b[i] := a[i]; end; max_num := b[1]; for i := 2 to m do if (b[i] > max_num) then max_num := b[i]; writeln('Max = ', max_num); end.
1. Современное решение, когда можно решить "в одну строку"
// PascalABC.NET 3.2, сборка 1439 от 09.05.2017 // Внимание! Если программа не работает, обновите версию!
begin Writeln('S=',ReadSeqInteger(3).Select(n->n.ToString .Where(d->Pos(d,'13579')>0)).SelectMany(c->c) .Select(c->c.ToDigit).Sum) end.
Пример 252 337 105 S=24
2. А примерно вот так учат писать в школе - долго и длинно (да и не особо понятно)
var m,i,j,s,d:integer; begin s:=0; for i:=1 to 3 do begin Read(m); for j:=1 to 3 do begin d:=m mod 10; if d mod 2<>0 then s:=s+d; m:=m div 10 end end; Writeln('S=',s) end.
begin
var a:=ArrRandom(20,1,100);
a.Println;
var tri:=a.Where(x->(x mod 10)=3);
writeln(tri.Max);
end.
Ввод - 9 13 22 49 68 67 98 11 28 12 69 73 20 91 63 69 81 93 99 66
Вывод - 93
ВАРИАНТ 2
const m = 20;
var a, b: array [1..m] of integer;
i, max_num: integer;
begin
for i := 1 to m do
Read(a[i]);
for i := 1 to m do
if (a[i] mod 10 = 3) then begin
b[i] := a[i];
end;
max_num := b[1];
for i := 2 to m do
if (b[i] > max_num) then
max_num := b[i];
writeln('Max = ', max_num);
end.
// PascalABC.NET 3.2, сборка 1439 от 09.05.2017
// Внимание! Если программа не работает, обновите версию!
begin
Writeln('S=',ReadSeqInteger(3).Select(n->n.ToString
.Where(d->Pos(d,'13579')>0)).SelectMany(c->c)
.Select(c->c.ToDigit).Sum)
end.
Пример
252 337 105
S=24
2. А примерно вот так учат писать в школе - долго и длинно (да и не особо понятно)
var
m,i,j,s,d:integer;
begin
s:=0;
for i:=1 to 3 do begin
Read(m);
for j:=1 to 3 do begin
d:=m mod 10;
if d mod 2<>0 then s:=s+d;
m:=m div 10
end
end;
Writeln('S=',s)
end.