Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
Al MWC Qualcomm annuncia una coalizione industriale per lanciare il 6G entro il 2029 e introduce agenti IA per la gestione autonoma della RAN. Ericsson, presente sul palco, conferma la direzione: le reti del futuro saranno IA-native fin dalla progettazione
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air è un ultraleggero da 1 kg con Ryzen 5 6600H, display 14" 16:10 e 16 GB LPDDR5. Offre buona portabilità, autonomia discreta e costruzione in alluminio, ma storage PCIe 3.0 e RAM saldata limitano l'espandibilità. A 549 euro sfida brand più noti nella stessa fascia di mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-05-2003, 07: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, 08: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, 09: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, 10: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, 10: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, 10: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, 10: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, 12: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, 12: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, 12: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, 12: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, 12: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, 12: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, 12: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 Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Roborock Saros 20: il robot preciso e molto sottile Roborock Saros 20: il robot preciso e molto sott...
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
Annunciano il recupero di 4,8 milioni di...
Oggi degli ottimi auricolari Sony con ca...
Muffa in casa? Questo deumidificatore da...
Sonos Era 100: il punto d'ingresso per u...
"Non stiamo sostituendo nessuno con...
Tutti i robot in offerta ora: prezzi bas...
Fra 3 giorni, a mezzanotte, Amazon attiv...
Il principale limite del MacBook Neo &eg...
899€ in tutti i colori, crolla il prezzo...
Sempre più pubblicità su Y...
Costo della memoria alle stelle? Non ave...
GPT-5.4 cambia il modo di usare ChatGPT:...
Centinaia di petabyte in una molecola: l...
Lenovo al MWC 2026: dal PC modulare all'...
Huawei presenta gli agenti di IA per le ...
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: 11:33.


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