![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
FENIX |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задание:
подсчитать общую длину всех слов, являющихся регулярными цепочками, в которых чередуются гласные и согласные буквы, и напечатать их в алфавитном порядке. Напечатать в перевернутом виде самое длинное слово, состоящее только из цифр и букв. Сделал все, кроме печати регулярных цепочек в алфавитном порядке. Подскажите, как это сделать. З.Ы. Регулярная цепочка - слово, состоящее только больших английских букв. :low: Код Program Lab; Uses Crt; type letters = set of 'A'..'Z'; const gl : letters = ['E', 'Y', 'U', 'I', 'O', 'A']; sogl : letters = (['A'..'Z'] - ['E', 'Y', 'U', 'I', 'O', 'A']); alphabet = ['A'..'Z', 'a'..'z']; digits = ['0'..'9']; var maxslovo, st, slovo, s : string; ch : char; i, n, k, j, dlina, max : integer; Function length1(s : string) : integer; begin length1 := ord(s[0]); end; Function RegCep (s : string) : boolean; var i : integer; begin RegCep := true; For i := 1 to length(s) do if (ord(s[i]) < 65) or (ord(s[i]) > 90) then RegCep := false; end; Function Cheredovanie (s : string) : boolean; var i : integer; b1, b2 : boolean; begin cheredovanie := true; if s[1] in gl then For i := 1 to length(s) do if i mod 2 = 1 then if not(s[i] in gl) then cheredovanie := false else else if not(s[i] in sogl) then cheredovanie := false; if s[1] in sogl then For i := 1 to length(s) do if i mod 2 = 1 then if not(s[i] in sogl) then cheredovanie := false else else if not(s[i] in gl) then cheredovanie := false; end; Function BykvbI(s : string): boolean; var i : integer; begin BykvbI := false; For i := 1 to length(s) do If s[i] in alphabet then BykvbI := true; end; Function CbIfrbI(s : string): boolean; var i : integer; begin CbIfrbI := false; For i := 1 to length(s) do If s[i] in digits then CbIfrbI := true; end; Procedure Perevorot (var s : string); var buf : char; i : integer; begin For i := 1 to length(s) div 2 do begin buf := s[i]; s[i] := s[length(s) - i + 1]; s[length(s) - i + 1] := buf; end; writeln('Camoe dlinnoe slovo - ',s); end; BEGIN ClrScr; max := 0; Write('Vvedite stroky simvolov : '); Readln(st); st := st + ' '; slovo := ''; dlina := 0; For i := 1 to length(st) do if st[i] <> ' ' then slovo := slovo + st[i] else if length(slovo) <> 0 then begin If RegCep(slovo) and Cheredovanie(slovo) then begin dlina := dlina + length(slovo); end; If length(slovo) > max then begin max := length(slovo); maxslovo := slovo; end; slovo := ''; end; writeln; writeln('Dlina = ', dlina); writeln; If (BykvbI(maxslovo) = true) and (CbIfrbI(maxslovo) = true) then Perevorot(maxslovo) else writeln('Takogo slova net :-('); readln; END. |
FENIX |
![]()
Сообщение
#2
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: ![]() ![]() ![]() |
...
Никто не поможет? Плиз ![]() |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
FENIX
Посмотри, я подправил кое-что (Cheredovanie) и добавил то, что было нужно...
|
FENIX |
![]()
Сообщение
#4
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: ![]() ![]() ![]() |
2 volvo
Спасибо огромное ![]() |
![]() ![]() |
![]() |
Текстовая версия | 22.06.2025 0:18 |