Buonasera a tutti, sto sbattendo la testa sul C++ e avrei bisogno di una mano con questo esercio:
"Scrivere un programma C++ che, letta da input una sequenza X di 0 e 1 terminata dal carattere * e una
sequenza Y di 0 e 1 di 3 caratteri, stampi il numero di volte in cui Y occorre in X.
Si può supporre che sia X che Y siano ben formate, ovvero X contenga solo 0,1,* ed Y solo 0,1.
Esempi:
Se la sequenza X fosse 0 1 0 1 1 0 1 0 0 1 0 * e la sequenza Y fosse 1 0 1 il programma stamperebbe 2
perché la sequenza Y è presente 2 volte in X: 0 1 0 1 1 0 1 0 0 1 0 *.
Se la sequenza X fosse 0 1 0 1 1 0 1 0 1 0 1 * e la sequenza Y fosse 1 0 1 il programma stamperebbe 3
perché la sequenza Y è presente 3 volte in X: 0 1 0 1 1 0 1 0 1 0 1 *.
Se la sequenza X fosse 0 1 0 1 1 0 * e la sequenza Y fosse 1 1 1 il programma stamperebbe 0 perché la
sequenza Y non è presente in X."
Questo è il mio codice, so certamente che l'errore è nell'ultimo blocco for con conseguente if, sapreste darmi una mano e spiegare dove sbaglio?
La mia idea è quella di scandire tutto l'array contenente la prima sequenza e confrontarlo con quello della seconda sequenza confrontando i numeri uno per volta, ma probabilmente ciò che ho scritto non corrisponde con ciò che vorrei scriver
Grazie in anticipo a chiunque mi aiuterà
#include <iostream>
using namespace std;
int main()
{
char seq1[100];
char seq2[3];
char car;
int cont=0;
int occ=0;
while (car != '*')
{
cin>>car;
seq1[cont]=car;
cont++;
}
for (int i=0; i<3;i++)
{
cin>>seq2[i];
}
for (int i=0; i<cont; i++)
{
if ((seq1[cont]==seq2[i]) && (seq1[cont+1]==seq2[i+1]) && (seq1[cont+2]==seq2[i+2]))
{
occ++;
}
}
cout<<occ;
return 0;
}