J'ai écrit du code en C++ pour afficher des caractères en double dans une chaîne, mais si un caractère est répété plus de trois fois, le code imprime le caractère répété plusieurs fois.Afficher les caractères dupliqués dans une chaîne
Par exemple si la chaîne est aaaddbss
, elle doit uniquement imprimer ads
mais elle imprime aaads
à la place.
Qu'est-ce que je fais mal?
cout << " Please enter a string" << endl;
cin.getline(input, 100); // example input (ahmad wahidy) the output reads a a h a d instead of a h d
for (int i = 0;input[i]!='\0'; i++)
{
for (int j = i+1;input[j]!='\0'; j++)
{
if (input[i] == input[j])
{
cout << input[i] << " ";
}
}
}
cout << endl;
Vraisemblablement c'est C++? Il manque des définitions pour des choses comme 'input'. S'il vous plaît en faire un exemple complet. J'ai l'impression que 'input' n'est pas' std :: string', ce qui devrait être le cas puisque l'utilisation de tampons de caractères bruts est un mauvais plan. – tadman
Je vous suggère de prendre le temps de lire [Comment déboguer les petits programmes] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) par Eric Lippert, et apprendre à utilisez un débogueur pour parcourir votre code ligne par ligne. Ensuite, il sera très évident quel est le problème. –
@tadman 'input' ne peut pas être' std :: string', puisqu'il ne serait pas compilé s'il l'était. 'cin' n'a pas de surcharge de la méthode' getline' qui accepte 'std :: string'. –