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

Программа - калькулятор бинарных функций - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ программа, которая ищет в массиве чисел симметричные участки работает не совсем правильно, не могу найти ошибку http://www.cyberforum.ru/cpp-beginners/thread1050417.html
#include "stdafx.h" #include <iostream> using namespace std; void mas(int a, int n)//функция которой заполняю массив {int i; cout<<"zapolnite massiiv"<<endl; for(i=0; i<n; i++) cin>>a; return ; }
C++ ссылка Найти все трехзначные числа (с комментариями) с помощью сслыки(&) http://www.cyberforum.ru/cpp-beginners/thread1050412.html
C++ подсчитать количество слов
необходимо что бы программа подсчитывала количество слов больше чем K символов, K вводится с клавиатуры, помогите пожалуйста :(
Бинарные файлы данных(задача) C++
Не могу разобраться как реализовать задачу в коде: Задан бинарный файл с целыми числами. Нужно записать в другой файл сначала отрицательные, а потом положительные элементы. Заранее спасибо!
C++ Решение уравнения методом Ньютона. Локализация корня http://www.cyberforum.ru/cpp-beginners/thread1050395.html
Собственно, программа имеется, все довольно таки просто, но необходимо локализовать корень и найти именно положительный корень уравнения. Я так понял, нужно найти начальное приближение Xn и Xm. Приближение необходимо искать методом деления пополам. Как мне объяснили, необходимо выставить пределы для деления пополам от 0 до 100 и потом, когда метод будет сходится уже что-то принимать за Xn и Xm. Я...
C++ Определить структуру ModelWindow для работы с моделями экранных окон Определить структуру ModelWindow для работы с моделями экранных окон. В качестве полей задаются: заголовок окна, координаты левого верхнего угла, размер по горизонтали, размер по вертикали, состояние "видимое\невидимое", состояние "с рамкой\без рамки". Координаты и размеры указываются в целых числах. Кроме функций read и print реализовать следующие функции: передвижение окна по горизонтали, по... подробнее

Показать сообщение отдельно
layer1632
0 / 0 / 0
Регистрация: 21.12.2013
Сообщений: 5
21.12.2013, 08:02  [ТС]     Программа - калькулятор бинарных функций
Цитата Сообщение от gazlan Посмотреть сообщение
'NOT', 'XOR' etc. объявляются зарезервированными словами и распознаются в качестве таковых лексическим анализатором.

В вашем простейшем случае (бинарные операторы), оператор всегда "зажат" между двумя операндами, так что достаточно только проверки на то, что ни два операнда, ни две переменные не идут подряд, а для распознания операнда достаточно массива ключевых слов (a la SymbolTable).

Вот здесь есть вся теория: Теория программирования. Парсеры и парсер-генераторы
Я нашел парсер для символьного массива, покажите пожалуйста на его примере где вводятся данные, что именно он анализирует и какое значение возвращает
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
void Parse(char *S)
{
    int l=strlen(S),i,j,p;
    char Tmp[100],sym;
 
    for (j=0; j<100; j++) Tmp[j]=0; p=0;
 
    for (i=0; i<l; i++)
    {
        sym=*(S+i);
        switch (sym)
        { 
        case '*':
            {
                cout << Tmp << endl;
                for (j=0; j<100; j++) Tmp[j]=0; p=0;
                cout << "*" << endl;
                break;
            }
        case '+':
            {
                cout << Tmp << endl;
                for (j=0; j<100; j++) Tmp[j]=0; p=0; 
                cout << "+" << endl;
                break;
            }
        case '-':
            {
                cout << Tmp << endl;
                for (j=0; j<100; j++) Tmp[j]=0; p=0;
                cout << "-" << endl;
                break;
            }
        case '//':
            {
                cout << Tmp << endl;
                for (j=0; j<100; j++) Tmp[j]=0; p=0;
                cout << "//" << endl;
                break;
            }
        case '(':
            {
                cout << Tmp << endl;
                for (j=0; j<100; j++) Tmp[j]=0; p=0;
                cout << "(" << endl;
                break;
            }
        case ')':
            {
                cout << Tmp << endl;
                for (j=0; j<100; j++) Tmp[j]=0; p=0;
                cout << ")" << endl;
                break;
            }
        default:
            {
                Tmp[p++]=sym;
            }
        }
    }
 
    if (strlen(Tmp) > 0) cout << Tmp << endl;
 
}
 
int main(int argc, char* argv[])
{
    Parse("(ax+dy)/(qwe-6.78*jjj)");
 
    return 0;
}
 
Текущее время: 12:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru