Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-05-2003, 06:03   #1
Kleidemos
Bannato
 
L'Avatar di Kleidemos
 
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
[C++]Contare gli spazi

Dovrei contare gli spazi contenuti in una stringa e avrei pensato a questa funz:
Codice:
 
int Spazi(string &st)
{
    int spazi_cont;
    string::iterator it=st.begin();
    for( ; it != st.end(); it++) 
    {
        if( st.find(" ") != string::npos )
        {
        	spazi_cont++;           
        } 
        if( st.find("\0") != string::npos )
        {
                break;
        }    
    }  
    return spazi_cont;
}
Ma mi trova 30000 spazi
Kleidemos è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2003, 07:52   #2
ri
Senior Member
 
L'Avatar di ri
 
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
Codice:
int Spazi(string &st)
{
    int spazi_cont = 0;
    for(int i = 0; i < st.size(); i++)
    {
          if(st[i] == "")
               spazi_cont ++;
    }

    return spazi_cont;
}
ps: non l'ho testato...
ri è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2003, 08:28   #3
monkey72
Senior Member
 
L'Avatar di monkey72
 
Iscritto dal: Dec 2001
Messaggi: 1385
Re: [C++]Contare gli spazi

Quote:
Originally posted by "Kleidemos"

Dovrei contare gli spazi contenuti in una stringa e avrei pensato a questa funz:
Codice:
 
int Spazi(string &st)
{
    int spazi_cont;
    string::iterator it=st.begin();
    for( ; it != st.end(); it++) 
    {
        if( st.find(" ") != string::npos )
        {
        	spazi_cont++;           
        } 
        if( st.find("\0") != string::npos )
        {
                break;
        }    
    }  
    return spazi_cont;
}
Ma mi trova 30000 spazi
una curiosità... ma l'iteratore string::iterator che hai usato ti dovrebbe permettere la scansione dei caratteri x come lo hai usato tu... premesso che non l'ho mai usato mi sembra di averne visto da qualche parte un uso di enumerazione di stringhe contenute in un vettore...
ripeto non entro nel merito, è solo una curiosità, vorrei capire meglio
__________________
lui è il mio amore: "tesò domani ti regalo un guinzaglio lungo 100 km"
monkey72 è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2003, 09:21   #4
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Re: [C++]Contare gli spazi

