Форум программистов, компьютерный форум CyberForum.ru

Чтение арифметического выражения из файла - C++

Восстановить пароль Регистрация
 
darkska
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 4
10.05.2012, 11:35     Чтение арифметического выражения из файла #1
Доброго времени суток. Столкнулся с проблемой. Задача состоит в том, чтобы программа читала из файла стоку вида: число, выражение(+,-,*,/), число. Ответ должен выводиться на экран...
Вот что получилось, ошибка в типе данных, но не представляю как ее исправить. Не судите строго, я только учусь)
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    int n=3;
    int mas[n];
    ifstream f("text.txt");
    for(int i=0;i<n;i++)
    {
        f>>mas[i];
    }
    f.close();
    int a,b,vir,otv;
    a = mas[0];
    b = mas[2];
    vir=mas[1];
    if(vir="+")
    {
        otv = a+b;
    }
    else if(vir="-")
    {
        otv = a-b;
    }
    else if(vir="*")
    {
        otv = a*b;
    }
    else otv = a/b;
    cout<<otv<<endl;
    return 1;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2012, 11:35     Чтение арифметического выражения из файла
Посмотрите здесь:

Вычисления значения арифметического выражения на C++ C++
Программа ,вычисляющаю результат вычисления арифметического выражения C++
C++ Программа разбора и вычисления значения арифметического выражения
Проверить правильность арифметического выражения C++
Программа на С++ для вычисления арифметического выражения C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IceSqueez
Java, C# - Expert
 Аватар для IceSqueez
66 / 66 / 2
Регистрация: 09.08.2011
Сообщений: 284
10.05.2012, 12:17     Чтение арифметического выражения из файла #2
C++
1
2
3
4
5
6
int mas[n];
    ifstream f("text.txt");
    for(int i=0;i<n;i++)
    {
        f>>mas[i];
    }
у тебя интовский масив, а "-", "+", "*", "/" это чар символы. Опиши массив char, а в коде там где на считать арифметические значения делай так:

C++
1
otv = (int)a+(int)b;
Кстати да, использовать лучше double, поскольку int будет вылетать ошибка что делить нельзя
либо опиши его как double;

C++
1
double otv;
а потом:
C++
1
otv = (double)a/(double)b
darkska
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 4
10.05.2012, 12:58  [ТС]     Чтение арифметического выражения из файла #3
Исправил код в соответствии с указаниями, но компилятор все равно ругается...(((
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    int n=3;
    char mas[n];
    ifstream f("text.txt");
    for(int i=0;i<n;i++)
    {
        f>>mas[i];
    }
    f.close();
    int a,b;
    double otv;
    //char vir;
    a = mas[0];
    b = mas[2];
    //vir = mas[1];
    if(mas[1]="+")
    {
        otv = (double)a+(double)b;
    }
    else if(mas[1]="-")
    {
        otv = (double)a-(double)b;
    }
    else if(mas[1]="*")
    {
        otv = (double)a*(double)b;
    }
    else otv = (double)a/(double)b;
    cout<<otv<<endl;
    return 1;
}
ser4ega
27 / 27 / 3
Регистрация: 15.11.2009
Сообщений: 143
10.05.2012, 13:21     Чтение арифметического выражения из файла #4
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    int n=3;
    char mas[n];
    ifstream f("text.txt");
    for(int i=0;i<n;i++)
    {
        f>>mas[i];
    }
    f.close();
    int a,b;
    double otv;
    //char vir;
    a = mas[0];
    b = mas[2];
    //vir = mas[1];
    if(mas[1]=='+')
    {
        otv = (double)a+(double)b;
    }
    else if(mas[1]=='-')
    {
        otv = (double)a-(double)b;
    }
    else if(mas[1]=='*')
    {
        otv = (double)a*(double)b;
    }
    else otv = (double)a/(double)b;
    cout<<otv<<endl;
    return 1;
}
логику не проверял, но теперь компилится =)
IceSqueez
Java, C# - Expert
 Аватар для IceSqueez
66 / 66 / 2
Регистрация: 09.08.2011
Сообщений: 284
10.05.2012, 15:36     Чтение арифметического выражения из файла #5
C++
1
if(mas[1]="+")
Равенство в С++ это 2 знака ==, если писать = то это означает присваивание.

П.С. если тебе помогают по правилам форума надо тыкать "Спасибо"
darkska
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 4
10.05.2012, 19:01  [ТС]     Чтение арифметического выражения из файла #6
Цитата Сообщение от IceSqueez Посмотреть сообщение
если тебе помогают по правилам форума надо тыкать "Спасибо"
Сори, спешил) Компилиться конечно, но считает все равно не правильно) Видимо при переводе чар в инт возвращается не чаровое значение...((( Переписал под Си, через потоки, все заработало, но все же хотелось бы увидеть сие на ++...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
    FILE* input;
    int a,b;
    char c;
    if(input=fopen("text.txt","r"))
    {
        fscanf(input, "%d%c%d",&a,&c,&b);
        if(c=='+')
               printf("%d\n",a+b);
        else if(c=='-')
               printf("%d\n",a-b);
        else if(c=='*')
               printf("%d\n",a*b);
        else printf("%d\n",a/b);
    }
    else printf("No file");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2012, 19:24     Чтение арифметического выражения из файла
Еще ссылки по теме:

C++ Написать ООП для распознования арифметического выражения
C++ Написать программу, вычисляющую значение арифметического выражения
Расчет арифметического выражения C++

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

Или воспользуйтесь поиском по форуму:
IceSqueez
Java, C# - Expert
 Аватар для IceSqueez
66 / 66 / 2
Регистрация: 09.08.2011
Сообщений: 284
10.05.2012, 19:24     Чтение арифметического выражения из файла #7
Пожалуйста:
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
void main()
{
    ifstream f("text.txt");
    int a,b;
    char symbol;
    f>>a;
    f>>symbol;
    f>>b;
    f.close();
    double result=0.0;
    if(symbol=='+')
    {
        result = (double)((int)a+(int)b);
    }
    else
    {
        if(symbol=='-')
        {
            result = (double)((int)a-(int)b);
        }
        else
        {
            if(symbol=='*')
            {
                result = (double)((int)a*(int)b);
            }
            else 
            {
                result = (double)a/(double)b;
            }
        }
    }
    cout << a << endl;
    cout << symbol << endl;
    cout << b << endl;
    cout << "Result: " << result << endl;
    system ("pause");
}
Yandex
Объявления
10.05.2012, 19:24     Чтение арифметического выражения из файла
Ответ Создать тему
Опции темы

Текущее время: 02:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru