Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121

Программа для решения уравнений челенж)

27.10.2018, 21:36. Показов 5650. Ответов 16

Студворк — интернет-сервис помощи студентам
Добрый день!) Я новичок в C++. И, чтобы можно было приблизительно оценить мой уровень познаний: Почти дочитана (осталось буквально страниц 30) книга Г. Шилдта C++ для начинающих шаг за шагом.

Уже недели 2 бьюсь над собственной идейкой: написать программу, которая будет решать уравнения. Под программой, которая будет решать уравнения, я имею в виду программу, которая будет принимать уравнение с неизвестным заранее количеством чисел. То есть, например, вводится:
2 + 5 * 2 *x + 7 = 15
или:
15-7+6-x = 1 - 3
ну или:
(2-3) * x = 5- 17 * 2

По задумке должны соблюдаться приоритеты арифметических операций.

Если кто-то сможет написать эту программу, то буду невероятно благодарен так как уже просто все идеи исчерпались и даже не знаю как бы это написать )00)0) Очень интересно будет посмотреть на решение чисто для собственного развития.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.10.2018, 21:36
Ответы с готовыми решениями:

Программа для решения уравнений
Помогите написать програму для уравнений z1=1-1/4*sin^2*2(альфа)+cos2(альфа) z2=cos^2(альфа)+cos^4(альфа)

Программа для решения хим. уравнений
Здравствуйте форумчане! Мне нужна ваша помощь!!! Я хочу сделать программу для решения ХИМИЧЕСКИХ УРАВНЕНИЙ. Как только я начал столкнулся с...

Нужна программа для решения системы математических уравнений
Написать программу для решения системы математических уравнений для диапазона чисел от 1,5 до 15 с шагом прироста 0,6. y =...

16
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
27.10.2018, 21:54
JustLearn, а как ты хочешь, чтобы эти уравнения решались: численно или аналитически? Какого вида уравнения: только линейные, или еще и нелинейные?
Цитата Сообщение от JustLearn Посмотреть сообщение
все идеи исчерпались
А какие у тебя были идеи?
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
28.10.2018, 10:14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
 
int main() {
    std::string input;
    std::getline(std::cin, input);
 
    double x = 0;
    if (input == "2 + 5 * 2 *x + 7 = 15") {
        x = 0.6;
    } else if (input == "15-7+6-x = 1 - 3") {
        x = 16;
    } else if (input == "(2-3) * x = 5- 17 * 2") {
        x = 29;
    } else {
        abort();
    }
 
    std::cout << "x = " << x << std::endl;
}
1
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
28.10.2018, 16:36  [ТС]
nonedark2008, я не совсем поминаю ваш вопрос. Что значит численно или аналитически.
У меня были следующие идеи:
Ввести уравнение, как строку.
Создать класс
C++
1
2
3
4
5
6
class equation {
int amount1, int amount2;// переменные для подсчёта чисел в левой и правой частях уравнения.
int unk_amount1, int unk_amount2; // переменные для подсчёта иксов в левой и правой частях уравнения
// unk - unknown - неизвестная
char eq[80]; //уравнение
};
Затем сосчитать числа и иксы в левой части. Для этого создаю цикл for(int i = 0; ob.eq[i] != '='; i++)
в нем ищутся знаки * или /, за ним организовывается следующий цикл for(int i = 0; ob.eq[i] != '='; i++) в котором будут искаться знаки +/-. При нахождении знака, находятся операнды влево и вправо от знака. Для нахождения результата операции у меня организовано три функции длинной в 184 строк. Первая: перевод из строки в число(только целое, т.к. с дробными париться пока не хочу) при поиске операнда влево от знака. Вторая: перевод из строки в число (тоже только в целое) при поиске операнда вправо от знака. И затем третья, которая применяя предыдущие две функции непосредственно находит результат операции. Первая и вторая работают. А третья, как я уже говорил не дописана.



Потом в правой части уравнения тоже самое .

