2013-04-29 1 views
0

Я использовал это и печатал "12+" как выражение. 'm вниз, чтобы попытаться добавить верхнее значение и следующее значение, и он продолжает давать мне результат 'c', но я хочу, чтобы результат был равным 3. Так что есть способ получить мою программу для преобразования char' c 'в int' 3 ' и char 'd' до int 4 и так далее?Могу ли я каким-то образом заставить мою программу преобразовывать символы в целые числа?

//array based stack implementation 
class Stack 
{ 
private: 
    int capacity;  //max size of stack 
    int top;   //index for top element 
    char *listArray;  //array holding stack elements 

public: 
    Stack (int size = 50){ //constructor 
     capacity = size; 
     top = 0; 
     listArray = new char[size]; 
    } 

    ~Stack() { delete [] listArray; } //destructor 


    void push(char it) { //Put "it" on stack 
     listArray[top++] = it; 
    } 
    char pop() { //pop top element 
     return listArray [--top]; 
    } 

    char& topValue() const { //return top element 
     return listArray[top-1]; 
    } 

    char& nextValue() const {//return second to top element 
     return listArray[top-2]; 
    } 


    int length() const { return top; } //return length 



}; 

int main() 
{ 
    string exp; 
    char it = ' '; 
    int count; 
    int push_length; 


    cout << "Enter an expression in postfix notation:\n"; 
    cin >> exp; 
    cout << "The number of characters in your expression is " << exp.length() << ".\n"; 
    Stack STK; 

    for(count= 0; count < exp.length() ;count++) 
    { 

     if (exp[count] == '+') 
     { 
      it = exp[count - 1]; 
      cout << it << "?\n"; 

       while (!isdigit(it)) 
     { 
      cout << it << "!\n"; 
      it = exp[count--]; 
     } 

     STK.push(it); 
     cout << STK.topValue() << "\n"; 


     it = exp[count - 2]; 
     cout << it << "\n"; 

     if (isdigit(it)) 
     { 
      STK.push(it); 

     } 
     cout << STK.topValue() << "\n"; 
     cout << STK.nextValue() << "\n"; 
     it = STK.topValue() + STK.nextValue(); 
     cout << it << "\n"; 

     STK.pop(); 
     STK.pop(); 
     STK.push(it); 
     cout << STK.topValue() << "\n"; 

     } 


    } 
    cout << "The number of characters pushed into the stack is " << STK.length() << ".\n"; 
    push_length = STK.length(); 
    return(0); 
} 
+0

Долгое время с тех пор, как я сделал c/C++ – basarat

ответ

0

здесь вы идете:

int a = (int)'a'; 
int c = (int)'c'; 
int ans = (c-a) + 1 ; // ans will be 3 
+0

Как я могу заставить его преобразовать все символы в цифры? –

+0

Я отредактировал первоначальный вопрос, чтобы лучше объяснить себя –

1

Вы можете просто использовать что-то вроде STK.push (он-'0') вместо STK.push (это).

+0

Что бы это точно? –

+1

@Richard, Извините, что впечаталась ошибка. Я редактировал сообщение. ваша переменная содержит символы ввода. Вы можете вычесть значение ascii нуля из символов цифр, чтобы преобразовать каждый символ в цифру. Таким образом, вы можете нажать цифру вместо нажатия символов символов ascii. – oMatrix

 Смежные вопросы

  • Нет связанных вопросов^_^