Come da titolo come faccio a vedere se una stringa contiene alla fine il carattere ad esempio 'e' ?
Come da titolo come faccio a vedere se una stringa contiene alla fine il carattere ad esempio 'e' ?
Non esiste un "comando"... comunque con "stringa" cosa intendi? Un array di caratteri (stringa stile C) o un oggetto della classe string (stile C++) ? Nel primo caso, se s è la tua stringa e n la sua llunghezza
cout << s[n-1];
anche se in realtà l'ultimo carattere di una stringa dovrebbe essere il terminatore '\0'. Altrimenti, se non conosci la lunghezza della stringa
cout << s[strlen(s) - 1];
se invece la tua stringa è un oggetto della classe string, allora al momento non so se c'è un modo più carino di questo (è un po' che non programmo in C++) ma così funziona:
cout << * ( s.end() - 1 );
in pratica se s è l'oggetto string ti fai restituire un iteratore all'elemento successivo all'ultimo carattere della stringa con il metodo end(), lo decrementi quindi di uno (in maniera tale da avere proprio l'ultimo) e poi lo dereferenzi con l'operatore *.
every day above ground is a good one
ok grazie per il suggerimento adesso proverò
scusa ma provando in quella maniera mi da errore, non ce un altrpo modo?
Quale maniera di quelle specificate? Quale errore? Perché non posti il codice? Perché chiedi un'altra "formula magica" e non cerchi di ragionare sui problemi?Originariamente inviato da Gybra
scusa ma provando in quella maniera mi da errore, non ce un altrpo modo?
Amaro C++, il gusto pieno dell'undefined behavior.
Originariamente inviato da MItaly
Quale maniera di quelle specificate? Quale errore? Perché non posti il codice? Perché chiedi un'altra "formula magica" e non cerchi di ragionare sui problemi?
No MP tecnici (non rispondo nemmeno!), usa il forum.
Raymond Chen spesso regala delle perle... uno dei motivi per cui leggo il suo blog tutti i giorni (oltre ovviamente all'ottimo contenuto tecnico).
Amaro C++, il gusto pieno dell'undefined behavior.
ecco il codi:
codice:#include <iostream> #include <stdlib.h> #include <string.h> using namespace std; typedef char Tstring25[26]; typedef Tstring25 tvs[20]; int main(int argc, char *argv[]) { tvs frase; Tstring25 parola; int conta10,i,contaLa,contaE,contaAL; contaAL = 0; contaE = 0; contaLa = 0; conta10 = 0; i = 0; do{ cout<<"Inserisci la "<<i+1<<char(248)<<" parola: "<<endl; gets(parola); if(strlen(parola)>10){ conta10++; } if(strstr(parola,"LA")){ contaLa++; } else{ if(strstr(parola,"la")){ contaLa++; } } if(strchr(frase[i-1],'E')){ contaE++; } else{ if(strchr(parola[],'e')){ contaE++; } } if(strlen(parola)>0){ strcpy(frase[i],parola); i++; } else{ break; } }while(i<20); cout<<"Ci sono "<<i<<" parole/a nella frase"<<endl; cout<<"Le parole con piu' di 10 caratteri sono: "<<conta10<<endl; cout<<"Le parole che contengo i caratteri LA/la sono: "<<contaLa<<endl; cout<<"Le parole che finiscono con il carattere E/e sono: "<<contaE<<endl;//quale condizione mettere affinchè il contatore mi conti le parole che finiscono con una E/e cout<<"Le parole che iniziano con i caratteri AL/al sono: "<<contaAL<<endl; system("PAUSE"); return 0; }
Il programma non e' compilabile ... c'e' un errore in questa riga
if(strchr(parola[],'e')){
Cosa volevi scrivere?
No MP tecnici (non rispondo nemmeno!), usa il forum.
ragazzi ecco ho sempre il problema che non so come fare per incrementare il contatore in caso la parola finisca per E/e ecco il codice:
codice:#include <iostream> #include <stdlib.h> #include <string.h> using namespace std; typedef char Tstring25[26]; typedef Tstring25 tvs[20]; int main(int argc, char *argv[]) { tvs frase; Tstring25 parola; int conta10,i,contaLa,contaE,contaAL; contaAL = 0; contaE = 0; contaLa = 0; conta10 = 0; i = 0; do{ cout<<"Inserisci la "<<i+1<<char(248)<<" parola: "<<endl; gets(parola); if(strlen(parola)>10){ conta10++; } if(strstr(parola,"LA")){ contaLa++; } else{ if(strstr(parola,"la")){ contaLa++; } } if(strchr(parola,'E')){// in queste 2 condizioni non so cosa scrivere per incrementare il contatore in caso nella parola sia presente il carattere 'e' come ultimo carattere contaE++; } else{ if(strchr(parola,'e')){ contaE++; } } if(strlen(parola)>0){ strcpy(frase[i],parola); i++; } else{ break; } }while(i<20); cout<<"Ci sono "<<i<<" parole/a nella frase"<<endl; cout<<"Le parole con piu' di 10 caratteri sono: "<<conta10<<endl; cout<<"Le parole che contengo i caratteri LA/la sono: "<<contaLa<<endl; cout<<"Le parole che finiscono con il carattere E/e sono: "<<contaE<<endl; cout<<"Le parole che iniziano con i caratteri AL/al sono: "<<contaAL<<endl; system("PAUSE"); return 0; }