<u>PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018</u> <u>Внимание! Если программа не работает, обновите версию!</u>
function gcd(a,b:integer):integer; // НОД begin while b<>0 do begin a:=a mod b; Swap(a,b) end; Result:=a end;
procedure RedFrac(var a,b:integer); // сокращение дроби begin var (sgna,sgnb):=(Sign(a),Sign(b)); // мы должны учитывать знак! (a,b):=(Abs(a),Abs(b)); var d:=gcd(a,b); a:=(a div d)*sgna; b:=(b div d)*sgnb end;
begin var (a,b):=ReadInteger2('Введите числитель и знаменатель 1-й дроби:'); var (c,d):=ReadInteger2('Введите числитель и знаменатель 2-й дроби:'); (a,b):=(a*c,b*d); RedFrac(a,b); Writeln('Результат умножения: ',a,' / ',b) end.
<u>Пример</u> Введите числитель и знаменатель 1-й дроби: 32 1024 Введите числитель и знаменатель 2-й дроби: 60 300 Результат умножения: 1 / 160
<u>В качестве бонуса - решение на базе входящей в состав PascalABC.NET библиотеки численных методов</u>
uses NumLibABC;
begin var (a,b):=ReadInteger2('Введите числитель и знаменатель 1-й дроби:'); var (c,d):=ReadInteger2('Введите числитель и знаменатель 2-й дроби:'); Writeln('Результат умножения: ',Frc(a,b)*Frc(c,d)) end.
Какой-то старенький комп (512 кб видуха). Ну а если серьезно, то на хранение информации о цвете 1 точки потребуется 1 байт, так как 256=2⁸. А 8 бит - 1 байт. Одна страница займет 640*480 = 307200 Байт = 300 Кбайт. Значит в память влезет только одна страница. На вторую места не хватит.
Program z; const n=5; var a:array[1..n] of real; i:integer; s:real; begin s:=0; for i:=1 to n do begin readln(a[i]); s:=s+a[i]; end; s:=s/n; for i:=1 to n do if a[i]>0 then a[i]:=s; for i:=1 to n do write(a[i],' '); end.