Dopo un pò di ragionamento ho capito l'errore che stavo facendo, ti allego il codice corretto e funzionante, grazie mille per l'aiuto
#include <iostream>
using namespace std;
int main()
{
int LunghezzaMaxParola = 30, m = 0, N = 500, n = 0, S = 0, nparole = 0, cont = 0, ciclo=0;
bool continua = true;
char parola[LunghezzaMaxParola],frase[N];
cout << "Inserire una parola.\n";
while(continua && m < LunghezzaMaxParola)
{
cout << LunghezzaMaxParola - m << " SPAZI ANCORA DISPONIBILI. INSERISCI CARATTERE: ";
cin >> parola[m++];
cout << "INSERIRE 1 PER CONTINUARE L'INSERIMENTO, 0 PER TERMINARLO: ";
cin >> continua;
}
cout << "PAROLA INSERITA: ";
for(int i = 0; i < m; i++)
{
cout << parola[i];
}
continua=true; //prima di questo assegnamento cintinua era falsa, quindi non verrebbe mai attivato il ciclo while della frase.
cout << ".\nInserire una frase.\n";
while(continua && n < N) //se continua è vera e se n è minore di N allora il ciclo si ripeterà, dato che, superati i 30 caratteri, l'array non potrà più salvare nulla al suo interno
{
cout << N - n << " SPAZI ANCORA DISPONIBILI. INSERISCI CARATTERE: ";
cin >> frase[n++];
cout << "INSERIRE 1 PER CONTINUARE L'INSERIMENTO, 0 PER TERMINARLO: ";
cin >> continua;
}
cout << "FRASE INSERITA: ";
for(int i = 0; i < n; i++)
{
cout << frase[i];
}
for (int i=0;i<n;i++){ //qua inizia la parte di conteggio
cont=i;
int j=0;
while(parola[j]==frase[i] && j<m){
S++;
i++;
j++;
}
if (S==m){
nparole++;
}
S=0;
i=cont;
}
cout << "\nLa parola e' presente nella frase " << nparole << " volte.";
return 0;
}