Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    C++ Sequenza Di Caratteri

    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

  2. #2
    dimenticavo di segnalarvi che per finire la sequenza A, lho fatta finire col carattere 'Z' poiche non sapevo come dovevo fare per farla finire con doppio punto ".."

    se qualcuno mi dicessi come si fa
    grazie

  3. #3
    Originariamente inviato da marcos666
    dimenticavo di segnalarvi che per finire la sequenza A, lho fatta finire col carattere 'Z' poiche non sapevo come dovevo fare per farla finire con doppio punto ".."

    se qualcuno mi dicessi come si fa
    grazie
    Puoi trovare tante soluzioni alternative. Quella "nativa" consiste nello scorrere la sequenza A carattere per carattere.
    Oppure puoi suddividere A in tokens e fare i dovuti calcoli.

  4. #4
    no ho capito molto bene a che ti riferisci , ci provero comunque, ti ringrazio

  5. #5
    Originariamente inviato da marcos666
    no ho capito molto bene a che ti riferisci , ci provero comunque, ti ringrazio
    In ogni caso puoi risolvere con un solo ciclo.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    182
    [OFF TOPIC]
    ciao macos...per caso studi informatica all'unical?
    [/OFF TOPIC]

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da mistergks
    [OFF TOPIC]
    ciao macos...per caso studi informatica all'unical?
    [/OFF TOPIC]
    Usa i messaggi privati per le comunicazioni - appunto - private.
    Gli interventi nella discussione sono riservati alla trattazione del problema.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.