Урок 17 Задача 5

Урок 17 Задача 5:

Пользователь вводит строку символов, в которой есть два числа, разделенные другими символами, т.е. строка имеет вид:

какиетосимволыЧИСЛО1какиетосимволыЧИСЛО2какиетосимволы

необходимо считать данные числа в две строковые переменные s1 и s2.

var
  s, s1, s2: string;
  i,                         // счетчик, общий для внешнего и вложенного циклов
  j: integer;                // счетчик для смены строк
begin
  write ('Введите строку: ');
  readln(s);
  i:= 0;
  j:= 0;
  s1:= '';
  s2:= '';
  while not (i > length(s)) do           // цикл для обхода строки
  begin
    i:= i+1;
    if (s[i]>='0')and(s[i]<='9') then    // если встретилось число
    begin
      j:= j + 1;                         // увеличиваем счетчик массива строк
      if j > 2 then
        break
      else
        for i:= i to length(s) do
          if not ((s[i]>='0')and(s[i]<='9')) then  // если встретилось "не число"
            break                                  // выходим из вложенного цикла
          else begin
            if j = 1 then
              s1:= s1 + s[i]
            else
              s2:= s2 + s[i];
          end;
      end;
  end;
    writeln (s1);
    writeln (s2);
  readln();
end.   

Вывод в консоли:

Введите строку: dfhhgf35653dhhdf5653fdhf
35653
5653

var
  s, s1, s2: string;
  i,                         // счетчик, общий для внешнего и вложенного циклов
  j: integer;                // счетчик для смены строк
begin
  write ('Введите строку: ');
  readln(s);
  i:= 0;
  j:= 0;
  s1:= '';
  s2:= '';
  while not (i > length(s)) do           // цикл для обхода строки
  begin
    i:= i+1;
    if (s[i]>='0')and(s[i]<='9') then    // если встретилось число
    begin
      j:= j + 1;                         // увеличиваем счетчик массива строк
      if j > 2 then
        break
      else
        while (s[i]>='0')and(s[i]<='9') do // цикл работает, пока непрерывно идет числовой фрагмент
        begin
          if j = 1 then
            s1:= s1 + s[i]
          else
            s2:= s2 + s[i];
          i:= i+1;              // увеличиваем счетчик (общий с внешним циклом)
        end;
      end;
  end;
    writeln (s1);
    writeln (s2);
  readln();
end.

Вывод в консоли:

Введите строку: рррп55прпр5634имати
55
5634
vedro-compota's picture

засчитано

_____________
матфак вгу и остальная классика =)