Решение задачи №5 из главы 16

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

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

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

Vvedite stroku: wsefg34teth567gfd
34
567
var
  arr:array[1..100] of string;
  i,j:integer;
  strinput,str:string;
  a:char;
  n:byte;
begin
   j:=1;
   i:=1;
   write('Vvedite stroku: ');
   readln(strinput);
   n:=length(strinput);
   while i <= n do begin
     a:=strinput[i];
     while (a>='0') and (a <= '9') do begin
       str:=str+a;
       i:=i + 1;
       a:=strinput[i];
     end;
     i:=i+1;
     if str <> '' then begin
       arr[j]:= str;
       j:=j + 1;
       str :=' ';
     end;
   end;
   for i:=1 to j-1  do
       writeln(arr[i]);
   readln();
end.
vedro-compota's picture

1) после запуска я получил:

Vvedite stroku: 34
 
 
 
 567

-- пустых строк быть не должно
2)

str <> ''
str :=' ';

-- проверка идет на пустую строку, а присваивается непустое значение. Исправьте.

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

gani84's picture

Вывод консоли: 
Vvedite stroku: wsefg34teth567gfd
34
567
var
  arr:array[1..100] of string;
  i,j:integer;
  strinput,str:string;
  a:char;
  n:byte;
begin
   j:=1;
   i:=1;
   write('Vvedite stroku: ');
   readln(strinput);
   n:=length(strinput);
   while i <= n do begin
     a:=strinput[i];
     while (a>='0') and (a <= '9') do begin
       str:=str+a;
       i:=i + 1;
       a:=strinput[i];
     end;
     i:=i+1;
     if str <> '' then begin
       arr[j]:= str;
       j:=j + 1;
       str :='';
     end;
   end;
   for i:=1 to j-1  do
       writeln(arr[i]);
   readln();
end.
vedro-compota's picture

Доработать: чтобы если в строке есть более 2 чисел, то выводились бы только первые два.

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

vedro-compota's picture

решение засчитано

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