Newsgroup: it.comp.lang.c++
Titolo: lettura al contrario di una stringa

Salve a tutti,
qualcuno puo dirmi dove sbaglio?
#include <iostream>
void inverti (char *);
int main (){
char string[]="3412";
cout <<"La stringa immessa e': " << string <<endl;
cout <<"\n L'inverso e': ";
inverti ( string );
cout << endl;
return 0;
}
void inverti ( char *sptr)
for (int i=4; i<=0; i--){
{
  for(; *sptr!=0; sptr++) {
    ;
      }
   cout << --sptr;
 }
}
Ciao a tutti
garfles

 }
poi sinceramente non si capisce quale e' il senso dei due cicli annidati
il secondo ciclo sposta avanti il puntatore fino a che non arriva
in fondo alla stringa ! Non ha senso ! E il primo ciclo
in ogni caso e' sbagliato perche' cicla da i=4 a i<=0 (e quindi
non esegue nemmeno una volta!)
Ti bastava fare
void inverti(char *sptr)
{
   for (int i=3; i>=0; i--) cout<<sptr[i];
}
ciao,
g.

ciccio ha scritto:

ti consiglio una inverti() ricorsiva che prima inverte e poi stampa
(se non è ancora finita la stringa)
così non dipendi dalla lunghezza max

 garfles
Ciao, ti chiedo scusa in anticipo per quello che sto per dire... ma non è
nulla di personale.
Recentemente sto assistendo ad uno scadere qualitativo importante dei
problemi sottoposti al forum di discussione.
Per carità, siamo stati studenti tutti e abbiamo commesso tanti errori e
tanti ne commetteremo: ancora oggi non possiamo sempre essere al massimo
della forma e ci sono giorni in cui siamo meno efficaci del solito.
Le persone che rispondono a quesiti "semplici" (come ha fatto Giovanni) sono
pazienti e lo fanno per "spirito" di collaborazione e per far crescere le
persone che stanno imparando o si vogliono perfezionare, ed è un'opera
meritoria.
Dedicano parte del loro tempo a controllare righe di codice e a formulare
risposte corrette.
Le persone però che postano questi questiti, pur avendo il diritto (e il
nostro incitamento, se mossi dal desiderio di scrivere programmi migliori)
di postare richieste e codice, dovrebbero però controllare con scrupolo il
codice che stanno inviando (proprio per rispetto di chi perde un pò del
proprio tempo per rispondere) e riconoscere prima di fare richieste se non
ci sia la necessità di consultare prima un manuale di programmazione o un
libro di testo, almeno per le cose più banali.
E' utile e non costa davvero nulla, provare ad esempio compilare il codice
per vedere errori macroscopici o spingersi addirittura all'uso di un
debugger o a tecniche di debugging.
Niente di personale... la mia critica era un pò in generale, non ce l'ho con
te!
Ciao.
Il codice per fare quello che chiedi, ovviamente è simile a questo.
#include <iostream>
#include <cstring> // per strlen(const char *s)
using namespace std;
void inverti(const char*);
int main(int argc, char* argv[])
{
        const char *c_string="prova";
        inverti(c_string);
        return 0;
}
void inverti(const char* s)
{
        for (int i=strlen(s)-1;i>=0;i--) cout << s[i];
}

Concordo pienamente con quanto ha scritto Paolo. Desidero anche
aggiungere (anche in questo caso mi esprimo in generale e non
necessariamente all'autore del messaggio originale) che il C++ e' un
linguaggio molto complesso, il cui apprendimento richiede lo studio di
testi adeguati. Andando per tentativi, come sembrano fare diverse
persone che di questi tempi scrivono sul newsgroup, non si va da
nessuna parte. Anzi, se quello e' l'approccio che preferite,
probabilmente lo strumento migliore per voi e' il Visual Basic, sia
detto senza intenti offensivi.
Ciao,
Nicola