Сестры аня и оля подсчитали свои денежные накопления , у них оказались разные суммы. какая сестра должна дать другой денег и сколько, что бы у обеих сестер суммы стали равными?
Var a,b,c:real; begin writeln ('Введите количество денег Маши и Даши'); read (a,b); if (a>b) then begin c:=((a+b)/2)-b;writeln ('Маша должна дать Даше ',c); end; if (a<b) then begin c:=((a+b)/2)-a;writeln ('Даша должна дать Маше ',c); end; if (a=b) then writeln ('У них равное количество денег'); end.
triumfmodern
04.12.2021
Var a:array of array of integer; c:array of array of integer; ma:array of array of integer; i,j,n:integer; begin; randomize; readln(n); setlength(a,n+1); //задаём размерность динамических массивов setlength(c,n+1); setlength(ma,n+1); for i:=1 to n do begin; setlength(a[i],n+1); setlength(c[i],n+1); setlength(ma[i],n+1); end;
writeln('Matrix A:'); //генерируем массив псеводслучайных чисел for i:=1 to n do begin; writeln; for j:=1 to n do begin; a[i,j]:=random(10); write(a[i,j]:4); end; end; writeln;
writeln('Matrix C:'); //аналогично for i:=1 to n do begin; writeln; for j:=1 to n do begin; c[i,j]:=random(10); write(c[i,j]:4); end; end;
for i:=1 to n do //сохраняем матрицу C для транспонации for j:=1 to n do ma[i,j]:=c[i,j]; writeln;
writeln('Transpose matrix C:'); //транспонируем C for i:=1 to n do begin; writeln; for j:=1 to n do begin; c[i,j]:=ma[j,i]; write(c[i,j]:4); end; end;
writeln; writeln('Final matrix:'); // получаем финальную матрицу for i:=1 to n do begin; writeln; for j:=1 to n do begin; ma[i,j]:=2*c[i,j]*a[i,j]; {по свойству дистрибутивности матриц С(A+A)=C*A+C*A=2*C*A} write(ma[i,j]:4); end; end; end.
vdm4275
04.12.2021
// PascalABC.NET 3.2, сборка 1488 от 21.06.2017 // Внимание! Если программа не работает, обновите версию!
№1 Обычный вариант
begin var s:=SeqGen(17,k->(k+2)/(4*Sqr(k+1))); Writeln('Сумма четных членов ',s.Where((x,i)->i.IsOdd).Sum); Writeln('Сумма нечетных членов ',s.Where((x,i)->i.IsEven).Sum); end.
Результат Сумма четных членов 0.43519602111678 Сумма нечетных членов 0.821643794807771
№2. Вариант "для шибко умных" (с классом для простых дробей)
type fraction=class public numerator:BigInteger; denominator:BigInteger;
class function GCD(a,b:BigInteger):BigInteger; begin while b<>0 do (a,b):=(b,a mod b); Result:=a end;
constructor Create(num:BigInteger:=0; denom:BigInteger:=1); begin var n:=GCD(num,denom); numerator:=num div n; denominator:=denom div n end;
class function operator +(a,b:fraction):fraction; begin var n:=GCD(a.denominator,b.denominator); Result:=new fraction(a.numerator*(b.denominator div n)+ b.numerator*(a.denominator div n),a.denominator div n*b.denominator); end;
class procedure operator +=(var R:fraction; a:fraction); begin R:=R+a; end;
end;
function Frc(a,b:BigInteger):fraction; begin Result:=new fraction(a,b); end;
function Sumf(Self:sequence of fraction):fraction; extensionmethod; begin Result:=new fraction; foreach var fr in Self do Result+=fr; end;
function ToReal(Self:BigInteger):(real,integer); extensionmethod; begin var s:=Self.ToString; var r:real; if Real.TryParse(s,r) then Result:=(r,0) else Result:=(s.Left(16).ToReal,s.Length-16) end;
function ToReal(Self:fraction):real; extensionmethod; begin var a:=Self.numerator.ToReal; var b:=Self.denominator.ToReal; Result:=a[0]/b[0]*Power(10,a[1]-b[1]) end;
function Print(Self:fraction; s:string:=' '):fraction; extensionmethod; begin Result:=Self; if Self.denominator=1 then Write(Self.numerator,s) else Write(Self.numerator,'/',Self.denominator,s) end;
begin var f:=Range(2,17,2).Select(k->frc(k+1,Sqr(2*k))).Sumf; Write('Сумма четных членов '); f.Print; Writeln('= ',f.ToReal); f:=Range(1,17,2).Select(k->frc(k+1,Sqr(2*k))).Sumf; Write('Сумма нечетных членов '); f.Print; Writeln('= ',f.ToReal);
Результат Сумма четных членов 4913189/11289600 = 0.43519602111678 Сумма нечетных членов 192723465457/234558414090 = 0.82164379480777
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Сестры аня и оля подсчитали свои денежные накопления , у них оказались разные суммы. какая сестра должна дать другой денег и сколько, что бы у обеих сестер суммы стали равными?
begin
writeln ('Введите количество денег Маши и Даши');
read (a,b);
if (a>b) then
begin
c:=((a+b)/2)-b;writeln ('Маша должна дать Даше ',c);
end;
if (a<b) then
begin
c:=((a+b)/2)-a;writeln ('Даша должна дать Маше ',c);
end;
if (a=b) then writeln ('У них равное количество денег');
end.