Имя пользователя:
Пароль:
 

Название темы: Калькулятор на С++
Показать сообщение отдельно

Аватара для Buchik

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот моя проблема: мне нужно написать калькулятор, который щитает выражения в скобках (с ОПН или ОПЗ это одно и то же)
так вот я нашёл калькулятор, который щитает сарзу переведённую запись в ОПЗ, но мне нужно сделать что бы это переводило автоматом в ОПЗ и щитало...
тоесть выражение 34 + ( 45*3+5)
это выражение выглядит в ОПН как 34 45 3 * 5 ++

вот мой код
Код: Выделить весь код
#include "stdafx.h"
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
 {
     int stack[1000];  
     // sp = индекс ячейки, куда будет push-иться очередное число
     int sp =0;      // (sp-1) = индекс ячейки, являющейся вершиной стека
     while ( !feof(stdin) ) 
	 {
         int c = getchar() ;
         int x ;
         switch ( c ) 
		 {
             case  ' ' :
             case '\n' :
                 break ;
             case '=' :
                 printf( "Result = %d\n", stack[sp - 1] ) ;  sp-- ;
                 break ;
             case '+' :
                stack[sp-2] = stack[sp-2] + stack[sp-1] ;  sp-- ;
                break ;
             case '-' :
                stack[sp-2] = stack[sp-2] - stack[sp-1] ;  sp-- ;
                break ;
             case '*' :
                stack[sp-2] = stack[sp-1] * stack[sp-2] ;  sp-- ;
                break ;
             case '/' :
               stack[sp-2] = stack[sp-2] / stack[sp-1] ;   sp-- ;
                break ;
             default :
                 ungetc (c, stdin); // вернуть символ обратно в поток
                 if ( scanf( "%d" , &x ) != 1 ) 
				 {
                     fprintf( stderr , "Can't read integer\n" ) ;
                     return -1 ;
                 } 
				 else 
				 {
                     stack[sp] = x ;
					 sp++ ;
                 }
         }
     }
     printf( "Result = %d\n" , stack[sp-1] ) ;
     return 0 ;
 }

Последний раз редактировалось Buchik, 22-05-2011 в 23:29. Причина: корректировка


Отправлено: 10:06, 19-05-2011 | #13

Название темы: Калькулятор на С++