SERGE_BLIZNUK
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код: { Натуральное 10-ное число закодировано словом, состоящим из букв А,И,С следующим образом: 0-А ; 1-AB ; 2-BB; 3-CC; 4-BBC; 5-CBC; 6-ABC; 7-BAC; 8-AAC; 9-CAC. ТРЕБУЕТСЯ написать программу котороя по кодируемому слову востанавливала бы число, если востановить невозможно, то программа должна выдасть ERROR. ТРЕБОВАНИЯ кодируемое слово должно состоять из 1-80 символов, заглавных латинских букв, и не должны быть пробелы. Пример работы программы: Ввод: ABBBCAC Вывод:129 Ввод: AAB Вывод:01 Ввод: ССССС Вывод: Error 0-А ; 1-AB ; 2-BB; 3-CC; 4-BBC; 5-CBC; 6-ABC; 7-BAC; 8-AAC; 9-CAC } Const MaxComb = 9; Shifr : array [0..MaxComb] of string[3] = ( 'A','AB','BB','CC','BBC','CBC','ABC','BAC','AAC','CAC'); procedure Perebor(S : string; var Res : string ); var i : integer; SResInner : string[10]; begin if (Length(S)>0) and (Res<>'Error') Then begin i:=MaxComb; while i>=0 do begin if Pos(Shifr[i],S)=1 then begin SResInner := Res; Res := Res+chr(ord('0')+i); Perebor(Copy(S,Length(Shifr[i])+1,255), Res ); if Res<>'Error' then Break else Res := SResInner; end; dec(i); end; if i<0 then Res := 'Error'; end; end; var S, SRes : string; begin S := 'ABBBCAC'; { WriteLn; Write('Vvedite stroku'); ReadLn(S);} SRes := ''; WriteLn(S); Perebor(S, SRes); WriteLn(SRes); end. | Если строчку надо вводить - раскомментарьте ввод. |