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

Рекурсивная обработка списков - C++

Восстановить пароль Регистрация
 
Serdox
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 32
14.01.2013, 23:57     Рекурсивная обработка списков #1
Помогите пожалуйста!!! Очень надо! Дано задание, я весь интернет излазил 2 час думаю, ничего в голову не приходит! Как писать данную программу может кто строку кода скинуть или хотя бы предложения как это всё осуществить! Очень надо!

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

Надеюсь на вашу помощь!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
15.01.2013, 00:25     Рекурсивная обработка списков #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <list>
using namespace std;
struct Polinom
{
int An;
int n;
};
 
list<Polinom> Absolv(list<Polinom> P)
{
list<Polinom> Q;
for (list<Polinom>::iterator i=P.begin();i!=P.end();i++)
{
Polinom A;
A.An=abs((*i).An);
A.n=(*i).n;
Q.push_back(A);
}
return Q;
}
 
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);
}
 
return;
}
Как-то так. Делал без алгоритмов что б попроще было.

Добавлено через 1 минуту
А тьфу ты нуты, рекурсией надо, щя 5 сек.

Добавлено через 13 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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);
Abslv((*i),Q);
}
return;
}
Наверное как-то так.
Serdox
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 32
15.01.2013, 00:29  [ТС]     Рекурсивная обработка списков #3
Wolkodav, Спасибо большое!
А ты не мог бы ещё пояснить, что ты здесь делаешь, а то я что-то не всё понимаю! Небольшие коменты написать какие нибудь.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
15.01.2013, 00:36     Рекурсивная обработка списков #4
Ну include- подключение библиотек
using- подключение пространства имён
Потом объявление структуры полином, ну коэфициент в полиноме
Потом объявление функции, она ничего не возвращает, на вход два списка коэфициентов полиномом. СОздаём итерарот он указывает на начала, проверяем не равен ли конец началу, если нет, до в Q-добавляем новый элемент согласно условию, ну и собственно говоря рекурсия. Иначе нам ничего не надо делать, мы дошли до конца.
Потом сам собственно говоря main()
Читаем наивышую степень N, считываем коэфициенты в список. Вот и всё.

Да и в функции
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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);
return Abslv((*i),Q);
}
return;
}
То ли этот, то ли предыдущий вариант правильный, если честно сообразить не могу. Проверьте, какой-то из них.
Serdox
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 32
15.01.2013, 00:52  [ТС]     Рекурсивная обработка списков #5
В общем, у меня такая ошибка выходит:
void Absolv(list<Polinom> P,list<Polinom> Q)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
{
list<Polinom>::iterator i=P.begin();
if (i!=P.end())
{
Polinom A;
A.An=abs(((*i).top()).An);//Класс "Polinum" не содержит члена "top" 
A.n=((*i).top()).n;//Класс "Polinum" не содержит члена "top" 
i++;
Q.push_back(A);
return Abslv((*i),Q);//Идентификатор Abslv не определён
}
return;
}
Если добавить top в структуру, то ошибка: Выражение должно иметь тип указателя на функцию!
И тут ещё:
C++
1
2
if (An.An!=0)
lst.push_back(An);// Идентификатор lst не определён
Возможно было list, но тогда отсутствует список аргументов для шаблон класса "std::list"

Помогите пожалуйста. Очень надо!
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
15.01.2013, 00:54     Рекурсивная обработка списков #6
А вместо lst-> polinom впаяйте. Эмм и top в структуру добавлять не надо. Это функция для листа!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2013, 00:59     Рекурсивная обработка списков
Еще ссылки по теме:

Создание и обработка списков C++
C++ Обработка списков

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

Или воспользуйтесь поиском по форуму:
Serdox
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 32
15.01.2013, 00:59  [ТС]     Рекурсивная обработка списков #7
Извиняюсь, что-то я немного подлагиваю. Что надо сделать поподробнее, если возможно!
Yandex
Объявления
15.01.2013, 00:59     Рекурсивная обработка списков
Ответ Создать тему
Опции темы

Текущее время: 12:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru