// PascalABC.NET 3.2, сборка 1488 от 21.06.2017 // Внимание! Если программа не работает, обновите версию!
function From5to10(Self:sequence of string):sequence of integer; extensionmethod; // Перевод последовательности заданных на строках пятиричных чисел // в последовательность целых десятичных чисел begin foreach var s in Self do begin var r:=0; var pa:=1; foreach var c in s.Reverse do begin r+=c.ToDigit*pa; pa*=5 end; yield r end end;
begin var s:=ReadlnString('Введите строку:').MatchValues('[0-4]+').From5To10; if s.Count=0 then Writeln('S=-1') else Writeln('S=',s.Sum) end.
Пример Введите строку: sdf812973j223k S=73
2. Решение на TurboPascal ("Так писали наши отцы и деды в 1983 году, так и нас сейчас учат в школе")
uses Crt;
function From5to10(n:string):integer; { Перевод из пятиричного числа в строковом представлении в целое десятичное } var i,pa,s:integer; begin s:=0; pa:=1; for i:=Length(n) downto 1 do begin s:=s+pa*(Ord(n[i])-Ord('0')); pa:=pa*5 end; From5to10:=s end;
var s,w:string; i,k,r:integer; begin ClrScr; Write('Введите строку: '); Readln(s); w:=''; r:=0; k:=0; for i:=1 to Length(s) do begin if Pos(s[i],'01234')>0 then begin if w='' then k:=k+1; w:=w+s[i] end else if w<>'' then begin r:=r+From5to10(w); w:='' end end; if k=0 then Writeln('S=-1') else Writeln('S=',r); ReadKey end.
#include <iomanip>
using namespace std;
void Fun(int n)
{
if (n != 3)
{
double x1; double y1; double x2; double y2; double x3; double y3;
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
double a = sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));
double b = sqrt((x2 - x3)*(x2 - x3) + (y2 - y3)*(y2 - y3));
double c = sqrt((x3 - x1)*(x3 - x1) + (y3 - y1)*(y3 - y1));
double p = (a + b + c) / (double)2;
double s = sqrt(p*(p - a)*(p - b)*(p - c));
cout << setprecision(6) << fixed << s;
}
if (n != 6)
{
double a; double b; double c;
cin >> a >> b >> c;
double p = (a + b + c) / (double)2;
double s = sqrt(p*(p - a)*(p - b)*(p - c));
cout << setprecision(6) << fixed << s; }
}
int main()
{
int n;
cin >> n;
Fun(n);
return 0;
}