[zapocet] 30.5 16.00

qwyxyo at 2005-05-30 19:33:27

Klasika: printf bez printf... :lol: parametre %c, %s, %d, %f ... sami sme si mohli zvolit pocet desatinnych miest pri double... baz akychkolvek dalsich parametrov. Osetrenie minimalne. Postacili zakladne vlastne testovacie vstupy. Ten chlapik zdojak preletel len ocami a "bylo to v kapse"...

P.S.
Odchadzal som hodinu pred koncom a zastali tam cca uz len piati.
Ostatnym prajem podobny 'lak'... :P

Necroman at 2005-05-31 14:18:10

Stastny ty jedince... program na ani ne 50 radku, takovy bych take rad dostal :wink: ... uvidime.

qk at 2005-05-31 16:07:03

co vsechno za fce povolili? napriklad jak se pomoci ceho se mohl prevadet float na "string"?

Dawe at 2005-05-31 17:27:45

No mě by docela zajímalo jak se to dostávalo ven, přes třeba putc? A co obejít to přes C++? Určitě to nebylo zakázaný (teda jestli to jde, myslím, že to je jina fukce než printf). :D

qk at 2005-05-31 17:44:11

Dawe wrote:No mě by docela zajímalo jak se to dostávalo ven, přes třeba putc? A co obejít to přes C++? Určitě to nebylo zakázaný (teda jestli to jde, myslím, že to je jina fukce než printf). :D

no ven bych to dostal tak ze bych si to pripravil do retezce a puts, mne spis zajima ta konverze double -> string

Trupik at 2005-05-31 19:07:05

A byla povolena makra z stdarg.h?

Trupik at 2005-05-31 19:12:48

Dawe wrote:No mě by docela zajímalo jak se to dostávalo ven, přes třeba putc? A co obejít to přes C++? Určitě to nebylo zakázaný (teda jestli to jde, myslím, že to je jina fukce než printf). :D

a taky by se to dalo obejit přes fprintf:)

Necroman at 2005-05-31 19:29:15

Trupik wrote:A byla povolena makra z stdarg.h?

Zajimalo by mne, jak bys to chtel napsat bez stdarg.h? napsat si vlastni makra pro praci s volitenym poctem argumentu :-) .
Kdyz jsem to psal doma, tak jsem pouzil toto:

int my_printf(char *ret, ... )
{int c=0;va_list p;va_start (p, ret);while(ret[c]) {if (ret[c]=='%')switch (ret[++c]){case ('d'):   // vypis cislocout << va_arg(p, int);break;case ('c'):   // vypis znakcout << va_arg(p, char);break;case ('s'):   // vypis retezeccout << va_arg(p, char*);break;case ('f'):   // vypis doublecout << va_arg(p, double);break;}else    putchar(ret[c]);  //jinak vypis nacteny znakc++;}va_end(p);return 0;
}

jeste je treba osetrit backslashe, ci jine vychytavky, ale takto by to mohlo fungovat (cout ale asi nebyl povolen, jak tak tipuji)

Trupik at 2005-05-31 19:36:34

Necroman wrote:

Trupik wrote:A byla povolena makra z stdarg.h?

Zajimalo by mne, jak bys to chtel napsat bez stdarg.h? napsat si vlastni makra pro praci s volitenym poctem argumentu :-) .
Kdyz jsem to psal doma, tak jsem pouzil toto:

int my_printf(char *ret, ... )
{int c=0;va_list p;va_start (p, ret);while(ret[c]) {if (ret[c]=='%')switch (ret[++c]){case ('d'):   // vypis cislocout << va_arg(p, int);break;case ('c'):   // vypis znakcout << va_arg(p, char);break;case ('s'):   // vypis retezeccout << va_arg(p, char*);break;case ('f'):   // vypis doublecout << va_arg(p, double);break;}else    putchar(ret[c]);  //jinak vypis nacteny znakc++;}va_end(p);return 0;
}

jeste je treba osetrit backslashe, ci jine vychytavky, ale takto by to mohlo fungovat (cout ale asi nebyl povolen, jak tak tipuji)

proste jsem se ptal, jestli byla povolena - kdyby po vas chteli, abyste jejich praci simulovali rucne, zas tak by mne to neprekvapilo.

qk at 2005-05-31 19:37:49

makra va_argu sme psali na cvikach a je to prace na 20 minut, ale je lepsi pouzit uz udelany, protoze kdyz se udela chyba v makrech, tak je to dost opruz.