Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    142

    [C++]Quale comando usare per controllare il carattere finale di una stringa

    Come da titolo come faccio a vedere se una stringa contiene alla fine il carattere ad esempio 'e' ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    142
    ok grazie per il suggerimento adesso proverò

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    142
    scusa ma provando in quella maniera mi da errore, non ce un altrpo modo?

  5. #5
    Originariamente inviato da Gybra
    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?
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    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.

  7. #7
    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.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    142
    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;
    }

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    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.

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    142
    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;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.