Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 26.12.2013
Сообщений: 14
1

Калькулятор считающий выражения обратной польской записи из файла

02.11.2015, 20:17. Просмотров 1984. Ответов 4
Метки нет (Все метки)

Здравствуйте!
У меня вот такое задание "Напишите программу, вычисляющую выражение в обратной польской записи. Исходное выражение находится в файле input.txt. Результат вычисления должен записываться в файл output.txt."
Как бы с самой обратной польской записью я вроде бы разобралась, но вот как сделать загрузку выражения для вычисления из файла я не могу понять. Помогите, пожалуйста!
Как преобразовать этот код, чтобы вводить выражение не с клавиатуры, а читать из файла? Объясните, пожалуйста!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
#include <fstream>
#include <cstring>
#include <iostream>
using namespace std;
int main()
 {
     char stack[1000];
     int sp =0;      
     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;
 }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2015, 20:17
Ответы с готовыми решениями:

Вычисление выражения, использование обратной польской записи
приветствую, люди. можете помочь с реализацией вычисления выражения с помощью обратной польской...

Построить дерево выражения, записанного в виде обратной польской записи
в текстовом файле дано арифметическое выражение в обратной польской записи. постройте дерево,...

Вычислить значение выражения в обратной польской записи с использованием стека
Вычислить значение выражения в обратной польской записи с использованием стека. например 6 2 + = 6...

Вычисление выражения записанного в виде обратной польской записи используя бинарное дерево
Всем доброго времени суток. Задача вот такая. Имеется скобочное выражение. Преобразовать его в...

4
Модератор
Эксперт С++
10240 / 8564 / 5192
Регистрация: 18.12.2011
Сообщений: 22,912
02.11.2015, 20:21 2
Цитата Сообщение от Marianna323 Посмотреть сообщение
while ( !feof(stdin) )
{
int c = getchar();
Заменяем на
C++
1
2
3
4
5
6
FILE* ff;
ff=fopen("filename.txt","rt");
while ( !feof(ff) ) 
{ 
   int c = fgetc(ff);
...
1
0 / 0 / 0
Регистрация: 26.12.2013
Сообщений: 14
02.11.2015, 20:28  [ТС] 3
Спасибо большое, поменяла, только теперь ошибка вот такая "Project Project2.exe raised exception class EAccessViolation with message 'Access Violation'." Подскажите, пожалуйста, с чем это связано и как поправить?
0
Модератор
Эксперт С++
10240 / 8564 / 5192
Регистрация: 18.12.2011
Сообщений: 22,912
02.11.2015, 20:31 4
https://www.cyberforum.ru/cpp-... 62479.html
0
0 / 0 / 0
Регистрация: 26.12.2013
Сообщений: 14
02.11.2015, 20:42  [ТС] 5
Извините, я туплю жестко. Показывает ошибку в строке "First chance exception at $76E9C42D. Exception class EAccessViolation with message 'Access Violation'. Process Project2.exe (3032)".
И сразу про вывод спрошу... Чтобы вывести результаты в файл, нужно пользоваться "ofstream out"?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2015, 20:42

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Калькулятор обратной польской записи
Всем здравствуйте! Необходимо написать программу реализующую калькулятор обратной польской записи,...

Калькулятор на основе обратной польской записи
Преподаватель задал создать калькулятор на основе обратной польской записи, а я в Java совсем...

K&R калькулятор обратной польской записи
В известной книге есть пример калькулятора в обратной польской записи. Проблема - не помещает числа...

Калькулятор с использованием обратной польской записи и стеков
Необходимо написать калькулятор используя обратную польскую запись и стеки. Программа должна...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.