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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
VASSUV
MiThEoN
412 / 278 / 15
Регистрация: 31.10.2009
Сообщений: 418
Записей в блоге: 2
Завершенные тесты: 1
#1

что за точки - C++

17.04.2011, 16:58. Просмотров 297. Ответов 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
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include <string>
#include <sstream>
#include <iostream>
#include <fstream>
#include <vector>
 
COMPILER expr 
 
enum ExprType {t_id, t_num};
 
enum Operator { t_div, t_times, t_plus, t_minus};
 
std::vector<std::wstring> identlist;
 
int toInt(const std::wstring& strbuf)
{
    std::wstringstream converter;
    int value = 0;
 
    //converter.precision(4);
    //converter.fill('0');
    //converter.setf( std::ios::fixed, std::ios::floatfield );                              
 
    converter << strbuf;
    converter >> value;
    return value;
}
 
std::wstring toString ( int Number )
{
     std::wostringstream ss;
     ss << Number;
     return ss.str();
}
 
 
IGNORECASE
CHARACTERS
letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".
digit = "0123456789".
cr  = '\r'.
lf  = '\n'.
tab = '\t'.
 
TOKENS
ident  = letter {letter | digit | "_"}.
number = digit {digit}.
 
 
COMMENTS FROM "/*" TO "*/" NESTED
COMMENTS FROM "//" TO cr lf
 
IGNORE cr + lf + tab
 
PRODUCTIONS
 
expr (.std::wstring str;.) = (.std::wstring s,s1,s2,s3,s4; ExprType t1,t2;.) 
     ident (.s1=t.val; identlist.insert(s1);.)":=" NumExpr<s2,t1> ";" 
{
    ident (.s3=t.val; identlist.insert(s3);.)":=" NumExpr<s4,t2> ";" (.s=s3; s+=L":="; s+=s4; s+=L";\n";.)
}
     (.
          str=L"var ";
          for(int i=0; i<identlist.size(); i++)
          {
               str+=identlist[i];
               if(i!=ident.size()-1)
                    str+=L", ";
               else
                    str+=L":";
          }
          str+=L"integer;\n";
          str+=s1; str+=L":="; str+=s2; str+=L";\n";
          str+=s;
               
          std::wofstream outfile (L"out.txt", std::ios_base::out);
          outfile << str << std::endl;          
          outfile.close();
     .)           .
  
NumExpr<std::wstring &str, ExprType &t> = (.std::wstring s1,s2; operator op; ExprType t1,t2;.)
    Term<s1,t1> 
{ 
     ("+" (.op=t_plus;.)|"-" (.op=t_minus;.)) NumExpr<s2,t2>
     (.
          if(t1==t_num && t2==t_num)
          {
               t=t_num;
               int n;
               if(op==t_plus)
                    n=toInt(s1)+toInt(s2);
               else
                    n=toInt(s1)-toInt(s2);
                           
               str=toString(n);
          }
          else
          {
               t=t_id;
               str=s1;
               if(op==t_plus)
                    str+=L"+";
               else
                    str+=L"-";
               str+=s2;
          }
     .)
}.
 
Term<std::wstring &str, ExprTipe &t> =(.str::wstring s1,s2; ExprType t1,t2; Operator op;.) 
    Multiplier<s1,t1> 
{ 
     ("*" (.op=t_times;.)|"/"(.op=t_div;.)) Term<s2,t2> 
     (.
          if(t1==t_num && t2==t_num && op==t_times)
          {
               t=t_num;
               int n;
               n= toInt(s1)*toInt(s2);
               str=toString(n);               
          }
          else
          {
               t=t_id;
               str=s1;
               if(op==t_div)
                    str+=L"/";
               else
                   str+=L"*";
               str+=s2;
          }
     .)
}.
 
Multiplier<std::wstring &str, ExprType &t> = (.std::wstring s; ExprType t1;.)
     ident (.str=t.val; t=t_id; identlist.insert(t.val);.) 
          | number (.str=t.val; t=t_num;.)
               | "(" NumExpr<s,t1> ")" (.str=s; t=t1;.).
  