По сути проблема в том, чтобы посчитать иксы и числа в левой и правой частях с приоритетом операций. Посчитав их уже в принципе не составит труда найти искомое значение x.

Добавлено через 1 минуту
Kastaneda, нееет)) Вы не поняли) Так-то любой сможет))) Я имею в виду написать программу так, чтобы она принимала уравнение, сама его считала и выводила x.

Добавлено через 54 минуты
nonedark2008, линейные.
0
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
28.10.2018, 18:26
JustLearn, правильно ли я понимаю, что вы хотите написать систему символьного решения уравнений?
Посмотрите на язык Prolog.
0
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
28.10.2018, 21:28  [ТС]
New man, мне в принципе без разницы как именно эту программу реализовать. Это просто единственный способ, который я придумал.
На счёт prolog'a: нееет)) Я почитал про него что-то не впечатляет))) Да и вообще в интернете есть решалки уравнений онлайн. Сомневаюсь, что их писали на prolog'e
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
28.10.2018, 21:28
Цитата Сообщение от JustLearn Посмотреть сообщение
Что значит численно или аналитически.
Аналитически - это значит, что программа пытается найти решение, опираясь на структуру уравнения. Т.е. будет решать примерно так, как бы ты ее решал на бумажке, выражая x относительно остальных членов уравнения. Численно - будет по какому-либо алгоритму перебирать x в поиске правильного решения.

По поводу ввода уравнения. Тебе необходимо изучить лексический и синтаксический анализ. И в идеале построить синтаксическое дерево твоего уравнения.
0
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
28.10.2018, 21:31  [ТС]
Мучаюсь идеей уже 2 недели Никак не может оставить то, что я не могу это написать))) Но уже начал понимать, что видимо не придумать мне, как это сделать. Поэтому решил посмотреть, как другие реализуют программку)
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
28.10.2018, 22:02
Цитата Сообщение от JustLearn Посмотреть сообщение
Никак не может оставить то, что я не могу это написать
Просто помимо знаний C++ для решения этой задачи необходимо разбираться в математической логике и вычислительной математике.
Предлагаю тебе почитать Страуструпа, там есть то, что будет тебе полезно для решения этой задачи.
0
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
30.10.2018, 21:42  [ТС]
nonedark2008, какую-то конкретную книгу Страуструпа?
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
30.10.2018, 22:05
Цитата Сообщение от JustLearn Посмотреть сообщение
какую-то конкретную книгу Страуструпа?
Тык
0
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
14.11.2018, 17:55  [ТС]
nonedark2008, Вы читали её? Хорошая книга?
0
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
14.11.2018, 18:06
Цитата Сообщение от JustLearn Посмотреть сообщение
Вы читали её? Хорошая книга?
Складывается ощущение, что ты пытаешься всех обмануть и получить готовую программу, чтобы сдать ее в виде курсовой или дипломной даже, может быть. Тебе уже дважды сказали, что тебе нужно читать для того, чтобы реализовать твою идею.
Цитата Сообщение от nonedark2008 Посмотреть сообщение
изучить лексический и синтаксический анализ
Цитата Сообщение от nonedark2008 Посмотреть сообщение
построить синтаксическое дерево твоего уравнения
Цитата Сообщение от nonedark2008 Посмотреть сообщение
почитать Страуструпа
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Тык
Некоторые темы можешь взять отсюда.
0
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
14.11.2018, 19:54  [ТС]
Цитата Сообщение от JustLearn Посмотреть сообщение
nonedark2008, какую-то конкретную книгу Страуструпа?
Цитата Сообщение от JustLearn Посмотреть сообщение
nonedark2008, Вы читали её? Хорошая книга?
Nishen, мои вопросы говорят о заинтересованности в прочтении чего-либо, чтобы овладеть такими знаниями не так ли?
Цитата Сообщение от Nishen Посмотреть сообщение
Складывается ощущение, что ты пытаешься всех обмануть и получить готовую программу, чтобы сдать ее в виде курсовой или дипломной даже, может быть. Тебе уже дважды сказали, что тебе нужно читать для того, чтобы реализовать твою идею.
Вовсе нет. Я поставил себе цель создать программу для решения уравнений и хочу её реализовать. Т.к. понимаю, что тупо учить синтаксис языка без применений знаний на чём-то крупном бесполезно. Если такие программы кто-то пишет, то должен быть какой-нибудь способ, как это сделать.
Но допустим мне бы это нужно было для курсовой. И что в этом такого? А вот твой ответ не по теме тут не кстати. Лучше бы помог мне и подкинул ещё список какой-нибудь литературы.
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
14.11.2018, 22:32
Цитата Сообщение от JustLearn Посмотреть сообщение
Вы читали её? Хорошая книга?
Книга хорошая, я с ней ознакомился, но от корки до корки не читал. Предложил ее, потому что помимо базовых знаний по C++ она также частично покрывает и интересущую тебя тему. А так, можешь смело отдельно брать любую хорошую книгу по C++ и отдельно - по теории автоматов.
0
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
18.11.2018, 13:40  [ТС]
Цитата Сообщение от nonedark2008 Посмотреть сообщение
А так, можешь смело отдельно брать любую хорошую книгу по C++ и отдельно - по теории автоматов.
Почитал в википедии про теорию автоматов и что-то не совсем понятно что это такое и зачем вообще нужно :/
Можете объяснить простым языком?
P.S. nonedark2008, мне 13 лет. Если Вам не трудно, можете объяснить как можно проще, что такое автомат, желательно без какой-то строгой терминологии?
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
18.11.2018, 14:58
Цитата Сообщение от JustLearn Посмотреть сообщение
Можете объяснить простым языком?
Уравнения представляют из себя высказывания на некотором языке (языке математических уравнений). У этого языка есть свой алфавит (символы, которые в нем могут встречаться). То, как из заданных символов можно составлять уравнения, описывается грамматикой этого языка. Например, в грамматике указано, что число - это некоторый набор цифр, уравнение - это формула = формула, формула - это либо просто число, либо другая формула в круглых скобках, либо формула операция формула. Типа такого. В зависимости от того, как составлена грамматика, существуют различные алгоритмы анализа. Отталкиваясь от грамматики и выбранного алгоритма ты уже можешь начинать писать какой-то код...

