0
votes

Comment puis-je vérifier si tous les affréteurs d'un mot sont existants dans l'autre?

J'essaie de faire un code qui prend des mots de remorquage de l'utilisateur et de les stocker en tant que matrices et vérifiez si les caractères tous les caractères forts> sont déjà existants dans le deuxième mot, si oui, il suffit de sortir Oui, si non, alors sortir un non. Exemple:

entrée: strong> em> p>

Entrez le premier mot: p>

fos p> blockQuote>

Entrez le deuxième mot: p>

Stackoverflow P> blockquote>

sortie: strong> em> p>

oui p> blockQuote>

Mon code n'est même pas proche de ce que je veux réellement, mais je vais le mettre en panne peut-être que cela expliquera ce que je tente de faire. P>

#include <iostream>
#include <string>
using namespace std;
int main() {
    
    char N1[7];
    char N2[10];
    cout <<  ("ENTER THE FIRST WORD : ") ;
    cin >> N1;
    cout <<("ENTER THE SECOND WORD : ");
    cin >> N2;
    for (int i = 0; i <4; i++)
    {
        for (int j = 0; j < 7; j++)
        {
            if (N1[i] = N2[j]) 
            {
                cout << ("YES") << endl;
            }
            else
            {
                cout << ("NO") << endl;
            }

        }

    }
    return 0;
}


3 commentaires

Conseil: Unorded_map . Évitez également à l'aide de NAMESPACE STD; .


n1 [i] = n2 [j] est une affectation, pas une comparaison. En outre, C ++ a std :: string , pas besoin de matrices de caractères difficiles. Aussi, std :: string a std :: string :: trouver , ce qui facilite votre tâche. De plus, vous devriez vraiment séparer les processus que vous pouvez nommer dans une fonction, dans ce cas quelque chose comme bool contenant_letters (const String & A, Const String & B); .


Le concept de clé qui vous manque est que vous ne pouvez pas décider immédiatement si votre condition est vraie. Vous ne pouvez savoir qu'à la fin de vos boucles, que chaque élément de la première chaîne soit dans la deuxième chaîne. Chaque fois que vous avez un problème qui dit «tout», vous pouvez utiliser une variable booléenne. Définissez la variable sur true puis écrivez une boucle qui teste chaque élément. Si Tout d'entre eux échoue, définissez la variable booléenne sur FALSE. Pour la mettre d'autre moyen, supposez que la condition est vraie et d'abord, puis cherchez un seul exemple.


3 Réponses :


1
votes

Je ne suis pas expert en C ++, mais on dirait que vous voulez vérifier si Toutes les caractères forts> sont dans la deuxième chaîne - vous permet de mieux ajouter des booléens à votre code comme suit:

for (int i = 0; i <4; i++) {
    bool charFound = false;
    for (int j = 0; j < 7; j++) {
        charFound = charFound || (N1[i] == N2[j]); // use OR operator so if found one match it is will stay true
    }
    if (!charFound) {
        cout << ("NO") << endl;
        return; // one char is missing - print no and exit
    }
}
cout << ("YES") << endl; // if got here you found all char - YES


0 commentaires

2
votes

Je l'ai essayé avec une recherche simple et une variable booléenne à suivre s'il est trouvé ou non.

#include <iostream>
#include <string>
using namespace std;



int main()
{
string s1  = "fosq";
string s2 = "stackoverflow"; 
  bool isfound;
  for(int i=0;i<s1.length();i++)
  {
    isfound=false;
    for(int j=0;j<s2.length();j++)
    {
      if(s1[i]==s2[j])
      {
        isfound=true;
        break;
      }
    } 
      if(!isfound)
      {
        cout<<"Not found";
        break;
      }
  }
  if(isfound)
  {
    cout<<"Yes\n";
  }
}


1 commentaires

J'ai défini des valeurs de S1 et s2 manuellement, vous pouvez demander une entrée via CIN



1
votes

Je pense que le moyen le plus efficace est de trier les deux tableaux avant de calculer la correspondance: xxx


0 commentaires