END expr.
обясните смысл точек во многих местах.

код объяснять не надо, его я так для примера выложил
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2011, 16:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос что за точки (C++):

Вычисление ближайшей точки, что не так? как переделать ? - C++
#include &lt;math.h&gt; #include &lt;iostream.h&gt; #include &lt;stdlib.h&gt; #include &quot;Point.h&quot; float randFloat() { return...

Определить кратчайшее расстояние от заданной точки до границы заданной фигуры, считая, что точка находится вне - C++
Определить кратчайшее расстояние от заданной точки до границы заданной фигуры, считая, что точка находится вне

Во введенной строке заменить все запятые на точки, а точки - на восклицательные знаки - C++
Во введенной строке заменить все запятые на точки, а точки - на восклицательные знаки. Подсчитать количество сделанных замен.

Во введенной строке заменить все запятые на точки, а точки - на восклицательные знаки - C++
15. В введенной строке заменить все запятые на точки, а точки - на восклицательные знаки. Подсчитать количество таких замен. почему оно...

Вывести расстояние от заданной точки до точки пересечения диагоналей прямоугольников - C++
Прямоугольники заданы координатами их вершин. 1)Вывести расстояние от заданной точки до точки пересечения диагоналей. 2) Вывести...

Как найти координаты точки на прямой удаленной от заданной точки на х - C++
Добрый день! Помогите мне пожалуйста со следующей задачей. Дано 3 точки с координатами A(x1,y1), B(x2,y2), C(x3,y3) Нужно найти...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
17.04.2011, 17:05 #2
" :: " - это обращение к какому-то пространству имен... Мол, типа, ты будешь использовать всякие функции и прочие "вещицы" из этого пространства... Очень удобная штука

после подключения библиотек можно дописать
C++
1
using namespace std;
- ты подключил это пространство...
тогда можно убрать все " std:: " и спокойно продолжать программировать!
0
VASSUV
MiThEoN
412 / 278 / 15
Регистрация: 31.10.2009
Сообщений: 418
Записей в блоге: 2
Завершенные тесты: 1
17.04.2011, 17:07  [ТС] #3
Цитата Сообщение от Mиxaил Посмотреть сообщение
::
Я не про эти точки, а про те кот. всречаются единожды

Файл в котором я нашел этот код, имел расширение atg
может чем то поможет
0
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
17.04.2011, 17:08 #4
Например, вот такие?
C++
1
 ("+" (.op=t_plus;.)|"-" (.op=t_minus;.)) NumExpr<s2,t2>
0
VASSUV
MiThEoN
412 / 278 / 15
Регистрация: 31.10.2009
Сообщений: 418
Записей в блоге: 2
Завершенные тесты: 1
17.04.2011, 17:16  [ТС] #5
Цитата Сообщение от VASSUV Посмотреть сообщение
(.op=t_times;.)
например вот такие (. ___ .)

Добавлено через 5 минут
и такие ).
или даже такие }.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2011, 17:16
Привет! Вот еще темы с ответами:

Найти точки пересечения прямых проходящих через заданные точки - C++
Всем привет! Прошу помощи в решении задачи: Дана система координат X:Y (по 25 точек в каждую сторону) В ней расположен ряд точек в...

В символьной строке вместо каждой точки вставить три точки - C++
В символьной строке типа char, вводимой с клавиатуры вместо каждой найденной точки вставить три точки Желательно использовать только...

Массив, заполненный 1 и 0. Найти путь, состоящий из нулей, от точки до точки. - C++
Доброго времени суток всем! Вот такая задача, ничего не могу даже сообразить по ней, подкиньте идеи, пожалуйста (ну или код в C++ )

Найти координаты самой низкой точки траектории и другой наивысшей точки подъема - C++
помогите решить пожуйста очень надо...не используя некакие циклы и ветвленее..они тока на алгоритмы линейные задачки 1.Заданы...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.04.2011, 17:16
Ответ Создать тему
Опции темы

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