Написать программу, которая считает сумму, разность и произведение двух введенных с клавиатуры (или из файла)
многочленов, записанных в виде строк.
Пример:
a= «X^2+2X-1», b=«X^2-4X+2»
a+b = «2X^2-2X+1»
a-b = «6X-3»
a*b = «X^4-2X^3-7X^2+8X-2»
как оформить обработку строк, логика самой программы очевидна, на perl мне понадобилось бы 3 строки, но что делать тут не ясно
Другие языки программирования и технологии
помогите с кодом на плюсах, меня интересует лишь формальный синтаксис
могу предположить что для начала парсишь строку по важности
сначало ^, *, / потом +, -
хотя я понял, тут всё хуже...
math.ivanovo.ac. ru /dalgebra/Khashin/poly/index_r.html
сначало ^, *, / потом +, -
хотя я понял, тут всё хуже...
math.ivanovo.ac. ru /dalgebra/Khashin/poly/index_r.html
Думаю стоит создать массив под каждый a и b
Каждый последующий элемент массива будет X в какой-то степени
к примеру:
a = «X^2+2X-1»
массив будет
-1, 2, 1
потом будет легко расшифровать в -1+2*x+1*x^2
Соответственно b= 2, -4, 1
Операции при этом будут аналогичны операциям со строками матриц.
a+b = -1+2, 2-4, 1+1
И тп. учитывая при умножении что x^2 *x^2 уже пойдет в значение по третьему индексу.
После этого, с обработкой тоже особых вопросов не возникает.
Считывай между знаками, убирай иксы- все что после ^- возведения в степень, то индекс ячейки, если "^"- нет индекс = 0
Все что до "X"- значение ячейки.
std::string a = "X^2+2X-1"
int n =0;//начало рассматриваемого куска строки
int m = 0;// конец
std::string current_part = "";
while(n<a.length){
if (a[m]!= знак) {
m++;
}
else{
current_part = a.substr(n,m);
}
//Ну и дальше в таком духе. Загоняешь в цикл уже current_part ищешь ^, определяешь что перед "X" и загоняешь в массив.
}
}
ps.
http://www.cplusplus.com/reference/string/
Вот немного функций по работе со строками.
Каждый последующий элемент массива будет X в какой-то степени
к примеру:
a = «X^2+2X-1»
массив будет
-1, 2, 1
потом будет легко расшифровать в -1+2*x+1*x^2
Соответственно b= 2, -4, 1
Операции при этом будут аналогичны операциям со строками матриц.
a+b = -1+2, 2-4, 1+1
И тп. учитывая при умножении что x^2 *x^2 уже пойдет в значение по третьему индексу.
После этого, с обработкой тоже особых вопросов не возникает.
Считывай между знаками, убирай иксы- все что после ^- возведения в степень, то индекс ячейки, если "^"- нет индекс = 0
Все что до "X"- значение ячейки.
std::string a = "X^2+2X-1"
int n =0;//начало рассматриваемого куска строки
int m = 0;// конец
std::string current_part = "";
while(n<a.length){
if (a[m]!= знак) {
m++;
}
else{
current_part = a.substr(n,m);
}
//Ну и дальше в таком духе. Загоняешь в цикл уже current_part ищешь ^, определяешь что перед "X" и загоняешь в массив.
}
}
ps.
http://www.cplusplus.com/reference/string/
Вот немного функций по работе со строками.
Обратная польская запись (нотация) - погугли.
Думаю, можно найти и пример реализации на плюсах.
Думаю, можно найти и пример реализации на плюсах.
Константин Дембель
мне нужно не это
Похожие вопросы
- Помогите исправить код чтобы он считал балы теста Pascal
- Всем привет, помогите в коде разобраться С++, вылетает ошибка, вроде все правильно..
- Помогите, лёгкий код C++
- Помогите с кодом на c++
- Помогите откорректировать код в C++
- Помогите с кодом С++
- помогите переписать код с паскаля на c++
- Помогите с кодом в Delphi, пожалуйста!
- кто разбирается в html? дали легкое задание, но я вообще 0. Помогите с кодом
- С++ Помогите дописать код? Как дописать сумму???