HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
asd:
Codice sorgente - presumibilmente C# |
char * reverse (char * string) { char *start = string; char *left = string; char ch; while (*string++) /* mi posiziono alla fine */ ; string -= 2; while (left < string) { ch = *left; *left++ = *string; *string-- = ch; } return start; }
|
over the top
|
|
Lawliet (Normal User)
Expert
Messaggi: 386
Iscritto: 09/04/2009
|
Cosa e' che restituisci? o_O'
|
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da Lawliet:
Cosa e' che restituisci? o_O' |
restituisce la stringa stessa, al contrario. |
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Il codice di Hedo funziona similmente al mio ... ma io lo modificherei cosi'
Codice sorgente - presumibilmente C++ |
char * reverse (char *string) { char *left = string; char *right = string+strlen(string)-1; char ch; while (left < right) { ch = *left; *left++ = *right; *right-- = ch; } return string; }
|
sia perche' si puo' usare la strlen, sia perche' ha piu' senso non modificare il puntatore originale.
|
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
theprogrammer fidati che la mia implementazione è la più veloce esistente
è direttamente "tratta" dai sorgenti del crt, quindi meglio non esiste
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Postato originariamente da HeDo:
theprogrammer fidati che la mia implementazione è la più veloce esistente
è direttamente "tratta" dai sorgenti del crt, quindi meglio non esiste |
Lo so ... quello e' il sorgente della strrev contenuto in
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\crt\src\_strrev.c
Ma non e' questione di essere "veloce" ma piu' chiara e sensata ... a volte i sorgenti utilizzano costrutti per ottimizzare velocità e impiego di codice ma per questo non sono molto chiari ... Ultima modifica effettuata da theprogrammer il 27/07/2009 alle 9:48 |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da theprogrammer:
Postato originariamente da HeDo:
theprogrammer fidati che la mia implementazione è la più veloce esistente
è direttamente "tratta" dai sorgenti del crt, quindi meglio non esiste |
Lo so ... quello e' il sorgente della strrev contenuto in
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\crt\src\_strrev.c
Ma non e' questione di essere "veloce" ma piu' chiara e sensata ... a volte i sorgenti utilizzano costrutti per ottimizzare velocità e impiego di codice ma per questo non sono molto chiari ... |
indubbiamente, ma si sà, essendo il C ora relegato solo alle parti time critical delle applicazioni più grosse, la velocità è tutto quello che gli è rimasto... imho |
|
Impronta Geek (Normal User)
Rookie
Messaggi: 36
Iscritto: 24/06/2009
|
Sono ritornato oggi dalle vacanze... il codice più chiaro mi sembra quello di the progammer, ma non saprei dire qual'è il più corretto Purtroppo così siamo andati un po' avanti Il mio problema è risolto e così perderete solo tempo Vi aspetto per l'esercizio 1.20
Ringrazio tutti per le risposte e le collaborazioni!
|
|