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

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

Пользователь вводит строку произвольных символов, выделите из неё массив первых 8 строковых литералов, которые являются числами. И выведите эти числа на экран.
Например, из строки:
rew2@#$$#435tr353453t4er4
должны быть выделены подстроки:

2
435
353453
4
4
Вывод консоли
vvedite proizvolnuy stroku:
q7w9er2t1
7 9 2
type  // секция объявления типов
  myArr = array[1..8] of char; //  массив из 8 элементов символьного типа

var
  s: myArr; // объявляем переменную типа  myArr
  i,n:integer;

begin
  writeln('vvedite proizvolnuy stroku:');
  readln(s);
    for i:=1 to Length(s) do
    begin
      if (s[i]>='0')and(s[i]<='9') then
            write(s[i], ' ');
    end;

    readln();

end.  

vedro-compota's picture

Показать работу (распечатку консоли) на строке

rew2@#$$#435tr353453t4er4

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

gani84's picture

var
  s: string;
  i:integer;

begin
  writeln('vvedite proizvolnuy stroku:');
  readln(s);
    for i:=1 to Length(s) do
    begin

      if (s[i]>='0')and(s[i]<='9') then
          write(s[i], ' ');
    end;

    readln();

end.
vedro-compota's picture

замечания:

  • 1) нет ограничения на 8 символов
  • 2) нет их в записи в массив
  • 3) нет распечатки консоли
  • 4) необходимо использовать массив строк

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

gani84's picture

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

vvedite proizvolnuy stroku:
rew2@#$$#435tr353453t4er4
Vivodim 8 chisel:
24353534
type  // секция объявления типов
  myArr = array[1..8] of char; //  массив из 8 элементов символьного типа
var
  s: myArr; // объявляем переменную типа  myArr
  i,j:integer;
  str : string;
begin
  writeln('vvedite proizvolnuy stroku:');
  readln(str);
    for i:=1 to Length(str) do
     begin // обходим строку в цикле
      if (str[i]>='0') and (str[i]<='9') and (j <= 8) then
        begin
        j+=1;
        s[j]:=str[i];
        end;
     end;
    writeln('Vivodim 8 chisel: ');
  for i := 1 to high(s) do
    write(s[i]);
    readln();
end.  
vedro-compota's picture

  • 1) должен быть массив строк, а не символов
  • 2) конкатенация цифр идущих подряд

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

vedro-compota's picture

Решите в качестве тренировки 5-ю задачу отсюда: http://fkn.ktu10.com/?q=node/8673

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

gani84's picture

Вывод консоли
2
435
353453
4
4
var
  arr:array[1..8] 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

решение работает верно. Просьба добавить решение без вложенных циклов.

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