Дан текст. Устранить в нем лишние пропуски, оставив между словами не более 2-х пропусков. Определить суму кодов всех парных слов. Результат вывести на экран в 10-ной и 16-ой системах счисления

code: #pascal
Program PascalGuru;
 
{-------------------------------------------------}
function dec2hex(des:integer):string;
var i,ost,n,l:integer;
s,s1,sbox,temp:string;
begin
 n:=0;
 i:=0;
 s:='';
 repeat
  inc(n);
  inc(i);
  ost:=des mod 16;//остаток
  des:=des div 16;//целая часть
  if ost>=10 then
   begin
    if ost=10 then s:=s+'A';
    if ost=11 then s:=s+'B';
    if ost=12 then s:=s+'C';
    if ost=13 then s:=s+'D';
    if ost=14 then s:=s+'E';
    if ost=15 then s:=s+'F';
   end
  else
   begin
    str(ost,temp);
    s:=s+temp;
   end;
 until des=0;
{Переворачиваем содержимое}
n:=1;
l:=length(s);
for i:=1 to (l div 2) do
 begin
 sbox:=s[n];
 s[n]:=s[l+1-n];
 s[l+1-n]:=sbox[1];
 inc(n);
 end;
 
dec2hex:=s;
end;
{-------------------------------------------------}
 
var s:string;
    i,n,p,summa:integer;
    A:array[1..50] of string;
 
begin
write('Vvedite stroku slov [cerez probely]:');
readln(s);
 
i:=1;
repeat
if copy(s,i,2)='  ' then delete(s,i,1) else inc(i);
until i>length(s);   {оставили по 1 пропуску}
 
writeln;
writeln('Preobrazovannaya stroka: ',s);
 
i:=0;
repeat
inc(i);
p:=pos(' ',s);
A[i]:=copy(s,1,p-1);
delete(s,1,p);
until p=0;
n:=i;
A[n]:=s;
 
summa:=0;
for i:=1 to n do
 if not odd(i) then
   begin
    s:=A[i];
    for p:=1 to length(s) do summa:=summa+ord(s[p]);
   end;
 
writeln('Summa [10s]: ',summa);
writeln('Summa [16s]: ',dec2hex(summa));
 
readln;
end.      
Поделиться:

Похожие статьи: