Expand|Select|Wrap|Line Numbers
- #include <iostream>
- #include <cstdlib>
- using namespace std;
- char LA;
- char* str;
- void R(int R_i, int& R_s);
- void Digit(int& Digit_val);
- void input_error();
- char token()
- {
- return *str++;
- }
- void Num(int& Num_val)
- {
- int Digit_value, R_i, R_s;
- Digit(Digit_value);
- R_i = Digit_value;
- R(R_i,R_s);
- Num_val = R_s;
- }
- void R(int R_i, int& R_s)
- {
- int Digit_value, R1_i,R1_s;
- if ( LA == '\0' )
- R_s = R_i;
- else
- {
- Digit(Digit_value);
- R1_i = 3* R_i + Digit_value;
- R(R1_i,R1_s);
- R_s = R1_s;
- }
- }
- void Digit(int& Digit_val)
- {
- LA = token();
- if ( LA == '0' ) Digit_val = 1;
- else if ( LA == '1' ) Digit_val = 0;
- else if ( LA == '\0' ) return;
- else input_error();
- }
- void input_error()
- { cout << "unacceptable character" << endl; }
- int main(int argc, char *argv[])
- {
- str = argv[1];
- int str_value;
- cout << str << endl;
- Num(str_value);
- cout << "value = " << str_value << endl;
- }