![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
sergey121212 |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: ![]() ![]() ![]() |
Создать Паскаль-программу, которая будет продуцировать цепочки в трёхсимвольном алфавите с записью их в файл, причем длина L цепочек ограничена: 4 <= L <= 8. Содержит одно сочетание «аb», заканчивается на «b» и символы «b» и «с» не стоят рядом Общее количество цепочек в файле должна быть не больше 20.
Вот что получилось сделал чтобы было ограничивалась от 4 до 8 и сделал чтобы было не больше 20 , но не могу сделать чтобы "Содержит одно сочетание «аb», заканчивается на «b»(сделал) и символы «b» и «с» не стоят рядом" Код Program pr01; uses Crt; const alf: string = 'ABC'; n = 20; type mass = array [1..n] of string; function InMass(a: mass; s: string): boolean; var i: integer; begin InMass := False; for i := 1 to n do begin if a[i] = s then begin InMass := True; exit; end; end; end; function P(l: integer): string; var i: integer; st: string; begin st := ''; for i := 1 to l do begin st := st + alf[random(length(alf))+1]; end; P := st; end; var i,j,l1,l2,l3: integer; s: mass; st: string; begin ClrScr; Randomize; i := 1; while i <= n do begin l1 := random(5)+3; st := P(l1)+'B'; if InMass(s, st) then continue; s[i] := st; i := i + 1; end; for i := 1 to n do begin for j := i to n do begin if length(s[i]) > length(s[j]) then begin st := s[i]; s[i] := s[j]; s[j] := st; end; end; end; for i := 1 to n do begin write(i:2,' '); Write(s[i]); writeln(' len=',length(s[i])); end; end. |
![]() ![]() |
sergey121212 |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот сделал наконец-то
Код uses crt; var r1,p,n,r2,k,i,m:integer; l:array[1..100] of string; s,t:string; f:file of string; begin clrscr; assign(f,'f.txt'); rewrite(f); randomize; l[1]:=''; k:=1; n:=0; repeat begin r2:=random(5)+2; p:=r2; if r2<>0 then begin s:=''; m:=0; repeat begin r1:=random(4); if (r1=0) and (length(s)<6) and (m=0) then begin m:=m+1; s:=s+'ab'; t:='b' end; if (r1=1) and (t<>'b') then begin t:='c'; s:=s+'c'; end; if (r1=2) and (length(s)<6) then begin t:='a'; s:=s+'a'; end; if (r1=3) and (t<>'c') and (t<>'a') then begin t:='b'; s:=s+'b'; end; end; until ((length(s)>r2)); if (m>0) and (t<>'c') and (t<>'a') then s:=s+'b' else s:=''; end; for i:=1 to k do if s<>l[i] then n:=n+1; if n=k then begin k:=k+1; l[k]:=s; write(f,l[k]); end; n:=0; end; until k>20; writeln; writeln; writeln('Нужные слова : ');; reset(f); for i:=1 to k-1 do begin read(f,l[i]); writeln(l[i]); end; close(f); end. |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:36 |