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

Разбор математических выражений - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка http://www.cyberforum.ru/cpp-beginners/thread180621.html
Имеется довольно большой список людей, родившихся в США, с указанием штата, в котором они родились. Как подсчитать тех, кто родился в каждом штате? (Предпологается, что ни один человек не указан более одного раза. Как написать эту программу на СИ? Напишите ее с комментариями пожалуйста...или можно скинуть другую программу похожую.
C++ LSD сортировка Требуется написать LSD сортировку на массиве строк. В нете много этих сортировок только они на биты и байты. Помогите реализовать, плиз.!! http://www.cyberforum.ru/cpp-beginners/thread180615.html
C++ Метод Шелла
попробовала написать это в С++, но что-то не так. можете подсказать #include <iostream.h> #include <conio.h> #include <stdio.h> #include <math.h> int main(int argc, char* argv) { int i,n,j,inc,x; cin>>n; int *A= new int ;
C++ Четные в начало массива, нечетные - в конец
четные в начало массива выводит, а вот нечетные не хочет.. пишет вместо них какие-то тысячные числа, которых в исходном массиве нет. пробовал поступить так же как и с четными, перенести в другой массив.. тоже самое получается. например исходный массив 1 2 3 4 5 6 выводит 2 4 6 2343 35546 6443 подскажите пожалуйста, как исправить # include <iostream.h> # include <stdlib.h>
C++ Есть файл написанный в borland 3.1. Мне его нужно открыть и откомпилировать. http://www.cyberforum.ru/cpp-beginners/thread180598.html
Есть файл написанный в borland 3.1. Мне его нужно открыть и откомпилировать. Но не получается с borland ничего запускаю файл BC.EXE, открывается окно и зависает. Подскажите пожалуйста где взять рабочий borland 3.1 или какой нибудь другой компилятор который сможет открыть этот файл!!!
C++ Баг в программе по вычислению обратной матрицы Программа по нахождению обратной матрици!!! не могу найти ошибку - выдаёт одни и те же ответы!!! #include <stdio.h> #include <conio.h> void main() { int a1,a2,a3,b1,b2,b3,c1,c2,c3; int a11,a12,a13,a21,a22,a23,a31,a32,a33; int x1,x2,x3,x4,x5,x6,x7,x8,x9; подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
24.10.2010, 11:06     Разбор математических выражений
Предлагаю через суффиксную нотацию:
1. Считаем элементы исходного выражения, за исключением скобок.
В выражении:
(2*x^2+1)+x^2-4 элементами будут: 2, *, x, ^, 2, +, 1, +, x, ^, 2, - 4. Всего 13.
2. Создаём массив элементов такого размера.
3. Заполняем его в прямом порядке:
2, *, x, ^, 2, +, 1, +, x, ^, 2, - 4.
4. С операторами ассоциируем базовые приоритеты:
2, *, x, ^, 2, +, 1, +, x, ^, 2, - 4.
2 3 1 1 3 1
5. После каждой открывающейся скобки повышаем приоритеты на 3 до следующей закрывающей:
2, *, x, ^, 2, +, 1, +, x, ^, 2, - 4.
5 6 4 1 3 1
6. Все операторы проталкиваем вперёд на 1 шаг:
2, x, *, 2, ^, 1, +, x, +, 2, ^, 4, -
5 6 4 1 3 1
7. В цикле по операторам от первого до предпоследнего проталкиваем каждый оператор, находящийся перед оператором с большим приоритетом вперёд, пока следующий за ним не будет иметь меньший приоритет:
2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, -
6 5 4 3 1 1
8. Готово.
Теперь расчёт. Пусть x=3, Понадобится стек, сначала он пуст. Красным крашу до текущей позиции.
2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, -
константу в стек:
2
2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, -
значение переменной в стек:
2
3
2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, -
константу в стек:
2
3
2
2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, -
извлекаем два элемента, возводим один в степень другого и результат помещаем в стек:
2
9
2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, -
извлекаем два элемента и помещаем в стек их произведение:
18
2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, -
константу в стек:
18
1
2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, -
извлекаем два элемента и сумму помещаем в стек:
19
2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, -
значение переменой в стек:
19
3
2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, -
константу в стек:
19
3
2
2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, -
извлекаем два элемента, возводим один в степень второго, результат помещаем в стек:
19
9
2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, -
извлекаем два элемента, их сумму помещаем в стек:
28
2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, -
константу в стек:
28
4
2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, -
извлекаем два элемента, вычитаем один из другого, результат помещаем в стек:
24
Достигнут конец выражения, извлекаем элемент стека и возвращаем в качестве значения выражения.
 
Текущее время: 12:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru