Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ найти ошибку.Массив https://www.cyberforum.ru/ cpp-beginners/ thread1037844.html
Задание- Дана целочисленная квадратная матрица.Определить: 1)сумму элементов в тех столбцах,которые не содержат отрицательных элементов 2)минимум среди сумм модулей элементов второстепенной...
C++ Пользователь вводит две пары вещественных чисел: k 1,b1 и k 2,b2. Составить функцию для определения точки пересечения двух прямых y=k1x+b1 и y=k2x+b2, https://www.cyberforum.ru/ cpp-beginners/ thread1037892.html
Пользователь вводит две пары вещественных чисел: k1,b1и k2,b2. Составить функцию для определения точки пересечения двух прямых y=k1x+b1 и y=k2x+b2, которая получает введенные числа в качестве... #include <iostream> struct line { double k; double b; line(double factor_k, double factor_b): k(factor_k), b(factor_b) {} }; struct coord {
C++ Шаблон структуры данных
Всем привет, в универе дали задание, не понимаю совсем, напишите пожалуйста, Разработать шаблоны структуры данных в памяти. Тип хранимого элемента – параметр шаблона. Шаблон может содержать... вверх
Обработка текстового файла C++
Уважаемые программисты,очень нуждаюсь в вашей помощи! Общее задание Необходимо разработать программу, обеспечивающую обработку текстового файла. Программа после запуска выводит на экран...
C++ Из вещественного в строку https://www.cyberforum.ru/ cpp-beginners/ thread1037899.html
как тип double превратить строку? конкретней? есть тип double a=4.2 и есть тип char str; нужно, чтобы str имела строковое значение типа a (4.2), т.е. переменную "a" преобразовать в строку
C++ написать класс для нахождения суммы обыкновенных дробей с выделенной целой частью
Написать класс, для нахождения суммы обыкновенных дробей с выделенной целой частью. Ограничения:перегрузка операции "+" для нахождения суммы дробей; перегрузка операций потокового ввода и вывода для...
C++ Не удаётся сложить матрицы
У меня описан класс матрица. Матрицы на экран я вывел и предусмотрел дружественную функцию проверки сложения матриц... Но у меня не получается сделать ещё одну дружественную функцию сложения этих...
C++ Считывает текст с файла и выводит в другой файл Здравствуйте, уважаемые) По возможности помогите с написанием кода, буду очень благодарен. Условие: Написать программу, которая считывает текст с файла и выводит в другой файл и на экран только... Помогите переделать этот код под мое условие) #include <fstream> #include <iostream> #include <string> #include <vector> int main() { std::ifstream ifs("input.txt"); https://www.cyberforum.ru/ cpp-beginners/ thread1037883.html
C++ Одномерный массив B[n] и преобразовать его следующим образом Здравствуйте! Подскажите пожалуйста, как решить такую задачу: Одномерный массив B и преобразовать его следующим образом: 1) увеличить каждый элемент массива на максимальный элемент 2) найти... #include <iostream> #include <ctime> #include <algorithm> #include <iterator> template<class T>void sort(int* mas, int low, int N) { int i = low; int j = N; int pivot = mas; for(i, j; i... https://www.cyberforum.ru/ cpp-beginners/ thread1037871.html C++ Баг в программе https://www.cyberforum.ru/ cpp-beginners/ thread1037893.html
Доброго времени суток,форумчане. Задача такова: Массивв символов,содержащий 16-ое представление чисел. Надо перевести hex в dec. Баг в 16-ом представлении чисел, 10-ые работают нормально. ... Баг в 16-ом представлении чисел, 10-ые работают нормально. см комментарии: //Обрабатываем символы A-F if(m>=65) { cout<<(int)m<<endl; //hh=(pow(16,dlina-i))*(10+(m-65)); ...
C++ Дан квадрат https://www.cyberforum.ru/ cpp-beginners/ thread1037831.html
Дан квадрат (длина стороны и координаты левого верхнего угла) и треугольник (координаты вершин). Определить, находится ли треугольник целиком в квадрате. Стороны квадрата параллельны осям координат.
C++ Найти максимальный и минимальный элементы матрицы
Дана матрица А(nxn). Написать программу, которая находит максимальный и минимальный элементы этой матрицы и переставляет столбцы и строки так, чтобы эти элементы поменялись местами. Напишите... #include <iostream> #include <time.h> #include <stdlib.h> #include <iomanip> using namespace std; int main() { int n=4, m=3; int mas; int max_el, min_el, imax, jmax, imin, jmin;
Xref
11.12.2013, 22:49 0

Простейший калькулятор на YACC - C++ - Ответ 5477617

11.12.2013, 22:49. Показов 2929. Ответов 2
Метки (Все метки)

Ответ

