[C++] Programma che conti quante sequenze di '101' sono pres

di il
9 risposte

[C++] Programma che conti quante sequenze di '101' sono pres

Non riesco a capire come impostare.
<code>#include <iostream>
#include <string>
using namespace std;

Int main ()
{ int nbin, d=0;
char c;
Cout<<"numero";
Cin>>nbin;
c=nbin;
If (c=='101')
d++;
</code>

Ma è sbagliato. Perché?

9 Risposte

  • Re: [C++] Programma che conti quante sequenze di '101' sono pres

    Il controllo lo devi fare un carattere alla volta: se prima trovi un 1, poi uno 0 e poi ancora un 1 allora hai trovato una sequenza. Altrimenti no. Inoltre attenzione perché può anche esserci la situazione 1101... Quindi tu parti e trovi un 1: può essere una sequenza. Poi trovi un altro 1, quindi non è una sequenza... però questo 1 può essere l'inizio di un'altra sequenza! Infatti poi trovi uno 0 e un altro 1 che la completano.

    Prova a ragionarci un po' su...
  • Re: [C++] Programma che conti quante sequenze di '101' sono pres

    minomic ha scritto:


    Il controllo lo devi fare un carattere alla volta: se prima trovi un 1, poi uno 0 e poi ancora un 1 allora hai trovato una sequenza. Altrimenti no. Inoltre attenzione perché può anche esserci la situazione 1101... Quindi tu parti e trovi un 1: può essere una sequenza. Poi trovi un altro 1, quindi non è una sequenza... però questo 1 può essere l'inizio di un'altra sequenza! Infatti poi trovi uno 0 e un altro 1 che la completano.

    Prova a ragionarci un po' su...
    Ho provato ed il risultato è un po' stravagante..
    //Data una stringa binaria contare quante volte è presente la combinazione '101'
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main ()
    { 
       string sbin; //stringa binaria
       int i, d;
       char c;
     
        cout <<"Numero: ";
        cin >> sbin;
        int l = sbin.size();
        for (i=0; i<l; i++){
        	c= sbin[i];
        	if (c=='101')
        	d++;
        		}
        		cout<<d;
    	
       return 0;
    }
  • Re: [C++] Programma che conti quante sequenze di '101' sono pres

    No, così non ha senso... Se dici che c = sbin poi come fai a confrontare (c) con '101' ?
    Prova così: scorri tutto l'array (fino al terzultimo elemento, poi capirai il perché) e, se il carattere presente è '1', quello successivo è '0' e quello ancora successivo è '1' allora hai trovato una sequenza.
  • Re: [C++] Programma che conti quante sequenze di '101' sono pres

    minomic ha scritto:


    No, così non ha senso... Se dici che c = sbin poi come fai a confrontare (c) con '101' ?
    Prova così: scorri tutto l'array (fino al terzultimo elemento, poi capirai il perché) e, se il carattere presente è '1', quello successivo è '0' e quello ancora successivo è '1' allora hai trovato una sequenza.

    Perdonami ma non capisco.
    Come scorro l'array fino al terzultimo elemento?
  • Re: [C++] Programma che conti quante sequenze di '101' sono pres

    Con un for che non si ferma a size ma un po' prima...
  • Re: [C++] Programma che conti quante sequenze di '101' sono pres

    minomic ha scritto:


    Con un for che non si ferma a size ma un po' prima...
    A 1 dato che la stringa è una sola?
  • Re: [C++] Programma che conti quante sequenze di '101' sono pres

    FDG2801 ha scritto:


    minomic ha scritto:


    Con un for che non si ferma a size ma un po' prima...
    A 1 dato che la stringa è una sola?
    No, non ci siamo capiti... Io ho detto che devi scorrere la stringa (che poi è vista come un array di caratteri) non fino all'ultimo carattere ma fino al terzultimo. Guarda questo schema
    
    110110101010110101
    ---------------^--
    
    Perché questo? Perché quando sei lì poi consideri quel carattere, il successivo e quello ancora successivo, e hai finito tutti i caratteri.
  • Re: [C++] Programma che conti quante sequenze di '101' sono pres

    minomic ha scritto:


    FDG2801 ha scritto:


    minomic ha scritto:


    Con un for che non si ferma a size ma un po' prima...
    A 1 dato che la stringa è una sola?
    No, non ci siamo capiti... Io ho detto che devi scorrere la stringa (che poi è vista come un array di caratteri) non fino all'ultimo carattere ma fino al terzultimo. Guarda questo schema
    
    110110101010110101
    ---------------^--
    
    Perché questo? Perché quando sei lì poi consideri quel carattere, il successivo e quello ancora successivo, e hai finito tutti i caratteri.
    I<l-3? Scusami ma non riesco a capire
  • Re: [C++] Programma che conti quante sequenze di '101' sono pres

    Dunque...
    
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main () {
        string sbin; //stringa binaria
        int i, d=0;
    
        cout <<"Numero: ";
        cin >> sbin;
        int l = sbin.size();
        for (i=0; i<l-2; i++) {
            if(sbin[i] == '1' && sbin[i+1] == /* TODO Completa qui */ && /* e qui */)
                d++;
        }
        cout<<d;
    
        return 0;
    }
    
    Prova a completare.
Devi accedere o registrarti per scrivere nel forum
9 risposte