Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами – запятая или не менее одного пробела, за последним словом - точка.
Напечатать те слова последовательности, которые отличны от последнего слова и удовлетворяют следующему свойству:
- буквы слова упорядочены по алфавиту;
Напечатать те слова последовательности, которые отличны от последнего слова, предварительно преобразовав каждое из них по следующему правилу:
- перенести последнюю букву в начало слова.
помогите решить... горю... стринги еще не прошли ((
разбиваем тест на слова.
http://forum.pascal.net.ru/index.php?showtopic=2361&view=findpost&p=28059
затем проходим массив и печатаемнужные элементы.
это понятно... а как определить, что буквы в слове по алфав. порядку ?
Попробуй нечто вроде этого:
var i: integer;
s: string;
boy: boolean;
. . . . . .
i:=2;
if length(s)>1 then boy:=(ord(s[i])=(ord(s[i-1])+1))
else boy:=true;
while (i<length(s)) and boy do
begin
inc(i);
boy:=(ord(s[i])=(ord(s[i-1])+1));
end;
if boy then writeln('Буквы в слове расположены по алфавиту! ');
это нечто дает тру только если слово типа "абв"... но никак не "абг" )
далее, я не совсем понял про PChar, без которого тут никак имхо .
Чтобы учесть
if length(s)>1 then boy:=(ord(s[i])=(ord(s[i-1])+1))
if length(s)>1 then boy:=(ord(s[i])>ord(s[i-1]))
2volvo
вводимая строка иметь будет длину около 400 символов
Ну и что? Обязятельно прикручивать PChar? А у тебя где-то в условии сказано, что дана СТРОКА содержащая ... ? У тебя речь идет о ПОСЛЕДОВАТЕЛЬНОСТИ, не так ли? Вот и используй
Var
sequence: array[1 .. 400] of char;
как бы объяснить... лектор отстает на пару лекций от учебной практики )
" между соседними словами – запятая или не менее одного пробела, за последним словом - точка." - поэтому надо одной строкой (((
с клавиатуры
Ввод строки:
uses Crt;
var q :char;
count :integer; {количество вводимых символов}
s :array[1..400] of char; {обходимся без PChar}
begin
count:=0;
repeat
q:=readkey;
if ord(q)<>13 then
begin
inc(count);
ss[count]:=q;
end;
until ord(q)=13;
. . . . . .
end.