Страница 1 из 1

[Pascal]Символьные переменыые и строки

Добавлено: 05 мар 2007, 22:43
maxg5
Дана строка символов.Удалить из неё каждое слово нечётной длины.Слова отделяются друг от друга группой пробелов.

Re: [Pascal]Символьные переменыые и строки

Добавлено: 06 мар 2007, 02:21
Колядин Максим
Самое важное:

Код: Выделить всё

If (lenght(s) mod 2=1) then delete(s,nachalo,konec);
Надеюсь, как отделятются слова враг от врага ты знаешь.

Re: [Pascal]Символьные переменыые и строки

Добавлено: 11 мар 2007, 22:46
maxg5
Напряг мозги,кое-как чтото написал.Исправте что не так плз!!!

Код: Выделить всё

var
str:string;
i,l,k,c:integer;
FLAG:BOOLEAN;
M:SET OF CHAR;
begin
M:=[' ','.',',','!',':',';','?','-','_','"',' '];
writeln('vvedite text');
readln(str);
str:=str+' ';
l:length(str);
i:=1;c:=0;k:=0;FLAG:=FALSE;
repeat
if not (str[i] in M) then
begin
k:=k+1;
i:=i+1;
FLAG:=TRUE;
end
else If (lenght(s) mod 2=1) then
begin
DELETE(STR,i-k,k);
k:=0;i:=i-k;FLAG:=FALSE;
end
else begin i:=i+1;FLAG:=FALSE;k:=0;end;
writeln(str);
end.

Re: [Pascal]Символьные переменыые и строки

Добавлено: 12 мар 2007, 10:27
Хыиуду
Несколько ужасно...
Во-первых, вместо set of char здесь намного проще использовать константную строку. Вроде const M='_,.!?:" ', тогда вместо if not (str in M) будет использоваться if pos(str,M)=0.
Во-вторых, я ничуть не удивлюсь, если компилятор ругается на If (lenght(s) mod 2=1). Ну нет у нас в программе переменной s. Если уж ты сохраняешь в переменной k длину текущего слова, так и сравнивать надо If odd(k) then. (одд - функция, возвращающая истину при нечетном аргументе).

Re: [Pascal]Символьные переменыые и строки

Добавлено: 12 мар 2007, 10:46
BBB
Хыиуду писал(а):Несколько ужасно...
Во-первых, вместо set of char здесь намного проще использовать константную строку. Вроде const M='_,.!?:" ', тогда вместо if not (str in M) будет использоваться if pos(str,M)=0.
Не соглашусь. Чем использование строки проще-то???
Со множеством, по-моему, гораздо нагляднее.
Предполагаю, что у способа с использованием строки "ноги растут" из языка C, где понятие "множество" просто отсутсвует как класс.
(хех, хороший калабмурчик получился, учитывая наличие в C++ термина "class" :) ))
Я, кстати (еще в "давние-давние годы"), когда начал изучать C++, то в качестве тренировки реализовал на C++ класс "множество" по аналогии с паскалевским.

Re: [Pascal]Символьные переменыые и строки

Добавлено: 12 мар 2007, 13:30
Колядин Максим
maxg5, а ты пробывал запустить свою программу прежде чем оставлять её код на форуме? Я ж тебе говорил: делишь строку на слова, и если (length(slovo) mod 2=1) then delete(stroka,nachalo,konec)!
Хыиуду писал(а):Несколько ужасно...
Полностью с тобой согласен. Код какой-то грязный, поналяпано всяких ненужных и неправильных процедур... ой! Только вместо слова "несколько" я бы написал "насколько" -);