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

Калькулятор страуструпа - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ d= ? http://www.cyberforum.ru/cpp-beginners/thread958454.html
Подскажите,как записать формулу дискриминанта и корней из него ???
C++ Метод гаусса жордана в с++ Нужно написать код читающий Метод гаусса жордана! Пример http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0_%E2%80%94_%D0%96%D0%BE%D1%80%D0%B4%D0%B0%D0%BD%D0%B0 внизу! http://www.cyberforum.ru/cpp-beginners/thread958426.html
C++ Перебор элементов массива
Добрый день, ув. форумчане. В наличии следующий код: int i; WCHAR *slovo = {L"слово1", L"слово2", ..., L"слово1000"}; int slovo_length = sizeof(slovo)/sizeof(slovo); for(i=0; i<slovo_length; i++) {
Найти произведение всех элементов, расположенных на побочной диагонали C++
2.Найти произведение всех элементов, расположенных на побочной диагонали и выше ее, матрицы рамзмером 6х6,состоящей из элементов целого типа напишите пожалуйста
C++ hex редактор http://www.cyberforum.ru/cpp-beginners/thread958418.html
всем привет ) есть код #include <cstdlib> #include <fstream> #include <iterator> #include <stdlib.h> #include <stdio.h> using namespace std; int main () { char ima_faila ; int bufer;
C++ Найти количество отрицательных элементов в каждом столбце матрицы 1.Найти количество отрицательных элементов в каждом столбце матрицы размером 2х6, состоящей из элементов целого типа напишите пожалуйста Пункт 5.16 Правил: Одна тема - один вопрос. подробнее

Показать сообщение отдельно
maxon887
 Аватар для maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
20.09.2013, 12:29     Калькулятор страуструпа
Ну по крайней мере если это и не он, то очень на него похож.
Проблема в скобках.Например:
(1+1 - всё хорошо, выплывет ощибка "Expected right bracket"
1+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
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <iostream>
using namespace std;
enum TokenValue
{
    END,NUMBER,PLUS='+',MINUS='-',MUL='*',DIV='/',
    LB='(',RB=')'
};
TokenValue CurrentSymbol;
double CurrentNumber;
int errors;
 
double error(const char* s)
{
    cerr<<"Error: "<<s<<endl;
    errors++;
    return -1;
}
 
double expr();
TokenValue GetSymbol()
{
    char ch=0;
    ch=cin.get();
    switch(ch)
    {
    case'\n':
        return CurrentSymbol=END;
    case'1': case'2': case'3': case'4': case'5':
    case'6': case'7': case'8': case'9': case'0':
        cin.putback(ch);
        cin>>CurrentNumber;
        return CurrentSymbol=NUMBER;
    case'+': case'-': case'*': case'/':
    case'(': case')':
        return CurrentSymbol=TokenValue(ch);
    default:
        error("Imput error");
        return CurrentSymbol=END;
    }
}
 
double prim()
{
    switch(CurrentSymbol)
    {
    case NUMBER:
        GetSymbol();
        return CurrentNumber;
    case LB:
    {
        GetSymbol();
        double e=expr();
        if(CurrentSymbol!=RB)
            return error("Expected right bracket");
        GetSymbol();
        return e;
    }
    default:
        error("Primary expected");
        GetSymbol();
        return -1;
    }
}
 
double term()
{
    double left=prim();
    while(1)
    {
        switch(CurrentSymbol)
        {
        case MUL:
            GetSymbol();
            left *=prim();
            break;
        case DIV:
        {
            GetSymbol();
            double d=prim();
            if(d!=0)
                left /= d;
            else
                error("Division by zero");
            break;
        }
        default:
            return left;
        }
    }
}
 
double expr()
{
    double left=term();
    while(1)
    {
        switch(CurrentSymbol)
        {
        case PLUS:
            GetSymbol();
            left += term();
            break;
        case MINUS:
            GetSymbol();
            left -= term();
            break;
        default:
            return left;
        }
    }
}
 
int main()
{
    while(1)
    {
        GetSymbol();
        if(CurrentSymbol==END)
            continue;
        cout<<expr()<<endl;
    }
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru