Newsgroup: it.comp.programmare
Titolo: QUIZ (CORRETTO! O NO???)

Segue il messaggio corretto! (ho dovuto postare con telnet!!!)
So per certo che pur di non correre rischi compilerete i due codici,
comunque provate a rispondere (magari per conto vostro) senza compilarlo.
L'ho provato soltanto su Visual C++ 6.0...
Quale tra i seguenti due codici stamper… pi— caratteri?
-------1------
#include <cstdio>
enum {felice, triste, molto_triste};
char *string[3] = {"felice", "triste", "molto_triste"};
void main()
{
 int stato_corrente;
 // sono felice :-)
 stato_corrente = felice;
 // sono triste :-(
 stato_corrente = triste;
 // sono molto triste (:-\
 stato_corrente = molto_triste;
 printf("Oggi sono %s\n", string[stato_corrente]);
}
--------------
------2------
#include <cstdio>
enum {felice, triste, molto_triste};
char *string[3] = {"felice", "triste", "molto_triste"};
void main()
{
 int stato_corrente;
 // sono felice :-)
 stato_corrente = felice;
 // sono triste :-(
 stato_corrente = triste;
 // sono molto triste (:-\ 
 stato_corrente = molto_triste;
 printf("Oggi sono %s\n", string[stato_corrente]);
}
--------------
Kiuhnm

 Quale tra i seguenti due codici stamper  pi  caratteri?
mi spieghi che cambia tra i due files?
-- 
Rhymes (rhy...@NOSPAMmyself.com)
linux registered user #219707
linux registered machine #172395

 mi spieghi che cambia tra i due files?
Prima voglio aspettare qualche altra risposta.
Kiuhnm

 Segue il messaggio corretto!
Sarebbe stato difficile trovare una cosa *non visibile* se non avessi 
immaginato cosa volevi fare.
-- 
Marco Barisione
http://spazioinwind.libero.it/marcobari/

 immaginato cosa volevi fare.
Sì, a volte so essere diabolico :-)
Kiuhnm

 
editando con ViM l'arcano e` svelato... pero` devo dirti che purtroppo la cosa
interessa solo VC++, perche' g++ compila il tutto senza problemi in maniera
identica, considerando in entrambi i casi il commento multilinea...
Cmq una degna nota da Obfuscated C :)
Ah, la risposta: il secondo ;)
Adieu,
-- 
Lestat de Lioncourt  -- a.k.a --  Ciro Mattia Gonano
 Undergraduate student in Computer Science at University of Bologna
 IHGGer #1049   <=>  ICQ#: 52631406   <=>   URL: 
http://www.CS.UniBO.It/~gonano
 Debian admin at 
Students.CS.UniBO.It
 <=> look at headers for my JabberID & GPG

 il commento multilinea... Cmq una degna nota da Obfuscated C :)
