Рекурсивная Обработка

Seriy1994

New member
15.01.2013
0
0
#1
Помогите пожалуйста! Задание:
Многочлен P(x)=anxn+an-1xn-1+…+a0 с целыми коэффициентами представьте в виде списка, причем, если ai=0, то соответствующее звено в список не включается. Описать процедуру Absol(P,Q), которая строит многочлен P – из модулей коэффициентов многочлена Q.

Вот код, но есть ошибки. Помогите, исправить очень надо!!!
C++:
#include "stdafx.h"
#include <iostream>
#include <list>
#include "stdio.h"
#include "conio.h"


using namespace std;

struct Polinom
{
int An;
int n;
};

void Absolv(list<Polinom> P,list<Polinom> Q)
{
list<Polinom>::iterator i=P.begin();
if (i!=P.end())
{
Polinom A;
A.An=abs((*i).top()).An;
A.n=((*i).top()).n;
i++;
Q.push_back(A);
Absolv((*i),Q);
}
return;
}

void main()
{
int n;
cout<<"N=";
cin>>n;
cout<<endl;
list<Polinom> polinom;
for (int i=0;i<=n;i++)
{
Polinom An;
cout<<"A"<<i<<"=";
cin>>An.An;
An.n=i;
if (An.An!=0){
lst.push_back(An);
}
_getch();
return;
}
 
R

rrrFer

#2
Вот код, но есть ошибки
какие ошибки?

Добавлено:
list<Polinom>::iterator i=P.begin();
A.An=abs((*i).top()).An;
Дальше читать не стал.
если i - итератор, то тип (*i) - Polinom
у класса Polinom нет метода top(), тут будет ошибка. Я не знаю как это исправить, т.к. твоя мысль тут вообще не понятна, чего ты хочешь этим кодом достичь?

Добавлено: все в тойже строке ты вызываешь abs, и передаешь туда результат работы top(), значит top() должна возвращать int.

abs вернет тебе тоже int (или long int), и вот у того что оно вернула ты ищешь поле An...откуда оно возьмется у стандартного int?