Non e' molto piu' semplice qualcosa del genere (non testato) ?
Codice:
int Spazi(const string& st)
{
  int result=0;
  for ( string::const_iterator i=st.begin(); i != st.end(); ++i )
  {
    if ( *i == ' ' )
      ++result;
  }
  return result;
}
In ogni caso nel ciclo for non dovresti usare string::npos ma st.end() (ed e' per quello che ti da un risultato sballato)

Edit: ops, mi sono accorto che e' praticamente identico al codice di ri (a parte il " " corretto in ' ' )
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2003, 09:27   #5
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Re: [C++]Contare gli spazi

Quote:
Originally posted by "monkey72"



una curiosità... ma l'iteratore string::iterator che hai usato ti dovrebbe permettere la scansione dei caratteri x come lo hai usato tu... premesso che non l'ho mai usato mi sembra di averne visto da qualche parte un uso di enumerazione di stringhe contenute in un vettore...
ripeto non entro nel merito, è solo una curiosità, vorrei capire meglio
Molto probabilmente string::iterator non e' altro che un altro nome per char*, e quindi usare uno o l'altro non dovrebbe far differenza.
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2003, 09:42   #6
monkey72
Senior Member
 
L'Avatar di monkey72
 
Iscritto dal: Dec 2001
Messaggi: 1385
Re: [C++]Contare gli spazi

Quote:
Originally posted by "/\/\@®¢Ø"


In ogni caso nel ciclo for non dovresti usare string::npos ma st.end() (ed e' per quello che ti da un risultato sballato)
xchè? lui sta testando se il carattere corrente è blank, xchè deve controllare che sia finita la stringa?... semmai nel secondo if, ma a che pro, xche string::npos gli fa sballare il risultato?
__________________
lui è il mio amore: "tesò domani ti regalo un guinzaglio lungo 100 km"
monkey72 è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2003, 09:46   #7
monkey72
Senior Member
 
L'Avatar di monkey72
 
Iscritto dal: Dec 2001
Messaggi: 1385
p.s. marco secondo me sono giuste sia la tua soluzione che quella di ri, sono semplici ma efficaci, ma volevo capire xchè sballa quella di kleidemos
__________________
lui è il mio amore: "tesò domani ti regalo un guinzaglio lungo 100 km"
monkey72 è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2003, 11:11   #8
ri
Senior Member
 
L'Avatar di ri
 
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
perchè npos è una costante che rappresenta la lunghezza massima di una stringa
l'algoritmo find invece, in caso di "non trovato", restituisce l'end dell'oggetto

[CAZZATA, vedere sotto]prova a fare una stampa di string::npos e vediamo se ti esce 30000 [/CAZZATA]
ri è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2003, 11:15   #9
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Re: [C++]Contare gli spazi

Quote:
Originally posted by "monkey72"



xchè? lui sta testando se il carattere corrente è blank, xchè deve controllare che sia finita la stringa?... semmai nel secondo if, ma a che pro, xche string::npos gli fa sballare il risultato?

porc... stamattina dormo della grossa ! .
Kleidemos, l'errore sta nel fatto che mescoli due modi di operare: da un lato fai la scansione 'manuale' della stringa col ciclo for (ma l'iteratore non lo utilizzi mai!), dall'altro utilizzi il metodo find che fa la scansione di suo: il metodo find cerca tutta la stringa e quindi e' inutile iterare. Il secondo find e' ancora piu' pericoloso: a differenza dei char* non e' necessariamente detto che le string finiscano con un '\0'. Se questo capita (come ad esempio nel gcc) in ogni caso il ciclo termina al primo passaggio perche' il '\0' viene trovato alla fine della stringa.
La soluzione e' quindi:
1- iteri
2- usi find

nel primo caso va bene il codice che ti e' gia' stato mostrato
nel secondo puoi fare cosi'
Codice:
int Spazi(const string &st)
{ 
    int spazi_cont=0;
    string::size_type pos = st.find_first_of( ' ' );
    while( pos != string::npos )
    {
        spazi_cont++;
        pos = st.find_first_of( ' ' , pos+1 );
    }
    return spazi_cont; 
}
(ho usato find_first_of invece che find visto che dovevo cercare un solo carattere, ma anche find sulla strigna andava bene cmq)
Pero' mi sembra una fatica inutile rispetto l'entita' del compito.
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2003, 11:15   #10
ri
Senior Member
 
L'Avatar di ri
 
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061

ho appena controllato quanto vale quel const e mi da -1...
ri è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2003, 11:16   #11
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
dimenticavo...
spazi_cont va inizializzato a zero !
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2003, 11:20   #12
monkey72
Senior Member
 
L'Avatar di monkey72
 
Iscritto dal: Dec 2001
Messaggi: 1385
io sapevo che s.find(c) cerca la prima occorrenza del carattere c nella stringa s e che ritorna un valore intero senza segno che è la posizione di c se c'è, altrimenti ritorna una costante predefinita che è string::npos "non posizione" che vale -1
__________________
lui è il mio amore: "tesò domani ti regalo un guinzaglio lungo 100 km"
monkey72 è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2003, 11:22   #13
monkey72
Senior Member
 
L'Avatar di monkey72
 
Iscritto dal: Dec 2001
Messaggi: 1385
Quote:
Originally posted by "ri"


ho appena controllato quanto vale quel const e mi da -1...
appunto....
__________________
lui è il mio amore: "tesò domani ti regalo un guinzaglio lungo 100 km"
monkey72 è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2003, 11:32   #14
monkey72
Senior Member
 
L'Avatar di monkey72
 
Iscritto dal: Dec 2001
Messaggi: 1385
Re: [C++]Contare gli spazi

Quote:
Originally posted by "/\/\@®¢Ø"




Codice:
int Spazi(const string &st)
{ 
    int spazi_cont=0;
    string::size_type pos = st.find_first_of( ' ' );
    while( pos != string::npos )
    {
        spazi_cont++;
        pos = st.find_first_of( ' ' , pos+1 );
    }
    return spazi_cont; 
}
non ho più obiezioni
__________________
lui è il mio amore: "tesò domani ti regalo un guinzaglio lungo 100 km"
monkey72 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Apple riduce la produzione di iPhone 17:...
Lancio del razzo spaziale cinese Lunga M...
SpaceX Starship: Super Heavy Booster 20 ...
Questa RTX 3070 è tornata in vita...
Un ricercatore scopre uno script bash na...
Robot umanoidi teleoperati eseguono le p...
QuadRF, il gadget da 499 dollari che leg...
ChatGPT, Claude e Gemini nel mirino: cos...
Pneumatici dalla Cina, l'UE introduce da...
SpaceX vuole 100.000 satelliti in orbita...
Disney+ gratis, ma con pubblicità: l'ult...
Microsoft ammette: emissioni di CO2 su d...
Apple denuncia OpenAI e due ex dirigenti...
Asha Sharma licenzia migliaia di dipende...
25 articolazioni, pelle tattile e forza ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:33.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v