Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2013, 20:10   #1
Alexlive
 
Регистрация: 03.04.2013
Сообщений: 4
По умолчанию c++ объяснение

Здравствуйте, нужна ваша помощь. Начал изучать 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("Ru ssian"));
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);
}
Alexlive вне форума Ответить с цитированием
Старый 10.04.2013, 12:10   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Имеется программа, где нужно объяснить, что делает каждая строчка. Помогите разобраться, пожалуйста.
Код:
//При компиляции, включить текст файла stdafx.h; файл ищется в директориях заголовков, известных компилятору
#include <stdafx.h>
//При компиляции, включить текст файла iostream; файл ищется в директориях заголовков, известных компилятору
#include <iostream>
//При компиляции, включить текст файла list; файл ищется в директориях заголовков, известных компилятору
#include <list>
//При компиляции, включить текст файла algorithm; файл ищется в директориях заголовков, известных компилятору
#include <algorithm>
//При компиляции, включить текст файла clocale; файл ищется в директориях заголовков, известных компилятору
#include <clocale>
//При компиляции, включить текст файла locale; файл ищется в директориях заголовков, известных компилятору
#include <locale>
Уф. Следующие шесть строк будут сегодня-завтра.
Abstraction вне форума Ответить с цитированием
Старый 10.04.2013, 20:41   #3
KlIm16
Пользователь
 
Регистрация: 16.02.2013
Сообщений: 37
По умолчанию

Извините, что в чужой теме спрашиваю, но не могли бы Вы мне подсказать как в wcout задать местоположение вывода на экран строки.
KlIm16 вне форума Ответить с цитированием
Старый 10.04.2013, 23:32   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
как в wcout задать местоположение вывода на экран строки.
Причина, по которой Вы задали этот вопрос в этой теме, от меня ускользает.

Вообще говоря, никак. Потоки, на уровне того как они задуманы - "одномерны", у них нет понятия "местоположения". Это позволяет одинаковым образом работать с выводом в консоль и выводом в файл (что хорошо), но не позволяет выводить в "место экрана" (потому что такого понятия для потока просто не существует).
Есть лишь частные действия. Например, если Вы выведете std::endl, (вроде бы) гарантируется, что следующие символы будут выводиться в начале следующей строки:
Код:
std::wcout << "Это первая строка." << std::endl;
std::wcout << "А это вторая... ну, предыдущая могла разрастись больше чем на одну строку, но, во всяком случае, 'А' стояло в начале строки";
Abstraction вне форума Ответить с цитированием
Старый 11.04.2013, 01:00   #5
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Вообще говоря, никак. Потоки, на уровне того как они задуманы - "одномерны", у них нет понятия "местоположения". Это позволяет одинаковым образом работать с выводом в консоль и выводом в файл (что хорошо), но не позволяет выводить в "место экрана" (потому что такого понятия для потока просто не существует).
Вообще, поскольку С++ делался еще на юниксах, то (более точно) - потоки работают с файлами. (все устройства ввода/вывода там являются "файлом", даже некоторые средства взаимодействия между процессами тоже представлены в виде "файла").
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
объяснение задачи Екатерина Воробей Паскаль, Turbo Pascal, PascalABC.NET 4 12.10.2011 22:27
объяснение задачи Екатерина Воробей Паскаль, Turbo Pascal, PascalABC.NET 13 10.10.2011 17:02
Объяснение программы man-utd- Помощь студентам 4 23.11.2010 21:46
Объяснение программы ForzaJuve Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.11.2010 09:27
Объяснение к задаче коммивояжер. enik pi Помощь студентам 2 14.06.2007 00:54