Нужно преобразовать строку таким образом, чтобы цифры каждого слова были перенесены в начало слова, изменив порядок следования цифр в слове на обратный.
Слова разделены пробелами. Работать только с length, ord, chr. Предполагается, что в слове встречаются и символы и цифры. Отсюда вопрос - а как отличить цифры от символов в слове?
volvo
8.01.2007 15:28
Цитата
а как отличить цифры от символов в слове?
SL := slovo(s, i);
for j := 1to length(SL) doif SL[j] in ['0' .. '9'] then{ цифра }else{ буква }
18192123
8.01.2007 16:31
И снова я что-то упустила....
uses crt;
function Slovo(s:string;n:integer):string;
const lim =[' ',',','!'];
var ss:string;
k,c,i:integer;
begin
ss:=''; c:=1; k:=1;
while k<=length(s) dobeginwhilenot(s[k] in lim) and (k<=length(s)) dobeginif c=n then ss:=ss+s[k];
inc (k); end;
inc ( c );
while (s[k] in lim) and (k<=length(s)) do inc (k);
end;
Slovo:=ss;
end;
var
s, sl : string;
i, j, pos : integer;
begin
clrscr;
writeln (' vvedite stroky, sostoayschyu iz 4isel i simvolov' );
readln (s);
pos := 1;
while slovo (s, i ) <> ''dobegin
sl := slovo (s, i);
for j := 1to length (sl) doif sl[j] in ['0'..'9'] thenbegin
sl[pos] := sl[j];
inc (pos);
end;
end;
writeln (' rezyltat: ');
writeln (s);
readkey;
end.
Предположим, что теперь у меня всё цифры в начале слова, но за ними ещё буквы, как тогда записать цифры в обратном порядке?
volvo
8.01.2007 16:51
i := 1;
new_s := ''; { <--- Здесь будет храниться результат }while slovo (s, i ) <> ''dobegin
sl := slovo (s, i); { <--- Берем очередное слово }
new_sl := ''; { <--- Это - для преобразованного слова }{ Сначала проходим по всем цифрам от конца слова к началу }for j := length(sl) downto1doif sl[j] in ['0'..'9'] then new_sl := new_sl + sl[j];
{ А теперь - по всем буквам, от начала к концу }for j := 1to length(sl) doifnot(sl[j] in ['0'..'9']) then new_sl := new_sl + sl[j];
{ Добавляем преобразованное слово к строке - результату }
new_s := new_s + new_sl + ' ';
inc(i); { <--- и переходим к следующему слову }end;
writeln (' rezyltat: ');
writeln (new_s); { <--- Печатаем результат }
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.