Ricerca elementi tra due array

di
Anonimizzato13790
il
13 risposte

Ricerca elementi tra due array

Si scriva un programma completo in C++ che, lette da input due sequenze di caratteri entrambe terminate dal
carattere “.” (PUNTO), verifichi se le sequenze sono “disgiunte”. Due sequenze si dicono disgiunte se non
hanno elementi in comune. Nel caso in cui le due sequenze siano disgiunte, il programma deve stampare su
standard output la stringa DISGIUNTE. Qualora invece le due sequenze non fossero disgiunte, il programma
deve stampare il primo carattere della prima sequenza in comune con la seconda.
ESEMPIO: le due sequenze a b a c d . e e f g . sono disgiunte; quindi il programma dovrebbe stampare
DISGIUNTE.
invece, le due sequenze a b a c d . e e f c g b . non sono disgiunte; il programma dovrà stampare b poiché ‘b’
è il primo carattere della prima sequenza che si trova anche nella seconda....


bool controllo(char string_a[], char string_b[],int cont,int cont2);
bool controllo(char string_a[], char string_b[],int cont,int cont2)
{
for(int x=0; x<dim; x++)
{
for(int y=0; y!=x && y<dim; y++)
{
if (string_a [x] != string_b [y])
return true;
return false;
}
}
}
int main()
{
char string_a[dim];
char string_b[dim];
char c;
char s;
int cont=0;
int cont2=0;
while(c != '.')
{
cin>>c;
string_a[cont]=c;
cont++;

}
while (s != '.')
{
cin>>s;
string_b[cont2]=c;
cont2++;
}
if(controllo( string_a, string_b, cont, cont2))
cout<<"DISGIUNTE";
else
cout<<"non disgiunte";
return 0;
}
per adesso ho scriito questo ma nn riesco a fare l algoritmo che mi controlla i due array della funzione controlllo..... grazie per chiarimenti

13 Risposte

  • Re: Ricerca elementi tra due array

    Perche questo algoritmo nel mio programma non funziona????

    for(int x=0; x<cont2-1; x++)
    for(int y=0 ;y<cont-1; y++)
    if (string_a [x] == string_b [y])
    {

    cout<<string_a[x];
    return 0;
    }
    cout<<"DISGIUNTE";


    mi dice sempre disgiunte
  • Re: Ricerca elementi tra due array

    Quando valgono cont e cont2 prima di entrare nei cicli?
  • Re: Ricerca elementi tra due array

    oregon ha scritto:


    Quando valgono cont e cont2 prima di entrare nei cicli?
    0....il resto del programma è sopra solo che al posto della funzione ho inserito quell algoritmo
  • Re: Ricerca elementi tra due array

    Se le due variabili valgono 0, le for non saranno eseguite ... ecco perché visualizzi sempre "disgiunte".

    Controlla perché quei due contatori sono a zero.
  • Re: Ricerca elementi tra due array

    oregon ha scritto:


    Se le due variabili valgono 0, le for non saranno eseguite ... ecco perché visualizzi sempre "disgiunte".

    Controlla perché quei due contatori sono a zero.
    cont e cont 2 rappresentano le dimensioni delle due stringhe....li ho inizializzati a 0 e ogni volta che inserisco un carattere aumentano di 1....scusa mi sono confuso prima
  • Re: Ricerca elementi tra due array

    Allora ripeto ... prima di entrare nei cicli, hai controllato l'effettivo valore delle due variabili?
  • Re: Ricerca elementi tra due array

    oregon ha scritto:


    Allora ripeto ... prima di entrare nei cicli, hai controllato l'effettivo valore delle due variabili?
    si si e sono uguali alla lunghezza della stringe
  • Re: Ricerca elementi tra due array

    Ma il codice completo è quello del primo post (che non si riesce a leggere ...)?
  • Re: Ricerca elementi tra due array

    oregon ha scritto:


    Ma il codice completo è quello del primo post (che non si riesce a leggere ...)?
    si quello
  • Re: Ricerca elementi tra due array

    Ma quello è diverso dalle doppie for che hai postato adesso.

    E poi l'input delle stringhe è poco sensato (oltre che sbagliato ad esempio in string_b[cont2]=c; )

    Proponi un codice completo, scritto tra i tag CODE (e quindi leggibile), compilabile senza errori e solo in quel caso ne discutiamo ... così non saprei cosa provare e andremmo avanti perdendo tempo tutti e due.
  • Re: Ricerca elementi tra due array

    oregon ha scritto:


    Ma quello è diverso dalle doppie for che hai postato adesso.

    E poi l'input delle stringhe è poco sensato (oltre che sbagliato ad esempio in string_b[cont2]=c; )

    Proponi un codice completo, scritto tra i tag CODE (e quindi leggibile), compilabile senza errori e solo in quel caso ne discutiamo ... così non saprei cosa provare e andremmo avanti perdendo tempo tutti e due.
    using namespace std;
    const int dim=50;

    int main()
    {
    char string_a[dim];
    char string_b[dim];
    char c;
    char s;
    int cont=0;
    int cont2=0;
    while(c != '.')
    {
    cin>>c;
    string_a[cont]=c;
    cont++;

    }
    while (s != '.')
    {
    cin>>s;
    string_b[cont2]=c;
    cont2++;
    }
    for(int x=0; x<cont-1; x++)
    for(int y=0 ;y<cont2-1; y++)
    if (string_a [x] == string_b [y])
    {

    cout<<string_a[x];
    return 0;
    }
    cout<<"DISGIUNTE";

    return 0;
    }

    questa versione compila soltanto che mi da sempre disgiunte ....se riesci ad aggiustare qualcosa va bene senno grazie per la disponibilita
  • Re: Ricerca elementi tra due array

    Io vedo che c ed s non sono inizializzati per i primi due while(); sarebbe meglio inizializzarli anche se di sicuro non è il problema.
    Per capire dove sbagli, e risolvere il problema, ti suggerisco di inserire delle printf() nei punti strategici per vedere i valori di cont e cont2 (ad esempio stampa il contenuto di string_a [x] e string_b [y] ad ogni test che fai...).
  • Re: Ricerca elementi tra due array

    Risolto grazie a tutti
Devi accedere o registrarti per scrivere nel forum
13 risposte