PDA

View Full Version : [C++] problema script


SergiusITA
04-12-2008, 13:03
#include <stdio.h>
main (){
se (1 == 1){
printf ("Hello World");
}
}

Avrete notato che in questo script c'è un'errore..
Con una sola riga di codice è possibile farlo funzionare..
La linea puo essere solo aggiunta, quindi non è possibile modificarne un'altra..
Scoprite la linea da aggiungere, sarà quella la vostra password..

Nota: la password va scritta rimuovendo tutti gli spazi, quindi
se fosse "while (1 == 1){" diventerebbe "while(1==1){"

banryu79
04-12-2008, 15:38
A occhio c'è ben più di un solo errore: manca ad esempio il tipo di ritorno del main (e relativo return statement finale nel corpo).

SergiusITA
04-12-2008, 17:18
A occhio c'è ben più di un solo errore: manca ad esempio il tipo di ritorno del main (e relativo return statement finale nel corpo).

per far funzionare il programma è ovvio che basta sostituire "se" con "if"
voglio sapere come si fa a farlo funzionare, mantenendolo cosi com'è, e aggiungendo una sola riga

variabilepippo
04-12-2008, 17:38
voglio sapere come si fa a farlo funzionare, mantenendolo cosi com'è, e aggiungendo una sola riga


E' un compito? O stai mettendo alla prova l'intelligenza degli utenti del forum? :rolleyes:

SergiusITA
04-12-2008, 18:52
E' un compito? O stai mettendo alla prova l'intelligenza degli utenti del forum? :rolleyes:
voglio sapere solo se qualcuno lo sa fare...:D

Alex_87_xelA
04-12-2008, 22:19
#define se if

cosa ho vinto ?

DoubleAJ
05-12-2008, 01:49
Comunque questo è C, non C++...

sottovento
05-12-2008, 08:42
#define se if

cosa ho vinto ?

Visto che ci siamo....
Siccome questo programma stampa
Hello world
che e' bruttino, vogliamo stampare


***********
* Hello world *
***********


che naturalmente e' molto bello.
Lo sai fare senza modificare il codice presente nella funzione main()?

