Автор: Кристина 19.05.2004 14:00
Опять преподы закидали , помогите
1. Текст задан строкой var St: string;
Напечатать все слова, удалив из них все предыдущие вхождения последней буквы каждого слова.
2. Написать функцию function Test(word:string): boolean принимающую значение True, если количество руских букв в строке превосходит количество латинских.
Автор: BlackShadow 19.05.2004 14:34
2).
Код
Function Test(Word:String):Boolean;
Var
i,r,e:Integer;
Begin
r:=0;
e:=0;
For i:=1 To Length(s) Do
Case s[i] Of
'а'..'п','р'..'я','А'..'П','Р'..'Я':Inc®;
'a'..'z','A'..'Z':Inc(e)
End;
Test:=r>e
End;
Автор: APAL 19.05.2004 14:41
® - это ( r ) без пробелов
Автор: Кристина 23.05.2004 11:40
А первую совсем ни как???
Автор: BlackShadow 24.05.2004 15:19
1). Я так понял надо из слов удалять последние буквы предыдущих слов.
Тогда примерно так:
Код
Const
Separators:Set Of Char = [' ',',','.','!','?',';']; {Добавишь чего, если захочешь}
Var
s:String;
i,j:Integer;
Begin
Write('Enter String: ');
ReadLn(s);
While s<>'' Do
Begin
While (s<>'') And (s[1] In Separators) Do
Delete(s,1,1);
If s='' Then
Break;
i:=2;
While (i<=Length(s)) And (Not(s[i] In Separators)) Do
Inc(i);
If i>Length(s) Then
Begin
WriteLn(s);
Break
End;
j:=i+1;
While j<=Length(s) Do
If s[j]=s[i-1] Then
Delete(s,j,1)
Else
Inc(j)
WriteLn(Copy(s,1,i-1));
Delete(s,1,i)
End
End.
Или что-то похожее...