IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Паскаль-программа, которая продуцирует цепочки в трёхсимвольном алфавите с записью их в файл...
sergey121212
сообщение 9.01.2012 21:41
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


Создать Паскаль-программу, которая будет продуцировать цепочки в трёхсимвольном алфавите с записью их в файл, причем длина 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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
sergey121212
сообщение 12.01.2012 17:26
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


Вот сделал наконец-то

Код

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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:36
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"