Se qualcuno ha qualche indovinello di questo genere, magari tiriamo alla fine della giornata (visto che e' venerdi) :D

Alex_87_xelA
05-12-2008, 12:21
#include <stdio.h>
#define se if

#define printf(stringa) printf("***************\n"); \
printf("* " stringa " *\n"); \
printf("***************\n");

main ()
{
se (1 == 1)
printf ("Hello World");
}


va bene cosi ?

sottovento
05-12-2008, 12:47
va bene cosi ?

Wow, funziona!!
Mi faceva paura quella #define printf, al punto che sono andato a provarla.

Io avevo in mente un'altra soluzione, e non avevo minimamente pensato ad una cosa cosi'.... complimenti!

Un altro indovinello?

Alex_87_xelA
05-12-2008, 13:01
Wow, funziona!!
Mi faceva paura quella #define printf, al punto che sono andato a provarla.

Io avevo in mente un'altra soluzione, e non avevo minimamente pensato ad una cosa cosi'.... complimenti!

Un altro indovinello?

GRAZIE per i complimenti :D
mi dici la tua soluzione ... SONO CURIOSO
ok altro indovinello. ... ASPETTO

sottovento
05-12-2008, 13:09
La mia soluzione era piu' "classica": dichiaro un oggetto globale, nel costruttore e nel distruttore ci metto le mie stringhe :D



class MyObject
{
MyObject ()
{
printf ("**********\n*");
}

~MyObject ()
{
printf ("*\n"*********\n");
}
};

MyObject obj;

main ()
{
se (1 == 1)
printf ("Hello World");
}


Per gli indovinelli.... (beh, penso che cmq potrebbero contribuire tutti, no?)

DOMANDA: il seguente codice:


int main ()
{
3;
}


e' un programma C++ valido?

(PS senza usare il compilatore, ovviamente)

Alex_87_xelA
05-12-2008, 13:20
La mia soluzione era piu' "classica": dichiaro un oggetto globale, nel costruttore e nel distruttore ci metto le mie stringhe :D



class MyObject
{
MyObject ()
{
printf ("**********\n*");
}

~MyObject ()
{
printf ("*\n"*********\n");
}
};

MyObject obj;

main ()
{
se (1 == 1)
printf ("Hello World");
}


bella soluzione !!!
io invece a questa non avevo PROPRIO pensato !!! complimenti anche a te !!!

Per gli indovinelli.... (beh, penso che cmq potrebbero contribuire tutti, no?)
concordo ... TUTTI dovrebbero partecipare agli indovinelli.

DOMANDA: il seguente codice:


int main ()
{
3;
}


e' un programma C++ valido?

(PS senza usare il compilatore, ovviamente)

ad occhio(cioè senza utilizare il compilatore) manca il return ... poi dovrebbe essere ok.
anche se quel 3; non serve a niente li non dovrebbe dare errore

giusto ?

ORA VADO E PROVO :D

sottovento
05-12-2008, 13:25
Beh, io pensavo che anche qualcun altro potrebbe proporne, di indovinelli... ;)

(altrimenti passo per quello che sa tutte le soluzioni e non e' un ruolo che mi si addice. Anzi!)

Vincenzo1968
05-12-2008, 14:49
Più che un indovinello, propongo una piccola sfida, un mini contest:

Si scriva una funzione che, data una dichiarazione complessa, la traduca in italiano.
Esempio:

Se passo la stringa

char (*(*x())[])()

la funzione deve stampare a video il testo seguente:

x è una funzione che restituisce un puntatore a vettore[] di puntatore a funzione che restituisce char

Alex_87_xelA
05-12-2008, 17:01
Più che un indovinello, propongo una piccola sfida, un mini contest:

Si scriva una funzione che, data una dichiarazione complessa, la traduca in italiano.
Esempio:

Se passo la stringa

char (*(*x())[])()

la funzione deve stampare a video il testo seguente:

x è una funzione che restituisce un puntatore a vettore[] di puntatore a funzione che restituisce char


ok ... il primo che finisce lo posta :D
(spero solo che non è un programma che già avevi fatto !!! seno mi freghi :D )

Volutomitra
05-12-2008, 17:05
la traduca in italiano.

spero solo che non è un programma che già avevi fatto !!!

Auguri! :)

Alex_87_xelA
05-12-2008, 17:25
Auguri! :)

GRAZIE ... ci vogliono veramente.

ho pensato gia ad alcuni casi come questo

int ((*(*x)(int, double, char))[]);

cioè si devono vedere anche gli argomenti !!! WOW ci perderò un bel po di tempo ... ma oggi no però :D

vedro di CERCARE di farlo domani mattina ... ora devo studiare

Alex_87_xelA
05-12-2008, 17:26
Più che un indovinello, propongo una piccola sfida, un mini contest:

Si scriva una funzione che, data una dichiarazione complessa, la traduca in italiano.
Esempio:

Se passo la stringa

char (*(*x())[])()

la funzione deve stampare a video il testo seguente:

x è una funzione che restituisce un puntatore a vettore[] di puntatore a funzione che restituisce char


potevi scegliere una cosa dove perdere meno tempo !!! hehehehe :D
è piu facile a progettare un compilatore :D

comunque ci provo di sicuro a risolverlo

Vincenzo1968
05-12-2008, 18:24
potevi scegliere una cosa dove perdere meno tempo !!! hehehehe :D
è piu facile a progettare un compilatore :D

comunque ci provo di sicuro a risolverlo

Ciao Alex,

la soluzione si trova nel libro Il linguaggio C di Kernighan e Ritchie(pag. 121). ;)
Io ho creato, partendo da quella del libro, una versione ampliata con la gestione degli errori. Domani la posto.
A parte tutto penso sia interessante: può capitare di dover modificare codice scritto da altri e imbattersi in dichiarazioni complesse, difficili da decifrare(soprattutto se mancano i commenti).

:)

Alex_87_xelA
05-12-2008, 19:12
Ciao Alex,

la soluzione si trova nel libro Il linguaggio C di Kernighan e Ritchie(pag. 121). ;)
Io ho creato, partendo da quella del libro, una versione ampliata con la gestione degli errori. Domani la posto.
A parte tutto penso sia interessante: può capitare di dover modificare codice scritto da altri e imbattersi in dichiarazioni complesse, difficili da decifrare(soprattutto se mancano i commenti).

:)

:D
soluzioni pronte in casa a me non piacciono, almeno come penso io ... è meglio prima provarci e poi se proprio non resce, vedere la soluzione ... anche se devo dire che questo programmino è molto sfizioso ... io ci sto lavorando su comunque.

Alex_87_xelA
06-12-2008, 13:11
mentre aspetto la soluzione di Vincenzo1968 ... aggiungo un indovinello anche io


void main()
{
int n1 = 4;
int n2 = 3;

cout << "n1 - n2 = " << n1 + n2 << endl;
}


non toccando il main .... ma solo aggiungendo linee di codice ... trasformare quella somma in sottrazione.

NB. cout << "n1 - n2" // questo non è errato e tanto meno è errato n1+n2 ...
bisogna fare in modo di trasformare la somma in sottrazione ...
a voi ora ....

io ovviamente gia l'ho fatto.

Alex_87_xelA
06-12-2008, 13:19
aggiungo che io l'ho fatto aggiungendo solo 9 righe di codice (contando anche le parentesi :D )

Alex_87_xelA
06-12-2008, 16:22
nessuno risponde ?
nemmeno tu Vincenzo ?

il solito "so tutto fare" che poi non risponde !!!
ok ... questa è la mia ultima cosa che scrivo in questo thread !!!

Vincenzo1968
06-12-2008, 17:16
nessuno risponde ?
nemmeno tu Vincenzo ?

il solito "so tutto fare" che poi non risponde !!!
ok ... questa è la mia ultima cosa che scrivo in questo thread !!!

Ohé Alex,

Io non non mai detto che so fare tutto. Anzi, molte cose non le so fare affatto. Il problema che hai posto, per esempio, non lo so risolvere. È per questo che non ho risposto ;)

:)

Alex_87_xelA
06-12-2008, 17:30
Ohé Alex,

Io non non mai detto che so fare tutto. Anzi, molte cose non le so fare affatto. Il problema che hai posto, per esempio, non lo so risolvere. È per questo che non ho risposto ;)

:)

ok allora metto il codice ...


#include <iostream.h>

class CLASSE
{
public:
CLASSE(int n) : num(n) {}
friend int operator + (const CLASSE &c1, const CLASSE &c2) { return c1.num - c2.num; }
private:
int num;
};

#define int CLASSE

void main()
{
int n1 = 4;
int n2 = 3;

cout << "n1 - n2 = " << n1 + n2 << endl;
}


non so se si puo fare in altri modi ... ma questo mi è venuto in mente in questo momento.

scusa Vincenzo ... ma se sai fare il programma che traduce in italiano dichiarazioni complesse ... questo doveva essere un giochetto.

||ElChE||88
06-12-2008, 17:41
mentre aspetto la soluzione di Vincenzo1968 ... aggiungo un indovinello anche io


void main()
{
int n1 = 4;
int n2 = 3;

cout << "n1 - n2 = " << n1 + n2 << endl;
}


non toccando il main .... ma solo aggiungendo linee di codice ... trasformare quella somma in sottrazione.

NB. cout << "n1 - n2" // questo non è errato e tanto meno è errato n1+n2 ...
bisogna fare in modo di trasformare la somma in sottrazione ...
a voi ora ....

io ovviamente gia l'ho fatto.
void main non è c++.

Comunque bastava un
#define cout cout<<"n1 - n2 = "<<n1-n2<<endl;}void(_)(int(n1),int(n2)){cout
:asd:

Alex_87_xelA
06-12-2008, 18:28
#define cout cout<<"n1 - n2 = "<<n1-n2<<endl;}void(_)(int(n1),int(n2)){cout


bella cosa questa :D

anche se poi basta che aggiungo una linea di codice come questa


void main()
{
int n1 = 4;
int n2 = 3;

cout << "n1 - n2 = " << n1 + n2 << endl;

cout << "FINE" << endl;
}


che non funziona piu --- mentre il mio continua a funzionare :ciapet:

però funziona perchè avevo detto che il main non puo essere modificate :D

Alex_87_xelA
06-12-2008, 18:38
sono sfiziose queste cose ... che pur essendo banali portano a pensare cose mai pensate prima :D