Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    33

    C++ anagramma

    Salve , sto cercando di implementare il codice del seguente esercizio dove devo confrontare due stringhe:

    /*Esercizio 1. Si scriva in C++ un programma completo opportunamente modularizzato in funzioni che, lette da
    input due parole di uguale lunghezza, verifichi se sono l’una anagramma dell’altra. Due parole sono una
    l’anagramma dell’altra se contengono le stesse lettere ma in ordine diverso. Esempio: La parola locandiera è un
    anagramma della parola calendario.
    Se le due parole non sono una l’anagramma dell’altra, si consideri la prima inserita da input e se ne costruisca un
    anagramma permutando in modo casuale le lettere di cui è composta (non importa se la parola ottenuta non è di
    senso compiuto). Esempio: se da input sono state inserite le parole casa e sala, si consideri la parola casa e si
    permutino in modo casuale le sue lettere. Dopo questo procedimento si potrebbe ad esempio ottenere la parola
    asca.
    Bonus (Lo svolgimento di questa parte comporta un bonus di massimo un punto sul voto finale). Si verifichi se le due parole
    lette da input sono l’una l’inversa dell’altra, ossia se se ne legge una da sinistra verso destra e l’altra da destra verso
    sinistra, risultano uguali. Esempio: rosa e asor sono l’una l’inversa dell’altra.*/



    Ho pensato di utilizzare la funzione STRCMP per fare le comparazione , ma mi dice sempre che a è diverso di b anche se metto le stesse parole la input.

    grazie


    codice:
    # include <iostream>
    # include <cstring>
    using namespace std;
    const int n=4;
    void  verifica (char [], char []);
    
    
    
    void inserisciParola (char [],char);
    int main ()
    {
    	char a[n];
    	char b[n];
    
    
    
    	char carattere;
    	
    	
    	
    	cout<<"verifichiamo se due cparole sono una anagramma di un altra:"<<endl;
    	cout<<"inserisci la prima parola:"<<endl;
    	inserisciParola (a,  carattere);
    	cout<<"inserisici la seconda parola:"<<endl;
    	inserisciParola (b,  carattere);
    	cout<<endl;
    	
    	
    	
    	if (strcmp(b,a) == 0)
          cout << "a ed b sono uguali!" << endl;
    	else
          cout << "a e' diversa da b" << endl;
    
    
    return 0;	
    }
    void inserisciParola (char a[],char carattere)
    {
    	for (int i=0; i<n; i++)
    	{
    		cin>>carattere;	
    		a[i]=carattere;
    		
    	}
    }

  2. #2
    stai usando il debugger?
    hai controllato se la seconda parola ha come carattere iniziale il \n che rimane nel buffer input dopo aver inserito la prima parola?

    ad ogni modo, la tua soluzione controlla solo se due parole sono uguali, non se sono anagrammi.
    all that you need:
    http://www.cplusplus.com/reference/clibrary/

  3. #3
    Amaro C++, il gusto pieno dell'undefined behavior.

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.