<em>1. Современное решение</em>
<em>// PascalABC.NET 3.2, сборка 1488 от 21.06.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
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.
<u>Пример</u>
Введите строку: sdf812973j223k
S=73
<em>2. Решение на TurboPascal ("Так писали наши отцы и деды в 1983 году, так и нас сейчас учат в школе")</em>
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.
Pascal
program matr;uses CRT;var fl:char;a:array [1..100,1..100] of integer;i,j,m,n,mmax:byte;max:integer;label met;beginmet:clrscr;max:=0;writeln ('Введите размерность матрицы NxM');readln (n);readln (m);randomize;for i:=1 to n do beginfor j:=1 to m do begina[i,j]:=-50+random(101);write (a[i,j]:4);end;{создание и вывод матрицы}writeln;end;writeln;for i:=1 to n do{нахождение максимального элемента}zfor j:=1 to m doif (a[i,j]>max) then beginmax:=a[i,j];mmax:=j;end;for i:=1 to n dowrite (a[i,mmax]:4);writeln;{Вывод столбца}for i:=1 to n do {нахождение одинаковых элементов}for j:=1 to n doif (a[i,j]=max)and(j<>mmax) then begin mmax:=j;write (a[i,mmax]:4);end;writeln ('Для продолжения нажмите любую клавишу,для выхода - "Х"');readln(fl);if (fl <> 'x') then goto met;<span>end.</span>
const n=5;
var
i: integer;
var a: array[1..n] of integer;
begin
writeln ('Исходный массив');
for i:=1 to n do begin
a[i]:=random(10);
write (a[i]:3);
a[i]:=2*a[i];
end;
writeln;
writeln ('Новый массив');
println (a);
end.
-----------------------------------
Исходный массив
9 4 7 7 2
Новый массив
18 8 14 14 4
1. 0,5 Мбайт= 512 Кбайт
12345 бит= 12641280 Кбайт
2. 0,006 Кбайт= 49,15 бит
17 байт= 136 бит