Chissà perchè, ma sospettavo che fosse una "feature" del VC++.
Ogni tanto scopro qualche stranezza, così la posto sotto forma di quiz...
A proposito di obfuscated (o "obsfucated", come direbbe la MS), cosa ne
pensi di questo codice "altamente portabile" per VC++ 6.0?
/*
Probabilmente mistery2 funziona solo se compilato con MS Visual Studio 6.0
in quanto sfrutta la particolare
implementazione del compilatore.
Testato su Windows 98, 98SE, NT. Non funziona su Windows NT.
Caratteristiche principali:
- semplice checksum
- codice automodificante (SMC) (funziona solo su processori IA-32!)
- codifica concatenata (una qualsiasi modifica locale si riflette
sull'intero codice)
- momentanea sospensione del multitasking di Windows (ogni CRASH inchioda
l'intero s. operativo)
- perturbazione dello stack (rende "impossibile" lo stepping tramite
debugger (RING 3))
NB: mistery2 non danneggia intenzionalmente il sistema operativo o
l'hardware, comunque, se modificato o
 debuggato, il suo comportamento è indefinito.
*/
#include <cstdio>
#pragma const_seg(".data")
typedef (____)();void
main(_,__,___)____*__;{_-_/_?__():main(fputchar,"\x60\x9C\xFA\xE8\x00\x00\x0
0\x00\
\x5E\xE9\xA3\x00\x00\x00\xC6\x25\x00\x00\x00\xB9\x20\x00\x00\x00\x2B\xE2\x8B
\x44\x34\xD9\x33\x44\x34\xDD\x89\
\x06\x83\xC6\x04\x90\x03\xE2\x49\x75\xEB\x66\x77\x3f\xa9\xed\x02\x37\x39\x05
\x02\x37\x39\x05\x5d\x1c\xdb\x88\
\x01\x20\xd9\x31\x4e\x20\xd9\x31\x7d\xe0\x53\x75\x61\x39\x50\x97\x30\x6b\x00
\x68\xe6\xe8\xc4\x6c\xbc\xb1\xef\
\x8e\xff\xf8\x9a\x66\xfc\x1a\x07\x07\x3f\x57\x4e\x54\x6b\x12\x1c\x0d\x59\x33
\x3d\x2c\x54\x39\x30\x26\x04\x5c\
\x5e\x55\x65\x28\x3b\x75\x01\x41\x1b\x10\x72\x32\x7e\x62\x17\x12\x17\x0c\x37
\x75\x65\x6d\x53\x1a\x45\x09\x3a\
\x3a\x28\x66\x5e\x53\x4e\x0f\x3d\x32\x3c\x6a\x1d\x43\x49\x0f\x6e\x37\x26\x2f
\x03\x52\x55\x5c\x62\x35\x32\x35\
\x0d\x0a\x0d\x0a\x00\x00\x00\x8D\x54\x24\xD9\x83\xC6\x25\xB9\x20\x00\x00\x00
\x33\xC0\x2B\xE2\x03\x44\x34\xD9\
\x83\xC6\x04\x03\xE2\x49\x75\xF2\x81\xEE\xA5\x00\x00\x00\x83\xC6\x25\x3D\x41
\x81\x79\x27\x0F\x84\x32\xFF\xFF\
\xFF\xEB\xFE",0);}
// by Kiuhnm
Kiuhnm

Cum in it.comp.programmare horto Purpurea Rosa pulchritudinem admiratus
eram, Domini Die 20 February 2003 mihi appropinquavit
Kiuhnm <
kiu...@softhome.net
*NOSPAM*.invalid> proclamavitque:
[cut]
quello e` niente... prova questo! :)
<CODE>
/* mistery.c */
#include <stdio.h>
main(t,_,a)char *a;
{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86, 0, a+1 )+a)):1,t<_?main(t+1, _, a ):3,main ( -94, -27+t, a
)&&t == 2 ?_<13 ?main ( 2, _+1, "%s %d %d\n" ):9:16:t<0?t<-72?main(_,
t,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+\
,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/\
+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){n\
l]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#\
n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;\
#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")
:t<-50?_==*a ?putchar(a[31]):main(-65,_,a+1):main((*a == '/')+t,_,a\
+1 ):0<t?main ( 2, 2 , "%s"):*a=='/'||main(0,main(-61,*a, "!ek;dc \
i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}
</CODE>


 Prima voglio aspettare qualche altra risposta.
Ora l'ho capito.. :)


  // sono molto triste (:-\
uno.cpp è il primo e due.cpp è il secondo


 t<-50?_==*a ?putchar(a[31]):main(-65,_,a+1):main((*a == '/')+t,_,a\
+1 ):0<t?main ( 2, 2 , "%s"):*a=='/'||main(0,main(-61,*a, "!ek;dc \
i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}
</CODE>
Anche io avrei potuto trasformare i vari \x?? in ASCII...comunque mistery 1
complica un po' le cose con il costrutto "?:"
Kiuhnm

 Chissà perchè, ma sospettavo che fosse una "feature" del VC++.
Dovrebbe essere una caratteristica standard, e un bug del gcc.
        Mauro

Eh eh, non appena ho incollato il tutto su SciTE ho visto che una riga
stranamente era considerata un commento...
Ciao
--
DigitalShock