Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Строчки

Автор: markusha 9.11.2010 3:35

Помогите, пожалуйста, с задачкой: Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 символов; между соседними словами - произвольное число пробелов, за последним слово стоит точка. Напечатать эту же последовательность, удалив из всех слов цифры и символы подчеркивания.
Вот мое решение:

Uses CRT;

Type
S = array [1..30] of string;

Var
Symbol: Char;
I, J: Integer;
Word: S;

Begin
Repeat
TextBackground(0);
ClrScr;
For j := 1 to 30 do Word[J] := '';
I := 0;
Repeat
I := I + 1;
Repeat
Read (Symbol);
If (Not (Symbol in ['0'..'9'])) and (Symbol <> '_') then
Word[I] := Word[I] + Symbol;
{Read (Symbol);
If (Symbol in ['0'..'9']) or (Symbol = '_') or (Symbol = ' ') then
Word[i] := ''
else
Word[I] := Word[I] + Symbol;}
Until ((Symbol = ' ') or (Symbol = '.')) = true;
Until Symbol = '.';
For J := 1 to I do
Write (Word[J]);
Writeln;
Writeln ('Continue? (y/Y)');
Until not (ReadKey in ['y', 'Y']);
end.

Но в ней получается, что в слове храняться и пробелы, получается что если буквы+пробел > 10, то конец обрубается...

Автор: Lapp 9.11.2010 5:24

Цитата(markusha @ 8.11.2010 23:35) *
Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 символов; между соседними словами - произвольное число пробелов, за последним слово стоит точка. Напечатать эту же последовательность, удалив из всех слов цифры и символы подчеркивания.

Условие из разряда "в огороде бузина, сколько лет пилоту?"

for i:=1 to Length(s) do if not (s[i] in (['0'..'9']+['_'])) then Write(s[i]);

- вот и все.. При чем тут рассуждения про слова и их длину?.. blink.gif