![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
blackhard |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
Помогите пожалуйста с написанием следующей программы: мне нужно написать программу выполняющую арефмитические операции над полиномами + - * например <2x^3+x^2-5x>*<23x+2> полином должен быть представлен ввиде упорядоченного списка мономов. Нам сказали использовать 2 структуры
Собственно вопрос у меня пока 1 как из этого сформировать список?Если я выделяю память под элемент TNode *beg=(TNode*)malloc(sizeof(TNode));выделится память и пою моном? |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата выделится память и пою моном? Нет... Нужно выделять самому, выделится только память под указатель на моном... Вот так:TNode *beg=(TNode*)malloc(sizeof(TNode)); |
blackhard |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
Нет... Нужно выделять самому, выделится только память под указатель на моном... Вот так: TNode *beg=(TNode*)malloc(sizeof(TNode)); Спасибо! А вот как потом эту память освобождать? Вначале проходимся по всему списку и делаем free(beg->monom), а потом просто free(beg)? Сообщение отредактировано: blackhard - 20.05.2008 18:18 |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Зачем же... Если у тебя уже есть список, и адрес его начала - в переменной start, то:
TNode *ptr, *T; |
blackhard |
![]()
Сообщение
#5
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
Все написал спасибо за помощь!
polimon.h
|
blackhard |
![]()
Сообщение
#6
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
Программа которую я написал может вычислять вот такие выражения<x^2-4x+12>*<23x+3>; , а как осуществить вычисления выражения вот такого рода (<12X^2+2x>+<12X^7+x+67>)*<x^2-x>.По сути это надо вычислять как выражение в инфиксной форме, но я же не могу засунуть в стек полином?Как можно реализовать подобное вычисление?
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Цитата Программа которую я написал может вычислять вот такие выражения<x^2-4x+12>*<23x+3>; Если б она еще делала это правильно - цены б ей не было. А пока смотри, что получается:<X^2-4X+12>*<23X+3> Хотя должно получиться 23X3-89X2+264X+36 Цитата я же не могу засунуть в стек полином? Что тебе мешает это сделать? Засунь указатель beg на полином (главное - чтобы поле данных стека позволяло, то есть, было того же типа, как и beg). Потом вытянешь его и сделаешь нужную операцию...А насколько все было бы проще при использовании С++... |
blackhard |
![]()
Сообщение
#8
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
Если б она еще делала это правильно - цены б ей не было. А пока смотри, что получается: Хотя должно получиться 23X3-89X2+264X+36 Эх считает она правильно ,а вот полином собирает криво (например <2x^2-1>*<3x^4+12x+1>; считает абсолютно верно) буду искать ошибку.Вот у меня возник тут еще 1 вопрос,надо мне еще сделать проверку на переполнение типа в который мы помещаем коэфициент и степень при формировании полинома и при операциях над ними.С отслеживанием переполнения при операциях проблем не возникло, а вот как реализовать отслеживание переполнения при формировании полинома?Грубо говоря как отследить возникнет ли переполнение при переводе строки в число? Сообщение отредактировано: blackhard - 25.05.2008 0:14 |
![]() ![]() |
![]() |
Текстовая версия | 24.07.2025 3:42 |