Здравствуйте, 8bit, Вы писали:
8>Здравствуйте, remark, Вы писали:
R>>Здравствуйте, Аноним, Вы писали:
А>>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
R>>
R>>std::count << "1000 раз";
R>>
R>>
8>Смекалка не в этом ! 8>
Я уже понял, что это вопрос из серии "угадай о чем я сейчас думаю"
On Mon, 27 Mar 2006 13:41:45 +0400, Lazy Cjow Rhrr <10144@users.rsdn.ru>
wrote:
> <Аноним>, > > А>Как вывести строку текста 1000 раз не используя явного или не явного > цикла ? > > Хм... На каком языке? #-) >
У тебя, конечно же, было готово "правильное" решение. Поэтому ты закрываешь глаза на варианты. А этюд тем и интересен, чтобы решить его нестандартными способами. Это будет откровением для решающих — но и задавший задачу не должен в этом обделять ни себя, ни других.
С учётом того, что boost рискует войти в следующую версию Стандарта — BOOST_PP можно практически принять за решение.
Встречный вопрос к тебе: какими ещё способами можно решить твою задачу, кроме уже перечисленных?
— цикл
— препроцессор
— рекурсивные шаблоны
— дерево вызовов функций
— массив объектов, конструкторы с побочным эффектом
— std::fill_n + ostream_iterator
Несколько решений напрашиваются сразу.
И ещё одно решение может оказаться неочевидным Посмотрим — угадаешь ли ты, что я имею в виду.
Здравствуйте, xr0ld, Вы писали:
S>>>Вывести 1 раз, а программу запустить 1000 раз? Или это тоже неявный цикл? 8>>Нет все должно быть сделанно за один запуск...
X> Рекурсия )
Зачем такие громкие слова? Ты на простом языке напиши.
Здравствуйте, CrazyPit, Вы писали:
CP>Здравствуйте, Аноним, Вы писали:
А>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
CP>гм
CP>print "string\n" * 1000
Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
25.03.06 23:07: Перенесено модератором из 'C/C++' — Кодт
Re[2]: Тест на смекалку !
От:
Аноним
Дата:
25.03.06 17:44
Оценка:
Здравствуйте, Константин, Вы писали:
К>Здравствуйте, Аноним, Вы писали:
А>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
К>
printf("текст\n");
К>printf("текст\n");
К>printf("текст\n");
К>printf("текст\n");
К>// ... и так 1000 раз
Здравствуйте, 8bit, Вы писали:
S>>Набрать ее 1000 раз, юзать goto + if, (или это цикл?) , рекурсию + if, метапрограммирование
8>это все не явный цикл...
Ok. Сдаюсь. Выкладывай ответ или пришли мне его на shanku@yandex.ru, я никому не скажу.
Здравствуйте, shank, Вы писали:
S>Здравствуйте, 8bit, Вы писали:
S>>>Набрать ее 1000 раз, юзать goto + if, (или это цикл?) , рекурсию + if, метапрограммирование
8>>это все не явный цикл... S> S>Ok. Сдаюсь. Выкладывай ответ или пришли мне его на shanku@yandex.ru, я никому не скажу.
Еще чуть-чуть подождем может кто ответит...
Правда выходные, народу не много... Но еще подождем
Здравствуйте, remark, Вы писали:
R>Здравствуйте, 8bit, Вы писали:
8>>Здравствуйте, remark, Вы писали:
R>>>Здравствуйте, Аноним, Вы писали:
А>>>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
R>>>
R>>>std::count << "1000 раз";
R>>>
R>>>
8>>Смекалка не в этом ! 8>>
R>Я уже понял, что это вопрос из серии "угадай о чем я сейчас думаю"
R>
Здравствуйте, 8bit, Вы писали:
8>Здравствуйте, remark, Вы писали:
R>>Здравствуйте, 8bit, Вы писали:
8>>>Здравствуйте, remark, Вы писали:
R>>>>Здравствуйте, Аноним, Вы писали:
А>>>>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
R>>>>
R>>>>std::count << "1000 раз";
R>>>>
R>>>>
8>>>Смекалка не в этом ! 8>>>
R>>Я уже понял, что это вопрос из серии "угадай о чем я сейчас думаю"
R>>
8>Да нет... я знаю ответ...
Не, я не про это. Я про это: типа я тебя спрашиваю "угадай о чем я сейчас думаю". При этом я не мухлюю и ответ не изменяю в ран-тайме. Но задачка всё равно не простая, согласись.
Здравствуйте, 8bit, Вы писали:
8>Здравствуйте, remark, Вы писали:
R>>Здравствуйте, Аноним, Вы писали:
А>>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
R>>
Здравствуйте, remark, Вы писали:
R>Здравствуйте, 8bit, Вы писали:
8>>Здравствуйте, remark, Вы писали:
R>>>Здравствуйте, 8bit, Вы писали:
8>>>>Здравствуйте, remark, Вы писали:
R>>>>>Здравствуйте, Аноним, Вы писали:
А>>>>>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
R>>>>>
R>>>>>std::count << "1000 раз";
R>>>>>
R>>>>>
8>>>>Смекалка не в этом ! 8>>>>
R>>>Я уже понял, что это вопрос из серии "угадай о чем я сейчас думаю"
R>>>
8>>Да нет... я знаю ответ...
R>Не, я не про это. Я про это: типа я тебя спрашиваю "угадай о чем я сейчас думаю". При этом я не мухлюю и ответ не изменяю в ран-тайме. Но задачка всё равно не простая, согласись.
R>
Задачка на смекалку !
Решение как и все гениальное простое.
Здравствуйте, remark, Вы писали:
R>Здравствуйте, 8bit, Вы писали:
8>>Здравствуйте, remark, Вы писали:
R>>>Здравствуйте, Аноним, Вы писали:
А>>>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
R>>>
Как вывести строку текста на экран ровно 1000 раз
не используя явного или не явного цикла, при этом код должен быть минимален и
использованы только возможности стандартного C++ ?
Здравствуйте, 8bit, Вы писали:
8>Здравствуйте, sc, Вы писали:
sc>>я знаю, но не буду говорить)
8>Почему же ?
потому что другим уже будет не интересно, могу дать только намек
Здравствуйте, 8bit, Вы писали:
8>Здравствуйте, remark, Вы писали:
R>>Здравствуйте, 8bit, Вы писали:
8>>>Здравствуйте, remark, Вы писали:
R>>>>Здравствуйте, Аноним, Вы писали:
А>>>>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
R>>>>
R>>>>while (true) std::cout << "Hello";
R>>>>
R>>>>
8>>>
R>>Правильно?
8>нет конечно...
Все условия выполнены.
Если всё же неправильно. то просьба конкретизировать что значит "не явный цикл".
Он случайно в задаче определяется не как "то, что позволяет повторить выполнение какого-либо действия несколько раз"?
Здравствуйте, sc, Вы писали:
sc>Здравствуйте, 8bit, Вы писали:
8>>Здравствуйте, sc, Вы писали:
sc>>>я знаю, но не буду говорить)
8>>Почему же ? sc>потому что другим уже будет не интересно, могу дать только намек
Здравствуйте, 8bit, Вы писали:
8>Как вывести строку текста на экран ровно 1000 раз 8>не используя явного или не явного цикла,
Вот тут непонятно ваще — что такое цикл я ещё понимаю, но что такое неявный цикл...
8>при этом код должен быть минимален и
это можно интерпретировать, что кол-во лексемм в программе не должно зависеть от числа 1000, т.е. если заменить на 2000, то кол-во лексем в решении не должно измениться?
8>использованы только возможности стандартного C++ ?
Здравствуйте, Aznog, Вы писали:
A>Здравствуйте, Аноним, Вы писали:
А>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ? A>...на стандартном С++: A>
A>template <int N>
A>void print_n(const char* str) {
A> std::cout << str << std::endl;
A> print_n<N - 1>(str);
A>}
A>template <>
A>void print_n<1>(const char* str) {
A> std::cout << str << std::endl;
A>}
A>int main()
A>{
A> print_n<1000>("some text");
A> return 0;
A>}
A>
Здравствуйте, remark, Вы писали:
R>Здравствуйте, 8bit, Вы писали:
8>>Здравствуйте, remark, Вы писали:
R>>>Здравствуйте, 8bit, Вы писали:
8>>>>Здравствуйте, remark, Вы писали:
R>>>>>Здравствуйте, Аноним, Вы писали:
А>>>>>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
R>>>>>
R>>>>>while (true) std::cout << "Hello";
R>>>>>
R>>>>>
8>>>>
R>>>Правильно?
8>>нет конечно...
R>Все условия выполнены. R>Если всё же неправильно. то просьба конкретизировать что значит "не явный цикл". R>Он случайно в задаче определяется не как "то, что позволяет повторить выполнение какого-либо действия несколько раз"?
R>
1) я немного уточнил условия написав что нужно вывести РОВНО 1000 раз
(как раз что бы не было таких предложений)
2) while это все таки цикл
Как вывести строку текста на экран (консоль приложения)
РОВНО 1000 раз
не используя явного или не явного цикла,
при этом код должен быть минимален и
использованы только возможности стандартного C++ ?
Определение не явного цикла:
цикл созданный путем различных ухитрений,
(где обычно присутствует счетчик итераций)
Здравствуйте, 8bit, Вы писали:
8>Здравствуйте, sc, Вы писали:
sc>>Здравствуйте, 8bit, Вы писали:
8>>>Здравствуйте, sc, Вы писали:
sc>>>>я знаю, но не буду говорить)
8>>>Почему же ? sc>>потому что другим уже будет не интересно, могу дать только намек
8>Ну тогда попозже сравним ответы !
Может дать намек?
Здравствуйте, sc, Вы писали:
sc>Здравствуйте, 8bit, Вы писали:
8>>Здравствуйте, sc, Вы писали:
sc>>>Здравствуйте, 8bit, Вы писали:
8>>>>Здравствуйте, sc, Вы писали:
sc>>>>>я знаю, но не буду говорить)
8>>>>Почему же ? sc>>>потому что другим уже будет не интересно, могу дать только намек
8>>Ну тогда попозже сравним ответы ! sc>Может дать намек?
да я вроде дал намек ниже в ветке...
если только выделить 'C++' по ярче....
Здравствуйте, 8bit, Вы писали:
8>да я вроде дал намек ниже в ветке... 8>если только выделить 'C++' по ярче....
Может быть написать слово на букву К? Если я правильно догадался)
Как вывести строку текста на экран (консоль приложения)
РОВНО 1000 раз
не используя явного или не явного цикла,
при этом код должен быть минимален и
использованы только возможности стандартного C++ ?
Определение не явного цикла:
цикл созданный путем различных ухитрений,
(где обычно присутствует счетчик итераций)
Намек:
C++
Re: Тест на смекалку !
От:
Аноним
Дата:
25.03.06 19:32
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
Здравствуйте, 8bit, Вы писали:
8>Как вывести строку текста на экран ровно 1000 раз 8>не используя явного или не явного цикла, при этом код должен быть минимален и 8>использованы только возможности стандартного C++ ?
Решение с BOOST_PP подходит. В нём нет циклов — препроцессор всё разворачивает.
Здравствуйте, sc, Вы писали:
sc>Здравствуйте, 8bit, Вы писали:
8>>да я вроде дал намек ниже в ветке... 8>>если только выделить 'C++' по ярче.... sc>Может быть написать слово на букву К? Если я правильно догадался)
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, 8bit, Вы писали:
8>>Как вывести строку текста на экран ровно 1000 раз 8>>не используя явного или не явного цикла, при этом код должен быть минимален и 8>>использованы только возможности стандартного C++ ?
К>Решение с BOOST_PP подходит. В нём нет циклов — препроцессор всё разворачивает.
Автор не до конца уточняет условие. В частности что такое "неявные циклы". Я уже предположил, что возможно автор подразумевает такую трактовку: "то, что позволяет повторить выполнение какого-либо действия несколько раз". В таком случае ни BOOST_PP, ни решение с массивом не подходят
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, 8bit, Вы писали:
8>>Как вывести строку текста на экран ровно 1000 раз 8>>не используя явного или не явного цикла, при этом код должен быть минимален и 8>>использованы только возможности стандартного C++ ?
К>Решение с BOOST_PP подходит. В нём нет циклов — препроцессор всё разворачивает.
там ниже уточнение... только чистый стандартый C++
Здравствуйте, 8bit, Вы писали:
8>Здравствуйте, sc, Вы писали:
sc>>Здравствуйте, 8bit, Вы писали:
8>>>да я вроде дал намек ниже в ветке... 8>>>если только выделить 'C++' по ярче.... sc>>Может быть написать слово на букву К? Если я правильно догадался)
8>На букву C может быть ?
И на C тоже Конструктор == Constructor
Я скорее всего знал это раньше, так как решение пришло мгновенно, а это не типично для меня))
Здравствуйте, sc, Вы писали:
sc>Здравствуйте, 8bit, Вы писали:
8>>Здравствуйте, sc, Вы писали:
sc>>>Здравствуйте, 8bit, Вы писали:
8>>>>да я вроде дал намек ниже в ветке... 8>>>>если только выделить 'C++' по ярче.... sc>>>Может быть написать слово на букву К? Если я правильно догадался)
8>>На букву C может быть ? sc>И на C тоже Конструктор == Constructor sc>Я скорее всего знал это раньше, так как решение пришло мгновенно, а это не типично для меня))
Все верно ! это нужно сделать через конструктор !
И это замечательно что такие решения приходят к вам мгновенно !
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, Аноним, Вы писали:
А>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
К>Решение с рекурсией. Голый Си. К>
Здравствуйте, shank, Вы писали:
S>Здравствуйте, 8bit, Вы писали: S>Не умаляя заслуги Кодта, но все же, эта строчка S>
S>X say[1000];
S>
S>транслируется в цикл с вызовом конструкторов... S>Кто мог знать, что это уже не подпадает под определение "неявный цикл"?
Вот декомпиляция.
Цикл есть, который создал компилятор а не программист (причем конструктора нет) !
Задача была в том что бы программист не создавал руками цикла !
.text:004010C0 push esi
.text:004010C1 push edi
.text:004010C2 mov edi, ds:??6std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z ; std::operator<<(std::basic_ostream<char,std::char_traits<char>> &,char const *)
.text:004010C8 mov esi, 3E8h
.text:004010CD
.text:004010CD loc_4010CD: ; CODE XREF: _main+25j
.text:004010CD mov eax, ds:?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A ; std::basic_ostream<char,std::char_traits<char>> std::cout
.text:004010D2 push offset aTest ; "test"
.text:004010D7 push eax
.text:004010D8 call edi ; std::operator<<(std::basic_ostream<char,std::char_traits<char>> &,char const *) ; std::operator<<(std::basic_ostream<char,std::char_traits<char>> &,char const *)
.text:004010DA push eax
.text:004010DB call ds:?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z ; std::endl(std::basic_ostream<char,std::char_traits<char>> &)
.text:004010E1 add esp, 0Ch
.text:004010E4 dec esi
.text:004010E5 jnz short loc_4010CD
.text:004010E7 pop edi
.text:004010E8 xor eax, eax
.text:004010EA pop esi
.text:004010EB retn
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, 8bit, Вы писали:
8>>это и есть решение без цикла, явного или не явного, с наименьшим количеством кода !
К>Это решение — не совсем "чистый" С++, поскольку пришлось определить свой класс. К>Чистое решение — вот: К>
К>Ни одной нестандартной функции, ни одного нестандартного класса.
К>Ну а то, что fill_n неявно содержит цикл — так ведь и конструктор массива содержит цикл.
"чистый" С++ я употребил что бы люди не пытались использовать всякие там BOOST, рекурсии, а так же как намек что решение скрывается в одной из основ языка (конструктуре).
То что констуктор массива содержит цикл не относится к формулировке задачи, так как
програмист его не создает этот цикл, а только обьявляет массив. Т.е. этот цикл не 'рукотворный' если можно так выразиться. Это зависит от компилятора.
Здравствуйте, sc, Вы писали:
К>>- массив объектов, конструкторы с побочным эффектом sc>и деструкторы тоже)
Замечательно. Одно из.
Какие ещё решения можно вписать в наши анналы? Ограничение на предельную простоту снято.
Есть ограничение на громоздкость: каждое решение должно быть минимально в своём классе.
Например, логарифмическая рекурсия в шаблонах — по основанию 2 упомянули, этого достаточно. По основанию 3 или 10 уже будет, во-первых, повтором, а во-вторых, более громоздко.
Линейная рекурсия в шаблонах — отдельный класс решения. (Правда, не всякий компилятор сможет её поднять).
Да, кстати. Маячок к неочевидному решению: <stdlib.h>
Я не закрываю глаза на варианты, очень интересно было увидеть различные способы.
Есть вот такой вариант: тоже же через конструктор но без массива,
и даже не знаю есть ли тут рекурсия или цикл (считаю что нет), думаю больше похоже на 'развернутый' массив:
class XXX
{
public:
XXX(int i, volatile int j=1)
{
j /= i;
cout << "test" << endl;
XXX a(i-1);
}
};
int main()
{
try
{
XXX a(4);
}
catch (...)
{
}
}
Здравствуйте, Кодт, Вы писали:
К>Например, логарифмическая рекурсия в шаблонах — по основанию 2 упомянули, этого достаточно. По основанию 3 или 10 уже будет, во-первых, повтором, а во-вторых, более громоздко. К>Линейная рекурсия в шаблонах — отдельный класс решения. (Правда, не всякий компилятор сможет её поднять).
Опаньки. Глаза-то у меня замылены... упомянули как раз линейную рекурсию. Для многих компиляторов — это приведёт к ICE. (Насколько помню, только comeau справлялся с глубиной 1000).
Ну раз уж я сам сказал — то приведу это решение.
Дихотомия (N/2, N-N/2) порождает много разных воплощений (instantiations), что утяжеляет работу компилятору.
Самый худший случай — когда N=2^k-1.
Здесь же будут пройдены значения f<N>, N=1000, 500, 250, 125, 63, 62, 32, 31, 16, 15, 8, 7, 4, 3, 2, 1, 0.
Здравствуйте, 8bit, Вы писали:
8>Я не закрываю глаза на варианты, очень интересно было увидеть различные способы.
8>Есть вот такой вариант: тоже же через конструктор но без массива, 8>и даже не знаю есть ли тут рекурсия или цикл (считаю что нет), думаю больше похоже на 'развернутый' массив:
8>class XXX 8>{ 8>public: 8> XXX(int i, volatile int j=1) 8> { 8> j /= i; 8> cout << "test" << endl; 8> XXX a(i-1); 8> } 8>};
8>int main() 8>{ 8> try 8> { 8> XXX a(4); 8> } 8> catch (...) 8> { 8> } 8>}
Хотя конечно компилятор развернет это в рекурсию...
Здравствуйте, 8bit, Вы писали:
8>Есть вот такой вариант: тоже же через конструктор но без массива, 8>и даже не знаю есть ли тут рекурсия или цикл (считаю что нет), думаю больше похоже на 'развернутый' массив:
Массива здесь нет, зато есть UB. В конструкторе (считай, в особой функции) создаётся локальная переменная, у которой вызывается конструктор... То есть, эти переменные — во-первых, недостроенные, а во-вторых, не образуют сплошной массив.
Процесс останавливается при делении на ноль (то самое UB).
Даже если при этом возбудится аппаратное исключение — не факт, что будет брошено асинхронное исключение С++. Это личное дело железа, ОС, компилятора, его настроек и твоих рук (иногда нужно явно регистрировать обработчик исключительных ситуаций).
Но пусть произойдёт бросок. Это приведёт к раскрутке стека, т.е., попросту, к возвратам изо всех функций.
То же самое, но более просто
// так
XXX::XXX(int N)
{
if(N==0) throw int(0); // любой тип исключения, т.к. у нас универсальная ловушка
cout << "hello\n";
}
// или так
XXX::XXX(int N)
{
if(N==0) return;
XXX x(N-1);
}
// или вот такvoid f(int N)
{
if(N==0) return;
cout << "hello\n";
f(N-1);
}
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, 8bit, Вы писали:
8>>Есть вот такой вариант: тоже же через конструктор но без массива, 8>>и даже не знаю есть ли тут рекурсия или цикл (считаю что нет), думаю больше похоже на 'развернутый' массив:
К>Массива здесь нет, зато есть UB. В конструкторе (считай, в особой функции) создаётся локальная переменная, у которой вызывается конструктор... То есть, эти переменные — во-первых, недостроенные, а во-вторых, не образуют сплошной массив. К>Процесс останавливается при делении на ноль (то самое UB).
К>Даже если при этом возбудится аппаратное исключение — не факт, что будет брошено асинхронное исключение С++. Это личное дело железа, ОС, компилятора, его настроек и твоих рук (иногда нужно явно регистрировать обработчик исключительных ситуаций). К>Но пусть произойдёт бросок. Это приведёт к раскрутке стека, т.е., попросту, к возвратам изо всех функций.
К>То же самое, но более просто К>
К>// так
К>XXX::XXX(int N)
К>{
К> if(N==0) throw int(0); // любой тип исключения, т.к. у нас универсальная ловушка
К> cout << "hello\n";
К>}
К>// или так
К>XXX::XXX(int N)
К>{
К> if(N==0) return;
К> XXX x(N-1);
К>}
К>// или вот так
К>void f(int N)
К>{
К> if(N==0) return;
К> cout << "hello\n";
К> f(N-1);
К>}
К>
К>То есть, это рекурсия.
я хотел избежать If.
Сначала именно так и написал, а потом решил через деление на ноль выйти,
раз уж мы хотим посмотреть все возможные варианты.
(так как через исключение никто не предлагал)
Но я думаю элегантнее кода нет... чем тот что был заявлен
Здравствуйте, ZayatsZ, Вы писали:
ZZ>Здравствуйте, <Аноним>, Вы писали:
А>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
Здравствуйте, 8bit, Вы писали:
8>Все верно ! это нужно сделать через конструктор ! 8>И это замечательно что такие решения приходят к вам мгновенно !
1) А почему это замечательно?
2) А почему это "без неявного цикла"?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, i-maverick, Вы писали:
IM>Здравствуйте, Аноним, Вы писали:
А>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
IM>Это настолько древняя задача. Она уже везде перетерта 1000 раз. IM>И даже попадалась мне на собеседовании в одной крупной компании.
IM>
IM>class C {
IM>public:
IM> C() { cout << "text\n"; }
IM>};
IM>int main {
IM> C c[1000];
IM>}
IM>
Можно разнообразить решения %)
struct C {
C() { cout << "text\n"; }
~C() { cout << "text\n"; }
};
int main {
C c[500];
}
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, 8bit, Вы писали:
8>>Все верно ! это нужно сделать через конструктор ! 8>>И это замечательно что такие решения приходят к вам мгновенно !
E>1) А почему это замечательно? E>2) А почему это "без неявного цикла"?
Здравствуйте, 8bit, Вы писали:
8>Здравствуйте, shank, Вы писали:
S>>Вывести 1 раз, а программу запустить 1000 раз? Или это тоже неявный цикл?
8> 8>Нет все должно быть сделанно за один запуск...
Здравствуйте, xr0ld, Вы писали:
E>>1) А почему это замечательно? E>>2) А почему это "без неявного цикла"? X>Рекурсия )
3) А при чём тут рекурсия?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, 8bit, Вы писали:
8>Как вывести строку текста на экран (консоль приложения) 8>РОВНО 1000 раз 8>не используя явного или не явного цикла, 8>при этом код должен быть минимален и 8>использованы только возможности стандартного C++ ?
8>Определение не явного цикла: 8>цикл созданный путем различных ухитрений, 8>(где обычно присутствует счетчик итераций)
Элементарно:
printf("РОВНО 1000 раз");
Никаких циклов: явных, неявных и т.п.
Re[16]: Варум?
От:
Аноним
Дата:
05.04.06 11:48
Оценка:
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, 8bit, Вы писали:
8>>Все верно ! это нужно сделать через конструктор ! 8>>И это замечательно что такие решения приходят к вам мгновенно !
E>2) А почему это "без неявного цикла"?
Потому что программист лично его не создает.
А уж как там это сделает компилятор — это дело третье....
Здравствуйте, ilya_ny, Вы писали:
_>Здравствуйте, Аноним, Вы писали:
А>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
_>на с++ — понятно
_>а как на C# ее решить?
Легко , хотя и маленько извращенно
class C
{
private int i = 1000;
~C()
{
if(--i >= 0)
{
Console.WriteLine("text here;");
GC.ReRegisterForFinalize(this);
GC.Collect(0);
}
else
Console.ReadKey();
}
}
static void Main(string[] args)
{
C c = new C();
c = null;
GC.Collect(0);
}
________________________________
When in Rome, do as the Romans do...
Здравствуйте, Аноним, Вы писали:
А>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
А что такое неявный цикл? В любом случае управление должно возвращаться на то же место кода, если не писать тупо оператор вывода 1000 раз.
Например, мое решение: создать класс А с членом-указателем на А. В конструкторе вызывать печать и new. Статический член инкрементировать, если 1000, new не вызывать.
Здравствуйте, Hasmik, Вы писали:
H>А что такое неявный цикл? В любом случае управление должно возвращаться на то же место кода, если не писать тупо оператор вывода 1000 раз.
Не в любом.
Во-первых, можно написать программу, не тупо генерирующую 1000 операторов вывода (буст-препроцессор или рекурсивные шаблоны).
Во-вторых, можно безусловно вызывать подпрограммы несколько раз. Это не то же самое, что напедалить 1000 строк, правда?
В-третьих, вместо дублирования кода можно дублировать данные (суммировать строки). Правда, внутри strcpy есть неявный цикл...
H>Например, мое решение: создать класс А с членом-указателем на А. В конструкторе вызывать печать и new. Статический член инкрементировать, если 1000, new не вызывать.
Зачем так выделываться? Это же просто рекурсия. Причём линейная (у тебя резиновый стек, да?)
Написать функцию Actor(int n) — т.е. A::ctor — и в ней рекурсивно вызывать себя саму по условию.
Здравствуйте, Hasmik, Вы писали:
H>Здравствуйте, Аноним, Вы писали:
А>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
H>А что такое неявный цикл?
Вот странные вы люди. Вот будет задан такой вопрос и вы что будете спрашивать что такое
неявный цикл ? Т.е что такое явный вы знаете, а что такое неявный не знаете ?
— говорят неправильно R>>>
A>>Слона-то я и не увидел
ME>На мой взгляд, то было правильное решение. Машинный код конструктора, сгенеренного шаблоном класса, не содержит циклов.
ME>Решение с массивом в машинном коде имеет цикл, который вызывает конструкторы.
Вроде как автор говорил, что не должно быть счётчика цикла в программе в каком либо виде, а то, что сгенерирует компилятор не рассматривается. В конце концов, что сгенерирует компилятор — это его лично дело. Один не сделает цикл, другой сделает.
Хотя, конечно, условие очень расплывчатое, из серии "угадайте, что я загадал"
Здравствуйте, Аноним, Вы писали:
А>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
гм
print "string\n" * 1000
Re[2]: Тест на смекалку !
От:
Аноним
Дата:
13.08.06 10:14
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Аноним, Вы писали:
А>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?
А>решение на python А>