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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
same
0 / 0 / 0
Регистрация: 27.09.2013
Сообщений: 7
#1

Работа с двунаправленым списком. STL <list> - C++

04.12.2013, 21:00. Просмотров 623. Ответов 5
Метки нет (Все метки)

Помогите пожалуста найти ошибку..
3) Даны натуральное число n, действительные числа x1,x2,....,xn . Вычислить:
x1*xn+x2*xn-1+...+xn*x1

Моя прога..
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
#include "stdafx.h"
#include <list>
#include <iostream>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    list<double> lst;
    list<double>::iterator i;
    list<double>::iterator j;
    int n=0;
    double a;
    cout << "Enter size of list: ";
        cin >> n;
        cout << "Enter elements: "<<endl;
        for (int i=0; i<n; i++)
        {
            cin>>a;
            lst.push_back(a);
        }
        i=lst.begin();
        while (i!=lst.end())
        {
        cout << *i << ' ' ;
        i++;
        }
        
        i=lst.begin();
        j=lst.end();
        double sum=0;
        while (i!=lst.end() && j!=lst.begin())
{           sum+=*i * *j;
        i++;
        j--;
}
        cout<<sum;
        system ("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2013, 21:00     Работа с двунаправленым списком. STL <list>
Посмотрите здесь:

Стандартная библиотека шаблонов STL и класс list по работе с двунаправленным списком - C++
Здравствуйте. Решите пожалуйста задачу: Используя стандартную библиотеку шаблонов STL и класс list по работе с двунаправленным списком ...

Стандартная библиотека шаблонов STL и класс list по работе с двунаправленным списком - C++
здравствуйте. помогите разобраться с данной задачей. Даны натуральное число n, символы S1,S2,...,Sn. будем рассматривать слова,...

Работа со списком STL - C++
мне надо как-то обрабатывать данные списка( вставлять, вынимать). как бы сам список объявляется по стандарту так list&lt;int&gt; myList; а...

Работа с STL list - C++
Есть некий каталог с 3 переменными (string,string,int), который нужно хранить в list Как я понимаю есть 2 решения хранения. 1....

Работа с STL. Поменять vector на list - C++
Программа должна быть написана так, чтобы достаточно было заменить в одном месте vector на list и приложение делало все то же самое. Если...

Как реализовать работу со списком строк и списком цифр в классе List? - C++
Добрый день! Проблема такая Есть класс-список: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; using namespace...

STL list - C++
как вставить элемент в середину списка list STL? float list_insert_rand(int num) { srand (time(NULL)); int rand_num, rand_pos; ...

STL list - C++
Доброго времени суток, пока имею поверхностное представление о алгоритмах STL и функциях для контейнеров, но есть задача: требуется...

List STL - C++
В общем нужно создать класс STL c помощью list: CStudent.h #include &lt;string&gt; using namespace std; enum number_type{G1, G2,...

STL List - C++
Вот в чем проблема, была дана задача, решить которую надо было с помощью Deque и List, Deque надобыло оформить через STL, а List написать...

Реализация list из STL - C++
Можете скинуть реализацию класса list из STL.

STL>>list<_Ty> - C++
Подскажите, пожалуйста. Я сейчас пытаюсь вникнуть в суть контейнеров, их свойства и функции. Так вот, создал я двун. список с помощью list,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
04.12.2013, 21:47     Работа с двунаправленым списком. STL <list> #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <list>
#include <numeric>
 
int main()
{
   std::list<int> l {1, 2, 3, 4, 5, 6};
   std::cout << "Result: "
             << std::inner_product(l.begin(), l.end(), l.rbegin(), 0u)
             << std::endl;
 
   return 0;
}
Alex5
1039 / 702 / 102
Регистрация: 12.04.2010
Сообщений: 1,766
04.12.2013, 21:58     Работа с двунаправленым списком. STL <list> #3
Цитата Сообщение от same Посмотреть сообщение
j=lst.end();
Если j == lst.end(), то *j не является элементом списка. Для прохода списка от конца к началу используется reverse_iterator
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    // проход списка от конца к началу 
    list<double>::reverse_iterator rj;
    cout << endl;
    cout << " From end to begin : " << endl;
    for( rj=lst.rbegin(); rj!= lst.rend(); rj++ )
    {
        cout << *rj << endl;
    }
 
    i=lst.begin();
    rj=lst.rbegin(); // reverse_iterator указывает на последний элемент списка 
    double sum=0;
    while (i!=lst.end() && rj!=lst.rend() )
    {           
        sum+=*i * *rj;
        i++;
        rj++; // сдвиг reverse_iterator на одну позицию к началу списка 
    }
same
0 / 0 / 0
Регистрация: 27.09.2013
Сообщений: 7
05.12.2013, 17:30  [ТС]     Работа с двунаправленым списком. STL <list> #4
Спасибо!)
а можешь обьяснить почему нельзя использовать то что у меня?)
Alex5
1039 / 702 / 102
Регистрация: 12.04.2010
Сообщений: 1,766
05.12.2013, 19:25     Работа с двунаправленым списком. STL <list> #5
same, end() не является последним элементом списка. Это уже за пределами списка - см. рис.
i=lst.begin();
j=lst.end();
double sum=0;
while (i!=lst.end() && j!=lst.begin())
{ sum+=*i * *j;
i++;
j--;
}
В этом коде при входе в цикл j равняется lst.end(). И если попытаться вычислить *j, это приведёт к ошибке.

Вот ещё вариант, как посчитать сумму
C++
1
2
3
4
5
6
7
8
9
10
11
12
    list<double>::iterator i;
    list<double>::iterator j;
    i=lst.begin();
    j=lst.end();
    double sum=0;
    while (i!=lst.end() )
    {
        --j;
        sum+=*i * *j;
        i++;
    }
    cout << "\n  sum == " << sum;
Миниатюры
Работа с двунаправленым списком. STL <list>  
same
0 / 0 / 0
Регистрация: 27.09.2013
Сообщений: 7
08.12.2013, 15:51  [ТС]     Работа с двунаправленым списком. STL <list> #6
Понял, спасибо!)
Yandex
Объявления
08.12.2013, 15:51     Работа с двунаправленым списком. STL <list>
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru