Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - rovesciare una stringa (Esercizio 1.19 di
Forum - C/C++ - rovesciare una stringa (Esercizio 1.19 di "Il Linguaggio C") - Pagina 4

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 16:26
Sabato, 25/07/2009

asd:

Codice sorgente - presumibilmente C#

  1. char * reverse (char * string)
  2. {
  3.         char *start = string;
  4.         char *left = string;
  5.         char ch;
  6.  
  7.         while (*string++)                 /* mi posiziono alla fine */
  8.                 ;
  9.         string -= 2;
  10.  
  11.         while (left < string)
  12.         {
  13.                 ch = *left;
  14.                 *left++ = *string;
  15.                 *string-- = ch;
  16.         }
  17.  
  18.         return start;
  19. }



over the top :)

PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 18:32
Sabato, 25/07/2009
Cosa e' che restituisci? o_O'

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 1:26
Domenica, 26/07/2009
Testo quotato

Postato originariamente da Lawliet:

Cosa e' che restituisci? o_O'



restituisce la stringa stessa, al contrario.

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 9:38
Domenica, 26/07/2009
Il codice di Hedo funziona similmente al mio ... ma io lo modificherei cosi'

Codice sorgente - presumibilmente C++

  1. char * reverse (char *string)
  2. {
  3.         char *left = string;
  4.         char *right = string+strlen(string)-1;
  5.         char ch;
  6.  
  7.         while (left < right)
  8.         {
  9.                 ch = *left;
  10.                 *left++ = *right;
  11.                 *right-- = ch;
  12.         }
  13.  
  14.         return string;
  15. }



sia perche' si puo' usare la strlen, sia perche' ha piu' senso non modificare il puntatore originale.

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 22:39
Domenica, 26/07/2009
theprogrammer fidati che la mia implementazione è la più veloce esistente :)

è direttamente "tratta" dai sorgenti del crt, quindi meglio non esiste :D

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 9:44
Lunedì, 27/07/2009
Testo quotato

Postato originariamente da HeDo:

theprogrammer fidati che la mia implementazione è la più veloce esistente :)

è direttamente "tratta" dai sorgenti del crt, quindi meglio non esiste :D



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
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 11:47
Lunedì, 27/07/2009
Testo quotato

Postato originariamente da theprogrammer:

Testo quotato

Postato originariamente da HeDo:

theprogrammer fidati che la mia implementazione è la più veloce esistente :)

è direttamente "tratta" dai sorgenti del crt, quindi meglio non esiste :D



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

PM Quote
Avatar
Impronta Geek (Normal User)
Rookie


Messaggi: 36
Iscritto: 24/06/2009

Segnala al moderatore
Postato alle 20:55
Martedì, 28/07/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 8-| Il mio problema è risolto e così perderete solo tempo :) Vi aspetto per l'esercizio 1.20 :D

Ringrazio tutti per le risposte e le collaborazioni! :hail:

PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo