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

Rispondi quotando