Ciao, non riesco a fare funzionare questo programma:

Esercizio 1. Si scriva un programma completo in C++ OPPORTUNAMENTE MODULARIZZATO IN FUNZIONI che legga da standard
input un testo (cioè una sequenza di caratteri, sia essa A), quindi crei una seconda sequenza (sia essa B), e infine stampi “OK” se è
verificata una certa condizione, e “NO” se questa condizione non è verificata. Le istruzioni per la creazione della sequenza B e per
verificare la condizione sono riportate qui di seguito.
• Il testo nella sequenza A è composto da parole e frasi; le parole sono separate tra loro da trattini (cioè, il carattere ‘-’), e le frasi
sono separate tra loro da punti (cioè, il carattere ‘.’). La sequenza A è terminata da una coppia di punti (cioè la coppia di caratteri
“..”).
• La sequenza B deve contenere un numero intero per ciascuna delle frasi contenute nella sequenza A; questo numero è pari al
numero di parole contenuto nella frase.
• La condizione da verificare sulla sequenza B è la seguente: nessuno dei numeri presenti nella sequenza può comparirvi solo una
volta; ogni numero deve essere presente due o più volte.
NOTE: si può supporre che la sequenza A non sia composta da più di 100 frasi, e che nessuna delle frasi sia vuota.
ESEMPIO: data la sequenza
A=Il-concerto-degli-U2-è-stato-grandioso.Le-nuvole-sono-bianche.La-pizza-più-venduta-è-la-margherita.La-rosa-
profuma.Il-cielo-è-azzurro.Le-nuvole-oggi-sono-nere.Il-gabbiano-vola-nel-cielo.Io-amo-la-pioggia.Viva-la-vita..
Si possono contare 9 frasi prima della coppia di punti che termina il testo. Pertanto la sequenza B conterrà 9 elementi, ciascuno dei ciascuno dei
quali corrispondente ad una delle frasi presenti nella sequenza A, in ordine; e ciascun numero conta il numero di parole della frase
corrispondente.
B=747345543
Infatti la prima frase (“Il-concerto-degli-U2-è-stato-grandioso”) contiene 7 parole; la seconda frase (“Le-nuvole-sono-bianche”)
contiene 4 parole; e così via. Una volta creata la sequenza B, il programma in questo caso dovrà stampare su standard output “OK”:
infatti ciascuno dei numeri presenti nella sequenza B è presente almeno due volte (il 7 è presente due volte, il 4 è presente tre volte, il 3
è presente due volte, e il 5 è presente due volte).

ecco il codice da me scritto:


codice:
# include <iostream>
using namespace std;
const int n=100;
const int k=100;
void stampaB (char [], int );
void dimensioneB (char [], char  , int , int ,int);
void inserisci (char [],char , int );

void inserisceB (char [], char [], int , int )	;

int main ()
{
	int conTra=0; // conta i trattini
	int conFrasi=0; // conta le frasi
	int dimensione=0;
	int dimensioneBB=0;
	char frasi={0};
	char A[n];
	char B[k];
	
	
	inserisci (A,frasi, dimensione);
	cout<<endl;
	dimensioneB(A,frasi,n,conFrasi,dimensioneBB);
	cout<<endl;
	
	
inserisceB ( A,B, dimensioneBB, conTra)	;


 stampaB ( B, dimensioneBB);

	
	
return 0;	
}

void inserisci (char A[],char  frasi,int dimensione)
{
	for (int i=0; i<n && frasi!='Z'  ;i++)
	{
	cin>>frasi;
	A[i]=frasi;
	dimensione=i;
}
}// chiude funzione inserisci
	
void dimensioneB (char A[], char frasi , int n, int conFrasi, int dimensioneBB)
{
	for (int i=0; i<n; i++)
	{
		if (A[i]=='.')
		conFrasi++;
		dimensioneBB=conFrasi;// cosi ottengo la dimensione del vettore B[]
		
	}
	cout<<dimensioneBB;
	
}


void inserisceB (char A[], char B[], int dimensioneBB, int conTra)	
{
	
	
	for (int i=0; i<dimensioneBB; i++)
	
	while (A[i]!='.')
	{
		if (A[i]=='-')
		conTra++;
		B[i]=conTra;
		
	}
	
	
	
	}// chiude la funzione
	
	
void stampaB (char B[], int dimensioneBB)
{
	for (int i=0;i<dimensioneBB;i++)
	{
		cout<<B[i];
		cout<<endl;
	}
}

GRAZIE