Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Анализатор формул, чтение из файла 
:(
    Опции темы
TheX3
Дата 4.11.2007, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 4.11.2007
Где: Москва

Репутация: нет
Всего: нет



Есть простой анализатор формул ( " / * - + ( ) "  ). 
Код

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>

double calc(char op)
{
    double a,b,c=0.0;
    char op1='+', op2, op3;
    while(op1!=op)
    {
        if(scanf("%lg %c",&a, &op2)!=2 && getchar()=='(')
        {    a=calc(')'); scanf(" %c",&op2);    }
        while(op2=='*' || op2=='/')
        {
            if(scanf("%lg %c",&b, &op3)!=2 && getchar()=='(')
            {    b=calc(')'); scanf(" %c",&op3);    }
            if(op2=='*')a*=b;
            else if(op2=='/')a/=b;
            op2=op3;
        }
        if(op1=='+')c+=a;
        else if(op1=='-')c-=a;
        op1=op2;
    }
    return c;
}
int main()
{
    setlocale(LC_CTYPE,".866");
    do
    {
        system("cls");
        wprintf(L"Введите формулу для вычисления и закончите ее знаком '='\n");
        printf("%lG\n",calc('='));
        wprintf(L"\nEsc закончить, любая клавиша - продолжить...");
    }while(getch()!=0x1B);

    return 0;
}


Поставлена задача:
Дана формула(в файле). Нам надо прочитать из файла,проанализировать и выдать ответ на экран или в файл.
мой черновик:
Код

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include<fstream.h>
#include<iostream.h>

char calc(char op)
{
    char a,b,c;
    char op1='+', op2, op3;
ifstream file;
file.open("d:\test.txt",ios::in);
    while(op1!=op)
    {
        if((file.get(a)&&file.get(op2)) && file.get()=='(')
        {    a=calc(')'); file.get(op2);    }
        while(op2=='*' || op2=='/')
        {
            if((file.get(b)&&file.get(op3)) && file.get()=='(')
            {    b=calc(')'); file.get(op3);    }
            if(op2=='*')a*=b;
            else if(op2=='/')a/=b;
            op2=op3;
        }
        if(op1=='+')c+=a;
        else if(op1=='-')c-=a;
        op1=op2;
    }
file.close();
    return c;
}
int main()
{

        printf("%c\n",calc('='));


    return 0;
}


PM MAIL ICQ   Вверх
bsa
Дата 4.11.2007, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Где вопрос?
Если просто хотел похвастаться, то смотри, как пишутся калькуляторы (не мое и не проверял, просто очень маленький код): http://alexott-ru.blogspot.com/2007/06/boostspirit.html
PM   Вверх
TheX3
Дата 4.11.2007, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 4.11.2007
Где: Москва

Репутация: нет
Всего: нет



Вопрос очень простой, нужно сделать чтение из файла,у меня с клавиатуры. Как это реализовать? есть идеи ,что при помощи getline ... кто знает подскажите плз smile 
PM MAIL ICQ   Вверх
bsa
Дата 4.11.2007, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Код
std::string line;
std::istream file;
...
std::getline(file, line);
...

Рекомендую заглянуть сюда: http://www.sgi.com/tech/stl/
PM   Вверх
jonie
Дата 4.11.2007, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



bsa или вот еще : http://dklab.ru/chicken/nablas/10.html


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
bsa
Дата 4.11.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(jonie @ 4.11.2007,  16:48)
bsa или вот еще : http://dklab.ru/chicken/nablas/10.html

Последняя строчка на странице заставила улыбнуться. smile 
PM   Вверх
TheX3
Дата 4.11.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 4.11.2007
Где: Москва

Репутация: нет
Всего: нет



Эм,народ,спасибо,но помоему вторая ссылка не в тему,а первая на английском и тоже не совсем дает ответ на вопрос  smile 
PM MAIL ICQ   Вверх
bsa
Дата 4.11.2007, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(TheX3 @ 4.11.2007,  17:48)
Эм,народ,спасибо,но помоему вторая ссылка не в тему,а первая на английском и тоже не совсем дает ответ на вопрос  smile

Ну что на это можно сказать - учи английский и матчасть.
PM   Вверх
TheX3
Дата 5.11.2007, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 4.11.2007
Где: Москва

Репутация: нет
Всего: нет



Цитата(bsa @ 4.11.2007,  18:08)
Цитата(TheX3 @ 4.11.2007,  17:48)
Эм,народ,спасибо,но помоему вторая ссылка не в тему,а первая на английском и тоже не совсем дает ответ на вопрос  smile

Ну что на это можно сказать - учи английский и матчасть.

Да при чем тут английский ? Там явно написано не то ,что я спрашиваю. 
PM MAIL ICQ   Вверх
bsa
Дата 5.11.2007, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Вообще-то я тебе ответил на вопрос: http://forum.vingrad.ru/index.php?showtopi...t&p=1306172
И дал ссылку на документацию по STL. Именно в STL входит getline, как и string.
PM   Вверх
archimed7592
Дата 5.11.2007, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(TheX3 @  5.11.2007,  10:54 Найти цитируемый пост)
Там явно написано не то ,что я спрашиваю.  

А что ты спрашиваешь? smile


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
TheX3
Дата 6.11.2007, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 4.11.2007
Где: Москва

Репутация: нет
Всего: нет



Ту archimed7592

Дана формула(в файле). Нам надо прочитать из файла,проанализировать и выдать ответ на экран или в файл.
Мне говорили ,что тут надо сначала прочитать всю функцию,а потом уже анализировать. гетлин как раз читает строку,а вот как анализировать это уже вопрос )
PM MAIL ICQ   Вверх
archimed7592
Дата 6.11.2007, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(TheX3 @  5.11.2007,  10:54 Найти цитируемый пост)
Там явно написано не то ,что я спрашиваю.  
Цитата(TheX3 @  6.11.2007,  23:08 Найти цитируемый пост)
гетлин как раз читает строку

Там как раз это и написано smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
TheX3
Дата 6.11.2007, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 4.11.2007
Где: Москва

Репутация: нет
Всего: нет



Блин,действительно учить надо английский! а русского варианта нету ?)
PM MAIL ICQ   Вверх
archimed7592
Дата 6.11.2007, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(TheX3 @  6.11.2007,  23:20 Найти цитируемый пост)
а русского варианта нету ?) 

Есть, но об их полноте и корректности сказать ничего не могу.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1095 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.