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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2013, 00:01   #1
I_I_I
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 17
По умолчанию Как вывести в консоль слово 50 раз

Вопрос: как в С++ вывести на экран 50 раз слово "Мама", не используя циклы, рекурсию, конструкторы классов, а используя шаблон?
I_I_I вне форума Ответить с цитированием
Старый 14.07.2013, 00:16   #2
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Можно попробовать воспользоваться for_each() алгоритмом.
Igor95 вне форума Ответить с цитированием
Старый 14.07.2013, 00:20   #3
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

http://codepad.org/xlwUUXfD

Код:
#include <iostream>
using namespace std;

template<size_t N>struct Couter
{
    Couter() 
    { 
        cout <<N<<") hello, mother!\n";
        Couter<N-1> cout_mother; 
    }
};
template<>struct Couter<0>
{
    Couter(){ cout <<0<<") hello, mother!\n"; }
};





int main()
{
    Couter<50> cout_mother;
}
_Bers вне форума Ответить с цитированием
Старый 14.07.2013, 00:36   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

2_Bers
технически заданию ты не удовлетворил. конструкторы использовал, рекурсию использовал. да еще и с off-by-one ошибкой.

2I_I_I
если уж на то пошло, принимая во внимание все ограничения, которые ты описал (буквально принимая), то единственно возможное параметризованное решение я считаю такое:
Код:
#include <iostream>

using namespace std;

struct Hello {
	~Hello()
	{
		cout << "mother" << endl;
	}
};

int main()
{
	Hello h[50];
}
шаблон можешь накинуть, если хочешь на 100% соответствовать требованиям
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 14.07.2013 в 00:43.
pproger вне форума Ответить с цитированием
Старый 14.07.2013, 00:46   #5
I_I_I
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 17
По умолчанию

to pproger

"Когда мы говорим "конструктор", то тут же подразумеваем и "деструктор"".

А вообще, если единственно возможное решение выглядит так, то, может быть, сама постановка задачи некорректна.
I_I_I вне форума Ответить с цитированием
Старый 14.07.2013, 00:50   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

2I_I_I
Цитата:
"Когда мы говорим "конструктор", то тут же подразумеваем и "деструктор"".
кто, "мы"?

я ничего не подразумеваю, я смотрю на постановку задачи. естественно нужно в задании было указать, что нельзя использовать только рекурсию во время выполнения.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 14.07.2013, 00:54   #7
I_I_I
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 17
По умолчанию

to pproger:

тогда уточню, что в условии задачи неявно имелись в виду вместе с заявленными конструкторами и деструкторы тоже.
I_I_I вне форума Ответить с цитированием
Старый 14.07.2013, 00:59   #8
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

2I_I_I
я тебе и так скажу, что имелось в виду. имелось в виду вот это:
Код:
#include <iostream>

using namespace std;

template <size_t N>
void foo()
{
	cout << "hello" << endl;
	foo<N - 1>();
}

template <>
void foo<1>()
{
	cout << "hello" << endl;
}

int main()
{
	foo<50>();
}
т.е написать метапрограмму с рекурсией времени компиляции.

если бы мне задали задание в такой формулировке, как ты предоставил, яб без тени сомнения выдал бы свой первый вариант (с шаблоном-пустышкой). при несогласии с решением написал бы докладную на препода.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 14.07.2013, 01:15   #9
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2_Bers
технически заданию ты не удовлетворил. конструкторы использовал, рекурсию использовал. да еще и с off-by-one ошибкой.


http://codepad.org/bBs19R2B

Код:
#include<iostream>
using namespace std;

template<size_t N>struct Couter: Couter<N-1>
{
    typedef Couter<N-1> Parent;
    static void Cout(){ cout <<N<<") hello, mother!\n"; Parent::Cout(); }
};
template<>struct Couter<0>
{
    static void Cout(){ cout <<0<<") hello, mother!\n"; }
};

int main()
{
    Couter<49>::Cout();
}
_Bers вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ассемблер: В командной строке задаётся два параметра, слово и число повторений. Записать слово в файл указанное число раз Геральд Помощь студентам 7 26.12.2012 23:18
как вывести сообщение в консоль Arassir PHP 6 28.08.2012 21:30
как вывести номер строки,в котрой было найдено слово? Cathrin C# (си шарп) 2 28.11.2011 15:32
Как вводить полные инициалы в массив структур и как при выводе не отображать слово none несколько раз? -ushёl- Помощь студентам 2 02.01.2010 14:13
PHP.Как посчитать, сколько раз слово встречается в файле? Princesse Помощь студентам 0 07.12.2009 00:24