Интересно, как будет выглядеть АОН(к примеру) на энтом MPS? Написать программу декодирования телефонного номера для АОН.
По запросу АОНа АТС посылает телефонный номер, используя следующие правила:
- Если цифра повторяется менее двух раз, то это помеха и она должна быть отброшена
- Каждая значащая цифра повторяется минимум два раза
- Если в номере идут несколько цифр подряд, то для обозначения «такая же цифра как
предыдущая» используется идущий два или более подряд раз знак #
Например, входящая строка 4434###552222311333661 соответствует номеру 4452136
"REFAL":
$ENTRY Go { = <Print<Convert_number (<Arg 1>) e.1>>; }
Convert_number {e.1 = <F4<F3<F2<F1 e.1>>>>;}
F1 {s.1 s.1 e.1 = s.1 <F1 e.1>;
s.1 e.1 = <F1 e.1>;
=;}
F2 {e.1 s.1 s.1 e.2 = <F2 e.1 s.1 e.2>;
e.1 = e.1;}
F3 {e.1 s.1 '#' e.2 = <F3 e.1 s.1 s.1 e.2>;
e.1 = e.1;}
F4 {'#' e.1 = <F4 e.1>;
e.1 = e.1;}
<Convert_number ('4434###552222311333661' (e.string))>;
"C++":
void convert( char *in, char *res )
{
char ch = 0;
char prev = 0;
while ( in && *in ) {
if ( *in++ == ch ) {
if ( ch != '#' )
prev = ch;
if ( prev )
*res++ = prev;
while ( *in++ == ch )
;
}
ch = *( in - 1 );
}
*res = 0;
}
MPS - ???
p.s.: процедурки стянуты с www.progz.ru