Консультация № 159704
05.02.2009, 20:04
0.00 руб.
0 2 1
Помогите решить задачу:
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами -- не менее одного пробела, за последним словом -- точка. Напечатать те слова последовательности, которые отличны от последнего слова и удовлетворяют следующему свойству: слово совпадает с начальным отрезком латинского алфавита (a, ab, abc и т. д.); учесть, что в диапазоне 'a'..'z' могут быть литеры, отличные от латинских букв.

Обсуждение

Неизвестный
08.02.2009, 17:10
общий
Помогите пожалуйста!
Неизвестный
09.02.2009, 01:10
общий
это ответ
Здравствуйте, Korniychug Petro Dmytrovich!

"слово совпадает с начальным отрезком латинского алфавита (a, ab, abc и т. д.)" - это равносильно тому что оно содержится в строке 'abcdefgh' (если слово не больше 8 символов), причём его позиция в этой строке равна единице.
Остальные комментарии - в приложении вместе с кодом.

С уважением, Дмитрий.

Приложение:
program z159704;
uses crt;{модуль, содержащий необходимые нам функции}

const
N = 50;{max кол-во слов}
type
elem = String[8];{8 - max длинна слов}
tmas = array[1..N] of elem;

Procedure zapolnit(var slova:tmas;var kol:byte);
var c:char;
begin
c:=Readkey;
Write(c);
kol:=0;
While c <> '.' do{пока не ввели точку}
begin
inc(kol);{увеличиваем счётчик кол-ва слов}
While (c <> ' ')and(c <> '.') do{пока слово не закончилось}
begin
insert(c,slova[kol],length(slova[kol])+1);{считываем следующий символ}
c:=ReadKey;
Write(c);{выводим его на экран, чтобы отображалось что мы нажали}
end;
While (c = ' ')or(c = #13) do{пока не началось очередное слово - просто показываем что нажали}
begin
c:=ReadKey;
Write(c);
IF c = #13 then{Если нажали Enter - переведём курсор на следующую строку}
WriteLn;
end;
end;
end;

var slova:tmas;
kol,i:byte;
begin
zapolnit(slova,kol);{ввод слов}
WriteLn;
WriteLn('Result:');
For i:= 1 to kol do{распечатываем слова, удовлетворяющие условиям}
IF (slova[i] <> slova[kol])and(pos(slova[i],'abcdefgh')=1) then
Write(slova[i],' ');
ReadLn;
end.
Форма ответа