Цитата Сообщение от JustLearn Посмотреть сообщение
что такое автомат
Я некорректно выразился, тебе не особо нужны именно автоматы, просто они бок о бок идут с тем, что тебе необходимо. Если быть более конкретным, тебе нужна теория формальных языков и грамматик. Если тебе нужна не просто сухая теория, а что-то приближенное к программированию, то советую еще прочесть книгу Компиляторы. Принципы, технологии и инструментарий.

Цитата Сообщение от JustLearn Посмотреть сообщение
мне 13 лет
Советую первым делом вытянуть свои знания по C++, структурам данных и алгоритмам на должный уровень. Почитай книги из обширного списка, представленного на нашем форуме. Если руки чешутся поскорее подойти к решению интересующей тебя задачи, то я уже назвал тебе книги, которые считаю подходящими.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.11.2018, 14:58
Помогаю со студенческими работами здесь

Почему программа для решения квадратных уравнений не выводит конечный ответ?
При запуске программа работает только в случае, если D&lt;0 или при первых двух условиях, а если D&gt;=0, то программа ничего не выводит....

Программа для решения уравнений
Доброго всем времени суток ! Прошу пожалуйста попробовать помочь мне разобраться с кодом в Делфи .Мне нужно написать програму с циклами для...

Программа для решения квадратных уравнений
Изучаю VB не давно, решил составить прогу для решение кв. уравнений помогите что я не так делаю? Dim a As Integer =...

Программа для решения квадратных уравнений
В общем надо написать прогу для расчета корней квадратного уравнения. Вот что у меня получилось: int a =...

Программа для решения квадратных уравнений
Здравствуйте! Я написал программу, решающую квадратные уравнения. Все работает. Только есть одна проблема. Она заключается в том, что...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru