Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Обработка символьных массивов


Автор: Чекмарь 11.4.2008, 22:23
Ребят, помогите пожалуйста с задачкой!
Задать 2 строки символов. Каждая до 20 символов длиной и содержит буквы и цифры. Общее кол-во букв в обоих строках не превышает 20. Напечатать все цифры в одной, а буквы в другой строке.
Заранее спасибо!

Автор: Mikh@il 11.4.2008, 22:36
Типо того:

Код


var s1,s2,s_chislo:string;
      i,temp,code:integer;
begin
 writeln('Введите первую строку');
 readln(s1);
 writeln('Введите вторую строку');
 readln(s2);
 s1:=s1+s2; //Все в кучу собираем
 s2:=''; s_chislo:='';
 
 for i:=1 to length(s1) do
  begin
    Val(s1[i],temp,code);
     if code=0 then s_chislo:=s_chislo+s1[i]
          else s2:=s2+s1[i]; 
   end;

Writeln('Строка с буквами=',s2);
Writeln('Строка с числами=',s_chislo);


end.

Val (st, a, code) – преобразует строку, содержащую цифры, в число вещественное или целое: st – строка; a – числовая переменная; code – переменная целого типа, по значению которой можно определить, успешно или нет прошёл перевод. Если перевод символов в число прошёл успешно, значение переменной code равно 0.


uses crt вперед допиши еще!

Автор: Чекмарь 11.4.2008, 22:39
Спасибо большое! smile 

Автор: volvo877 15.4.2008, 00:42
Для того, чтобы определить, является символ цифрой или нет - совсем не обязательно пользоваться Val (кстати, очень медленная процедура). Достаточно сделать так:

Код
var
  s1, s2: string;
  i: integer;

begin
  writeln('Введите первую строку');
  readln(s1);
  writeln('Введите вторую строку');
  readln(s2);

  s1 := s1 + s2;
  s2 := '';
  for i := length(s1) downto 1 do
    if s1[i] in ['0' .. '9'] then begin
      s2 := s1[i] + s2; delete(s1, i, 1);
    end;

  Writeln('Строка с буквами=',s1);
  Writeln('Строка с цифрами=',s2);
end.

Автор: Чекмарь 15.4.2008, 11:44
Спасибо! Еще лучше. А как ограничить кол-во символов в каждой строке до 20, и сделать так, чтобы общее кол-во букв не превышало 20?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)