// begin var L:=new List<fraction>; // вынужденное: метод иногда дает дубликаты (var a0, var an):=(abs(Self.First),abs(Self.Last)); for var p:=1 to a0 do begin if a0 mod p<>0 then continue; for var q:=1 to an do begin if an mod q<>0 then continue; var g:=Self.First; (var f, var t):=(g,p); foreach var k in Self.Skip(1) do begin var r:=k*t; (f,g,t):=(f*q+r,-g*q+r,t*p); end; if f=0 then L.Add((p,q)); if g=0 then L.Add((-p,q)) end end; Result:=L end;
function RedFrac(Self:fraction):fraction; extensionmethod; begin (var p,var q):=Self; var s:=sign(p*q); (p,q):=(abs(p),abs(q)); (var a,var b):=(p,q); while b<>0 do begin a:=a mod b; Swap(a,b) end; Result:=(s*p div a,q div a) end;
function Beautify(Self:sequence of fraction):sequence of string; extensionmethod; begin Result:=Self.Select(e->e.RedFrac).Distinct.OrderBy(x->x[0]/x[1]). Select(e->e[0]+(e[1]<>1?'/'+e[1]:'')) end;
begin ReadArrInteger(4).RatFact.Beautify.Println end.
1) Не понятно задание, в комментах допишу, как только пойму. 2)var t,c:array [1..10] of integer; i,sum:integer; begin for i:=1 to 10 do begin t[i]:=random(20+i); c[i]:=random(20000+i); end; for i:=1 to 10 do begin sum:=sum+t[i]*c[i]; end; for i:=1 to 10 do begin writeln('Количество товара ',i,' вида ',t[i],' Стоимость товара ',i,' вида ', c[i]); end; writeln('Общая сумма ',sum); end. 3) Мы опишем его так ves: array [1..31] of real; 4) var sum,x:real; n,i:integer; begin read(n); for i:=1 to n do begin read(x); sum:=sum+x; end; writeln(sum/n); end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку