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

Leave a Comment

90 − = 86