Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: 6453
Последний выпуск: 19.06.2015

Объясните программу

90K
10 апреля 2013 года
live163
1 / / 10.04.2013
Здравствуйте, начал изучать c++ и очень нужна помощь. Объясните, пожалуйста, что делает каждая строка из данной программы:

    #include <stdafx.h>
    #include <iostream>
    #include <list>
    #include <algorithm>
    #include <clocale>
    #include <locale>
    using namespace std;


    struct Print{
    template <typename T>
    void operator() (T &elem)
    {
    cout << elem << ' ';
    }
    };

    template <typename T>
    void addToFront(list<T> &_coll, const T value)
    {
    _coll.push_front(value);
    }

    template <typename T>
    void dellist(list<T> &_coll)
    {
    _coll.pop_front();
    }

    template <typename T>
    void showlist(list<T> &_coll)
    {
    if(!_coll.empty())
    {
    for_each(_coll.begin(), _coll.end(), Print());
    }
    else
    wcout << L"The list is cleared\n";
    }
    template <typename T>
    void dubllist(list<T> &_coll, const T value)
    {
    list<T>::iterator pos;
    for(pos = _coll.begin(); pos != _coll.end(); ++pos)
    {
    if(*pos == value){
    if(pos == _coll.begin())
    _coll.push_front(value);
    else if(pos != (--_coll.end())){
    _coll.insert(pos, value);
    }
    else if(pos == (--_coll.end())){
    _coll.push_back(value);
    ++pos;
    }
    }
    }
    }

    template <typename T>
    void menu(list<T> &);
    void instructions();

    int main(int argc, char *argv[])
    {
    std::locale::global(std::locale("Russian"));
    printf("Написать программу для работы с двунаправленным нециклическим списком: \n добавление/удаление элементов в голову, просмотр списка,\n реализовать дублирование списка с заданным значением \n");


    wcout.imbue(locale(".866"));

    list<int> coll;

    menu(coll);

    if(coll.empty())
    coll.clear();

    cout << "\n\n";
    return 0;
    }

    void instructions()

    {
    wcout << L"Select menu item: " <<
    L"\n1 - To add an element in the beginning" <<
    L"\n2 - To remove an element from the beginning" <<
    L"\n3 - duplication" <<
    L"\n4 - Exit.\n";
    }

    template <typename T>
    void menu(list<T> &coll)
    {
    int punkt_menu, value;

    instructions();


    do{
    wcout << L"\n What do you want to make? \n ";
    cin >> punkt_menu;

    switch(punkt_menu)
    {
    case 1:
    wcout << L"\n Enter numbers which you want to add in the list: ";
    cin >> value;

    addToFront(coll, value);
    showlist(coll);
    break;
    case 2:
    dellist(coll);
    showlist(coll);
    break;

    case 3:
    wcout << L"Write numbers: ";
    cin >> value;

    dubllist(coll, value);
    showlist(coll);
    break;
    }

    }while(punkt_menu != 4);
    }
253
10 апреля 2013 года
Ramon
1.1K / / 16.08.2003
Внезапно, "Начал сдавать Ц++, решение достал, а осознание не пришло", нэ?
20K
10 апреля 2013 года
ellor!
198 / / 24.05.2012
При достаточно вдумчивом изучении C++ назначение каждой строки очень скоро станет ясным.
402
10 апреля 2013 года
grgdvo
323 / / 04.07.2007
Нормальный преподавал не должен принять такое.
По факту здесь не реализован двунаправленый список, а сделана лишь скромная обёртка поверх std::list
Подумайте прежде чем сдавать
332
11 апреля 2013 года
Der Meister
874 / / 21.12.2007
Цитата: grgdvo
Нормальный преподавал не должен принять такое.
По факту здесь не реализован двунаправленый список, а сделана лишь скромная обёртка поверх std::list
Подумайте прежде чем сдавать

А где в задании написано, что нужен свой лисопед?

10
11 апреля 2013 года
Freeman
3.2K / / 06.03.2004
Цитата:
…недостатком советской системы образования была попытка формировать человека-творца, а сейчас задача заключается в том, чтобы взрастить квалифицированного потребителя, способного квалифицированно пользоваться результатами творчества других.

© Министр образования (на тот момент) Фурсенко

243
11 апреля 2013 года
koderAlex
1.4K / / 07.09.2005
Цитата: Der Meister
А где в задании написано, что нужен свой лисопед?


это преподовательско-студенческая традиция :)
то сделать лисопед с квадратными колёсами , то гоночный автомобиль без колёс , то трактор с реактивным движком.. )

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог