Re: Тест на смекалку !
От: ekamaloff Великобритания  
Дата: 27.03.06 06:27
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?


Вот еще одно решение с помощью препроцессора:

// print.h
#ifndef REPEAT_COUNTER
#define REPEAT_COUNTER 0
#endif

#if REPEAT_COUNTER < REPEAT_COUNT

#define REPEAT_COUNTER (REPEAT_COUNTER + 1)

PRINT_STRING
#include "print.h"

#endif


// main.cpp
#include <iostream>

#define REPEAT_COUNT        1000
#define PRINT_STRING        std::cout << "Hello, world!" << std::endl;

int main()
{
    #include "print.h"
}


Вот только у меня это не компилится (VC++ 7.1):

d:\...\print.h(10): fatal error C1014: too many include files : depth = 1024


Видимо я где-то напортачил, только не могу понять где. Или я чего-то принципиально не понимаю и так не получится?
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[2]: Тест на смекалку !
От: 8bit  
Дата: 27.03.06 07:28
Оценка:
Здравствуйте, ZayatsZ, Вы писали:

ZZ>Здравствуйте, <Аноним>, Вы писали:


А>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?



ZZ>здесь
Автор: kosfr
Дата: 19.01.05

ZZ>здесь
Автор: PVitaliy
Дата: 18.02.05


Повторение мать учения !
Re[2]: Тест на смекалку !
От: e-Xecutor Россия  
Дата: 27.03.06 07:40
Оценка: 15 (1) +1
Здравствуйте, Кодт, Вы писали:

гибридный вариант:

#include <stdio.h>
struct x{x(){printf("string\n");};};
template <class T> struct x2{x2(){T t1,t2;}};
template <class T> struct x5{x5(){x2<T> t1,t2;T t;}};
int main(int argc,char* argv[])
{
  x5<x5<x5<x2<x2<x2<x> > > > > > o;
  return 0;
}
Re[2]: Тест на смекалку !
От: ekamaloff Великобритания  
Дата: 27.03.06 07:48
Оценка:
Здравствуйте, ekamaloff, Вы писали:

<>

Все, понял, гоню.
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[2]: А если так
От: andrey.def Россия  
Дата: 27.03.06 08:40
Оценка:
select 'hello' as dummy from ( select * from (select * from dual connect by dummy=dummy) where rownum<1001);


PS: ессно это не Си
Re[3]: А если так
От: andrey.def Россия  
Дата: 27.03.06 08:52
Оценка:
Здравствуйте, andrey.def, Вы писали:

AD>
AD>select 'hello' as dummy from ( select * from (select * from dual connect by dummy=dummy) where rownum<1001);
AD>


Ну конечно же в погоне за сокращением кода нужно писать так:

 select 'hello'  from (select * from dual connect by dummy=dummy) where rownum<1001
Re[4]: НУ И СОВСЕМ СОКРАТИТЬ!
От: andrey.def Россия  
Дата: 27.03.06 08:54
Оценка:
select rpad(' ',6001,'hello'||chr(10)) from dual
Re: Тест на смекалку !
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 27.03.06 09:41
Оценка:
<Аноним>,

А>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?


Хм... На каком языке? #-)
    1000 $ 'hello '
hello hello hello hello hello hello hello hello hello hell...
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[2]: Тест на смекалку !
От: Mikl Kurkov Россия  
Дата: 27.03.06 10:38
Оценка: 5 (1)
On Mon, 27 Mar 2006 13:41:45 +0400, Lazy Cjow Rhrr <10144@users.rsdn.ru>
wrote:

> <Аноним>,

>
> А>Как вывести строку текста 1000 раз не используя явного или не явного
> цикла ?
>
> Хм... На каком языке? #-)
>
>     1000 $ 'hello '
> hello hello hello hello hello hello hello hello hello hell...
>


Не совсем то что требуется, как я понял.
Будет 1000 символов выведено, а не строк.
Так наверное правильнее:
   1000 $,: 'hello'
hello
hello
hello
hello
hello
...


--
Mikl
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Тест на смекалку !
От: ekamaloff Великобритания  
Дата: 27.03.06 10:57
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Хм... На каком языке? #-)


2 andrey.def and you:

Re: Тест на смекалку ! Уточнение и подсказка
Автор: 8bit
Дата: 25.03.06
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[15]: Варум?
От: Erop Россия  
Дата: 27.03.06 13:35
Оценка:
Здравствуйте, 8bit, Вы писали:

8>Все верно ! это нужно сделать через конструктор !

8>И это замечательно что такие решения приходят к вам мгновенно !


1) А почему это замечательно?
2) А почему это "без неявного цикла"?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Тест на смекалку !
От: i-maverick Россия  
Дата: 28.03.06 09:06
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?


Это настолько древняя задача. Она уже везде перетерта 1000 раз.
И даже попадалась мне на собеседовании в одной крупной компании.

class C {
public:
  C() { cout << "text\n"; }
};

int main {
  C c[1000];
}
Re[2]: Тест на смекалку !
От: _DAle_ Беларусь  
Дата: 28.03.06 09:13
Оценка:
Здравствуйте, 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];
}
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[3]: Тест на смекалку !
От: i-maverick Россия  
Дата: 28.03.06 09:21
Оценка:
Здравствуйте, _DAle_, Вы писали:

_DA>Можно разнообразить решения %)

_DA>
_DA>struct C {
_DA>  C()  { cout << "text\n"; }
_DA>  ~C() { cout << "text\n"; }
_DA>};

_DA>int main {
_DA>  C c[500];
_DA>}
_DA>


А у меня кода меньше (если класс заменить на структуру).
Re[3]: Тест на смекалку !
От: Вумудщзук Беларусь  
Дата: 28.03.06 10:39
Оценка:
>>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?

>
printf("текст\n");
>printf("текст\n");
>printf("текст\n");
>printf("текст\n");
>// ... и так 1000 раз

>

>код должен быть минимален.

тогда брутфорсить можно так: (вариация Кодт'ова решения ниже )

    char *txt = "текст\n", *fmt = "%s%s%s%s";
    char s1[10*1024], s2[10*1024];
    sprintf(s1, fmt, txt, txt, txt, txt);
    sprintf(s2, fmt, s1,s1,s1,s1);
    sprintf(s1, fmt, s2,s2,s2,s2);
    sprintf(s2, fmt, s1,s1,s1,s1);
    printf(fmt, s2,s2,s2,s2);
Homo sum et nihil humani a me alienum puto...
Re[16]: Варум?
От: xr0ld  
Дата: 28.03.06 20:39
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, 8bit, Вы писали:


8>>Все верно ! это нужно сделать через конструктор !

8>>И это замечательно что такие решения приходят к вам мгновенно !


E>1) А почему это замечательно?

E>2) А почему это "без неявного цикла"?

Рекурсия )
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Эврика ! :)
От: xr0ld  
Дата: 28.03.06 22:30
Оценка:
Здравствуйте, 8bit, Вы писали:

8>Здравствуйте, shank, Вы писали:


S>>Вывести 1 раз, а программу запустить 1000 раз? Или это тоже неявный цикл?


8>

8>Нет все должно быть сделанно за один запуск...

Рекурсия )
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Эврика ! :)
От: i-maverick Россия  
Дата: 28.03.06 22:55
Оценка: :)
Здравствуйте, xr0ld, Вы писали:

S>>>Вывести 1 раз, а программу запустить 1000 раз? Или это тоже неявный цикл?

8>>Нет все должно быть сделанно за один запуск...

X> Рекурсия )


Зачем такие громкие слова? Ты на простом языке напиши.
Re: Тест на смекалку !
От: ilya_ny  
Дата: 29.03.06 04:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как вывести строку текста 1000 раз не используя явного или не явного цикла ?


на с++ — понятно

а как на C# ее решить?
Re[17]: Варум?
От: Erop Россия  
Дата: 30.03.06 15:16
Оценка:
Здравствуйте, xr0ld, Вы писали:

E>>1) А почему это замечательно?

E>>2) А почему это "без неявного цикла"?
X>Рекурсия )
3) А при чём тут рекурсия?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.