oskina3
?>

Сестры аня и оля подсчитали свои денежные накопления , у них оказались разные суммы. какая сестра должна дать другой денег и сколько, что бы у обеих сестер суммы стали равными?

Информатика

Ответы

oldprince840
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
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
\displaystyle A_k= \frac{k+1}{(2k)^2}, \quad k=1,2, ...,\,17&#10; \\ \\ A_k= \frac{k+2}{4(k+1)^2}, \quad k=0,1, ...\,, 16

// 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

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Сестры аня и оля подсчитали свои денежные накопления , у них оказались разные суммы. какая сестра должна дать другой денег и сколько, что бы у обеих сестер суммы стали равными?
Ваше имя (никнейм)*
Email*
Комментарий*