Salve a tutti, ho un problema nel realizzare un programma che confronti due stringhe per vedere se sono anagrammi. Mentre realizzavo il programma mi sono accorto di una cosa, quando devo confrontare le due stringhe devo fare in modo che ci siano le stesse lettere, però se ad esempio inserisco le parole "oasi" e "saio" e uso un ciclo for questo confronterà il 1° elemento del 1° array con il 1° elemento del 2° array e cosi via, dunque significa che il programma rivela che (in questo caso) la lettera "o" e la lettera "s" sono diverse e di conseguenza il programma segnerà le due parole come se non fossero due anagrammi. Io avevo pensato di creare un array dove mettere le vocali di ambedue le stringhe e altrettanto con le consonanti solo che il problema è sempre li. Spero di essere stato chiaro e ringrazio in anticipo dell'aiuto. Vi lascio il codice
#include <iostream>
#include <locale>
#include <cstring>
using namespace std;
//FUNZIONER PER INSERIRE IN INPUT LE STRINGHE
void lettura_stringhe(char stringa1[30], char stringa2[30])
{
cout << "Inserisci un testo qualsiasi:";
cin.getline(stringa1,30);
cout << "Inserisci un'altro testo qualsiasi:";
cin.getline(stringa2,30);
}
//FUNZIONE PER ELIMINARE GLI SPAZI VUOTI
void eliminazione(char stringa1[30], char stringa2[30], char stringa1_pulita[30],char stringa2_pulita[30]) //Serve per eliminare gli spazi vuoti dalle stringhe
{
int j = 0;
int k = 0;
int contatore_vuoti = 0; //Conta gli spazi vuoti
int lunghezza_1 = strlen(stringa1);
int lunghezza_2 = strlen(stringa2);
for (int i = 0; i < lunghezza_1 ; i++) //Pulizia 1° Stringa
{
if (!isspace(stringa1[i]))
{
stringa1_pulita[j] = stringa1[i];
++j;
}
}cout << stringa1_pulita << endl;
for (int i = 0; i < lunghezza_1 ; i++) //Pulizia 2° Stringa
{
if (!isspace(stringa2[i]))
{
stringa2_pulita[k] = stringa2[i];
++k;
}
}cout << stringa2_pulita;
}
//FUNZIONE PER CONFRONTARE I DUE ARRAY
int confronto(char stringa1[30], char stringa2[30], char stringa1_pulita[30],char stringa2_pulita[30])
{
char vocali [5] = {'a','e','i','o','u'};
char vocali_stringa1 [5];
char vocali_stringa2 [5];
}
int main ()
{
char stringa1[20],stringa2[20], stringa1_pulita[30], stringa2_pulita[30];
lettura_stringhe(stringa1, stringa2);
eliminazione(stringa1, stringa2, stringa1_pulita, stringa2_pulita);
if (confronto(stringa1, stringa2, stringa1_pulita, stringa2_pulita) == 1 )
cout << "Le due stringhe inserite sono anagrammi";
else
cout << "Le due stringhe inserite non sono anagrammi";
}