Наверно тут придётся ввести ещё один вид токена — целое число. Грамматика станет чуть больше, придётся описать ещё раз все операции для целых чисел. Приблизительно так:

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
%{
#include <stdio.h>
typedef union {
    int int_val;
    double double_val;
} YYSTYPE;
%}
%token<double_val> DATA
%token<int_val> IDATA
%left '+' '-'
%left '*' '/' '%'
%type<double_val> wyrag spisok
%type<int_val> int_wyrag
%%
spisok :
| spisok '\n'
| spisok wyrag '\n' { printf("\t%g\n", $2); }
;
wyrag : DATA { $$ = $1; }
| wyrag '+' wyrag { $$ = $1 + $3; }
| wyrag '-' wyrag { $$ = $1 - $3; }
| wyrag '*' wyrag { $$ = $1 * $3; }
| wyrag '/' wyrag { $$ = $1 / $3; }
| int_wyrag { $$ = (double) $1; }
| '(' wyrag ')' { $$ = $2; }
;
int_wyrag : IDATA { $$ = $1; }
| int_wyrag '+' int_wyrag { $$ = $1 + $3; }
| int_wyrag '-' int_wyrag { $$ = $1 - $3; }
| int_wyrag '*' int_wyrag { $$ = $1 * $3; }
| int_wyrag '/' int_wyrag { $$ = $1 / $3; }
| int_wyrag '%' int_wyrag { $$ = $1 % $3; }
| '(' int_wyrag ')' { $$ = $2; }
%%
То есть пока числа целые — над ними можно выполнять операцию взятия остатка. Как только в операциях появились числа с плавающей точкой — эту операцию выполнять нельзя. YYSTYPE объявляется как union, чтобы хранить значения разных типов в зависимости от ситуации. С помощью %type указывается, какой элемент нужно использовать для получения/записи значения. Аналогичная ситуация при объявлении токенов.
В лексере нужно будет в зависимости от числа на входе присваивать значение либо yylval.double_value, либо yylval.int_value, и возвращать DATA или IDATA соответственно.

Вернуться к обсуждению:
Простейший калькулятор на YACC C++
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.12.2013, 22:49
Готовые ответы и решения:

Простейший калькулятор
Всем привет :) Это одна из самых первых моим программ в C++. Решил попробовать простейший калькулятор сделать с 4 функциями. Почему-то...

Простейший калькулятор
Не нашел ни одного хорошего кода калькулятора для новичков. Чтобы они поняли как устроены конструкции else, if. Вот, может кому...

Простейший калькулятор
Есть код на решение примеров +,-,*. при запуске знаков или не видно или они не правильно стоят.((( Заранее багодарен. ...

2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.12.2013, 22:49
Помогаю со студенческими работами здесь

Простейший калькулятор
Калькулятор считает сумму, разность, произведение и частное двух чисел a и b Код: #include &lt;stdio.h&gt; #include...

Простейший калькулятор
Хотел написать простейший калькулятор с возможностями +-/*, но компилятор выдал аж 13 ошибок утверждающих что я должен ставить ; перед...

Написать простейший калькулятор
задача на оператор выбора С++ Написать программу, которая вводит 2 числа и символ операции (*,/,-,+). Затем в зависимости от символа,...

Не могу найти ошибку "Простейший калькулятор"
есть код #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; void main() { int a, b, z; char znak; cout &lt;&lt; &quot;Input...

Простейший калькулятор
Доброго времени суток! Только начал изучать Java. До этого с программированием не сталкивался, поэтому код может быть мягко сказано не...

0
Новые блоги и статьи
Использование пакета Context в Golang
bytestream 03.03.2025
Управление параллельными процессами в современных приложениях - сложная задача, особенно когда речь идет о микросервисной архитектуре и распределенных системах. Пакет context в Go - это гибкое. . .
WebAssembly и Go: Работа с DOM и обработка ошибок
bytestream 03.03.2025
WebAssembly представляет собой технологию, позволяющую запускать низкоуровневый код в браузере практически на нативной скорости. Особенно интересные возможности открываются при использовании. . .
WebAssembly и Go: Создание высокопроизводи­­тельных веб-приложений
bytestream 03.03.2025
WebAssembly - это технология, изменившая подход к созданию высокопроизводительных веб-приложений. До появления WebAssembly JavaScript оставался единственным языком программирования, который понимали. . .
Контексты в Go: отмена, тайм-ауты и распространение
bytestream 03.03.2025
В многопоточном программировании существует множество ситуаций, когда необходимо прерывать выполнение горутин или ограничивать время их работы. Отсутствие грамотного управления параллельными. . .
WebSocket в Go: создание масштабируемых real-time приложений
bytestream 03.03.2025
Веб-приложения все чаще требуют обработки данных в режиме реального времени. Традиционный подход с использованием HTTP-запросов имеет существенные ограничения для таких сценариев. При каждом запросе. . .
Как дебажить в Go: Руководство по отладке
bytestream 03.03.2025
Отладка в Go имеет свои особенности, связаные с строгой типизацией, моделью конкурентности и управлением памятью. Go предоставляет богатый набор встроеных средств для отладки, которые дополняются. . .
Быстрый map в Go со Swiss Table
bytestream 03.03.2025
Swiss Table - это не просто очередная оптимизация существующего решения, а принципиально новый подход к организации данных в памяти. В основе лежит идея группового зондирования с использованием. . .
Пакет Context в Go и управление потоками
bytestream 03.03.2025
Context - один из наиболее важных и часто используемых пакетов в Go, предоставляющий возможности для управления жизненным циклом операций, отмены запросов и передачи значений между горутинами. Этот. . .
Суммирование октав синего шума, как шум Перлина в C++
bytestream 03.03.2025
Создание реалистичных процедурных текстур, ландшафтов и эффектов требует понимания различных типов шума и их характеристик. Синий шум, в отличии от более распространенного белого шума, обладает. . .
Двумерный итератор перемешивания с низким расхождением в C++
bytestream 03.03.2025
В компьютерной графике и вычислительной математике часто возникает потребность в эффективном перемешивании двумерных данных с сохранением определенных статистических свойств. Особую значимость. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru