Stringa contenente caratteri condivisi da 2 stringhe

di il
1 risposte

Stringa contenente caratteri condivisi da 2 stringhe

Ho da fare un codice che, seguendo i vari punti, mi chiede di stampare tutti i caratteri condivisi in entrambe le stringhe, per quello che fa il programma è giusto, solo che è molto vago per quanto riguarda i caratteri duplicati e per insegnamento personale ho deciso che il programma avrebbe ignorato le doppioni.
Nonostante io abbia provato svariate opzioni e ci abbia pensato per giorni mentre lo lasciavo in pausa, non sono riuscito a risolvere il problema. Ho provato piazzando un altro if che "controlli" se ci siano duplicati e anche di copiare i valori della stringa "nome" in una seconda stringa per controllarle poi successivamente ma rincorro sempre in un errore comune dove la stampa della stringa contenente i caratteri comuni non viene più visualizzata. Ho pensato anche di mettere un char che controlli ogni singolo carattere della stringa condivisa ma non sono riuscito ad applicarla con successo, per mancata esperienza e eccessiva confusione sul risultato. Ho anche controllato vari codici ma pare che nessuno sia quello che cerco e/o abbiano operazioni più avanzate di quello che il mio codice pretenda.

Non voglio la pappa pronta perché ci tengo a imparare le cose a modo mio ma non riesco a venirne a capo


#include <iostream>
#include <string>

using namespace std;

int main(){
	
	string nome;
	string cognome;
	string mys_1, mys_2, mys_somma;
	int nome_l, cognome_l;
	
	cout<<"Inserire Nome e Cognome: "<<endl;
	cin>>nome>>cognome;
	
	//Primo punto stampa singoli caratteri nome e cognome
	
	nome_l = nome.length();
	cognome_l = cognome.length();
	
	mys_1 = nome.substr(0 , 1) + nome.substr(nome_l - 1);
	cout<<"Primo e Ultimo carattere del nome: "<<mys_1<<endl;
	mys_2 = cognome.substr(1, 2);
	cout<<"Secondo e Terzo carattere del cognome: "<<mys_2<<endl;
	
	//Secondo punto stringa caratteri presenti in ambe le stringhe
	
	for(int i=0; i < nome_l; i++){
		for(int j=0; j < cognome_l; j++)
		    if(cognome[j] == nome[i])
		       mys_somma+= nome[i];
	}
	cout<<mys_somma;
	
}

1 Risposte

  • Re: Stringa contenente caratteri condivisi da 2 stringhe

    Ciao!
    Io l'ho pensato in questo modo, avendo avuto un problema simile un po' di tempo fa..
    Ogni volta che la condizione diventa vera, ovvero, ci sono due lettere uguali per evitare il doppio conteggio puoi inserire '1' e '0' nelle stringhe,(1 per il nome, 0 per il cognome), per evitare che la seconda volta il carattere venga ripreso in considerazione, in quanto la condizione nell' if non sarà mai vera,(1 è sempre diverso da 0!).
    Mi spiego meglio:
    Es.
    Alessio Sansi
    output: assi

    E logicamente avrai: 1le11io 00n0i .
    Spero di essere stato chiaro!
Devi accedere o registrarti per scrivere nel forum
1 risposte