Составьте алгоритм (PascalABC), в результате которого получится "слово", состоящее из...

0 голосов
25 просмотров

Составьте алгоритм (PascalABC), в результате которого получится "слово", состоящее из букв "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", стоящих в случайном порядке, при этом:
за "a" могут следовать только "e и "i";
за "b" могут следовать только "f" и "j";
за "c" могут следовать только "g" и "k";
за "d" могут следовать только "h" и "l";
за "e" могут следовать только "a" и "i";
за "f" могут следовать только "b" и "j";
за "g" могут следовать только "c" и "k";
за "h" могут следовать только "d" и "l";
за "i" могут следовать только "a" и "e";
за "j" могут следовать только "b" и "f";
за "k" могут следовать только "c" и "g";
за "l" могут следовать только "d" и "h".
Результатом алгоритма должно стать "слово" состоящее из 32 букв (повтор букв позволяется).


Информатика (327 баллов) | 25 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

 var a:array['a'..'l',0..1] of char=
(('e','i'),('f','j'),('g','k'),('h','l'),('a','i'),('b','j'),
 ('c','k'),('d','l'),('a','e'),('b','f'),('c','g'),('d','h'));
i,k: integer; s:string;
begin
Randomize;
k:=random(12);
s:=''+chr(ord('a')+k);
for i:=2 to 32 do
 s:=s+a[s[i-1],random(2)];
writeln(s);
end.

Пример:
dlhlhdlhdhldlhlhldhdhdlhdhdldhlh

(194k баллов)
0 голосов

Program Posledovatelnost;
var  a: char;  b: string;  code, c: integer;
label dne;begin  readln(a);    //Читаем  code := Ord(a); //Преобразуем  b := Concat(b, a);  for c := 1 to 31 do  begin    case code of      97, 65:        begin//если "A"          readln(a);          code := Ord(a);          case code of            101, 69: b := Concat(b, a);            105, 73: b := Concat(b, a);          else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end;          end;        end;      98, 66:        begin//Если "B"          read(a);          code := Ord(a);          case code of            102, 70: b := Concat(b, a);            106, 74: b := Concat(b, a);          else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end;          end;        end;      99, 67:        begin//Если "C"          read(a);          code := Ord(a);          case code of            103, 71: b := Concat(b, a);            107, 75: b := Concat(b, a);          else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end;          end;        end;      100, 68:        begin//Если "D"          read(a);          code := Ord(a);          case code of            104, 72: b := Concat(b, a);            108, 76: b := Concat(b, a);          else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end;          end;        end;      101, 69:        begin//Если "E"          readln(a);          code := Ord(a);          case code of            97, 65: b := Concat(b, a);            105, 73: b := Concat(b, a);          else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end;          end;        end;      102, 70:        begin//Если "F"          readln(a);          code := Ord(a);          case code of            98, 66: b := Concat(b, a);            106, 74: b := Concat(b, a);          else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end;          end;        end;      103, 71:        begin//Если "G"          readln(a);          code := Ord(a);          case code of            99, 67: b := Concat(b, a);            107, 75: b := Concat(b, a);          else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end;          end;        end;      104, 72:        begin//Если "H"          readln(a);          code := Ord(a);          case code of            100, 68: b := Concat(b, a);            108, 76: b := Concat(b, a);          else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end;          end;        end;      105, 73:        begin//Если "I"          readln(a);          code := Ord(a);          case code of            97, 65: b := Concat(b, a);            101, 69: b := Concat(b, a);          else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end;          end;        end;      106, 74:        begin//Если "J"          readln(a);          code := Ord(a);          case code of            98, 66: b := Concat(b, a);            102, 70: b := Concat(b, a);          else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end;          end;        end;      107, 75:        begin//Если "K"          readln(a);          code := Ord(a);          case code of            99, 67: b := Concat(b, a);            103, 71: b := Concat(b, a);          else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end;          end;        end;      108, 76:        begin//Если "L"          readln(a);          code := Ord(a);          case code of            100, 68: b := Concat(b, a);            104, 72: b := Concat(b, a);          else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end;          end;        end;    end;  end;  writeln(b);  dne: end.

(318 баллов)