CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet résolu : Ma condition n'est pas comme ce que je souhaite

DébutPage précedente
1
Page suivantePage suivante
djun123 djun123
MP
Niveau 1
16 décembre 2014 à 01:55:10

Bonjour,

je suis un débutant en C++. J'apprend le c++ par moi-même à l'aide des tutoriel. Je suis en train de faire mon tout premier chat. Mais, j'ai un problème qui m'est survenu. C'est que dans ma condition :

QMessageBox::information(this,"test","destinateur = "+nomDestinateur); // Verifier nom destinateur
QMessageBox::information(this,"test","destinataire = "+nomDestinataire); // verifier nom destinataire
if(nomDestinataire!=pseudo->text()&&nomDestinateur!=pseudo->text())
        {
            QMessageBox::information(this,"test","erreur incomprehensible"); // Il me sert à détecter l'erreur
            return;
        }

Si le nom du du destinataire n'est pas celui du compte ET que le nom du destinateur n'est pas celui du compte, j'arrête la fonction. Le problème c'est que si une des 2 conditions est vrai, la fonction s'arrête. Pourtant, je veux que c'est si ces 2 conditions sont vrai pour que la fonction puisse s'arrêter. Merci.

Pseudo supprimé
Niveau 10
16 décembre 2014 à 20:22:56

On dit expéditeur, pas déstinateur.

if(!nomDestinataire.equals(pseudo->text()) 
&& !nomDestinateur.equals.(pseudo->text()))

C'est soit equals, soit equalsTo je sais plus. :hap:

Tikim Tikim
MP
Niveau 20
16 décembre 2014 à 20:26:44

Déjà mets des espaces et des parenthèses autour des conditions, ce sera plus clair et plus propre. Ex :


if((variable1 != etat1) && (variable2 != etat2))

Ensuite je comprends rien à ton code, mais peu importe. C'est des String que tu testes ? De std::String ? Si oui, tu peux utiliser la fonction strcmp qui compare des chaînes de caractère : http://www.cplusplus.com/reference/cstring/strcmp/

Tikim Tikim
MP
Niveau 20
16 décembre 2014 à 20:34:16

Note que je dis probablement des bêtises pour strcmp, c'est du C pas du C++ je crois. Tu dois pouvoir utiliser le '==' ou la fonction compare() de la classe String...

djun123 djun123
MP
Niveau 1
17 décembre 2014 à 01:12:04

Le 16 décembre 2014 à 20:22:56 GouKi91 a écrit :
On dit expéditeur, pas déstinateur.

if(!nomDestinataire.equals(pseudo->text()) 
&& !nomDestinateur.equals.(pseudo->text()))

C'est soit equals, soit equalsTo je sais plus. :hap:

les méthodes equals ou equalsTo n'existent pas. Je pense que vous faites du C.

djun123 djun123
MP
Niveau 1
17 décembre 2014 à 01:22:13

Le 16 décembre 2014 à 20:34:16 Tikim a écrit :
Note que je dis probablement des bêtises pour strcmp, c'est du C pas du C++ je crois. Tu dois pouvoir utiliser le '==' ou la fonction compare() de la classe String...

La fonction compare() n'est pas approprié parce qu'il fais juste comparer la longueur & les majuscules.

Ace_Attorney Ace_Attorney
MP
Niveau 10
17 décembre 2014 à 09:48:07

La surchage d'opérateur "==" et l'opérateur != existe pour la class string de la lib standard, son erreur est plus une erreur de logique qu'une erreur de C++.

Sinon, il suffit de faire un truc du genre.

if(nomDestinataire == pseudo->text() && nomDestinateur == pseudo->text())
{
     // do your work
 }
else
{
    // error
}
djun123 djun123
MP
Niveau 1
18 décembre 2014 à 02:47:40

Je ne comprend pas parce que parfois ma condition marche & parfois non.

if( (nomDestinataire == pseudo->text()) || (nomDestinateur == pseudo->text()) )
        {
            bool chercherOnglet(false);
            int ongletTrouve(0);
            while(!chercherOnglet&&ongletTrouve<listeChat->count())
            {
                if(listeChat->tabText(ongletTrouve)==nomDestinateur)
                {
                    chercherOnglet = true;
                }
                        ongletTrouve++;
            }
            if(!chercherOnglet)
            {
                msgbox.push_back(new QTextEdit);
                msgbox[msgbox.size()-1]->setReadOnly(true);
                listeChat->addTab(msgbox[msgbox.size()-1],nomDestinateur);
                if(listeChat->tabText(ongletTrouve)==pseudo->text())
                {
                    listeChat->removeTab(ongletTrouve);
                }
                    ongletTrouve = msgbox.size();
            }
             else
            {
                ongletTrouve--;
            }
                msgbox[ongletTrouve-1]->append(messageRecu);
        }
        else
        {
            QMessageBox::information(this,"test","erreur incomprehensible");
            return;
        }

Je suis en train de faire un chat. Pour être plus précis, si "A" envoit un message à "B". Le destinateur devient "A" & le destinataire devient "B". Pour le pseudo, puisque je suis en train d'envoyer le message à partir de "A", alors "A" devient mon pseudo. Ça veut dire que b=a || a=a, ce qui rend ma condition vrai. Mais, il envoit l'alerte "Erreur incompréhensible" que j'ai créée pour détecter si la condition est fausse. Pourtant pour "B", ça fait b=b || a=b & la condition marche. Au tout début j'ai cru mon programme ne connaissait pas le destinateur. Mais quand j'ai essayé d'envoyer un message avec "B", ça fait a=b || a=a et ma condition retourne faux pourtant a=a. Ce qui envoit à "A", a=a b=a et ma condition retour faux pourtant a=a. En résumé, ma condition marche seulement à certaine occasion.

Ps : J'ai essayé de le dire le simple possible.

Message édité le 18 décembre 2014 à 02:50:33 par djun123
Tikim Tikim
MP
Niveau 20
18 décembre 2014 à 06:43:54

Tu veux pas mettre des espaces dans tes conditions entre les symboles de comparaison, le double &, et tes variables ? Je sais pas comment tu fais mais je saigne des yeux quand je vois ça :o))

djun123 djun123
MP
Niveau 1
19 décembre 2014 à 00:40:08

Le 18 décembre 2014 à 06:43:54 Tikim a écrit :
Tu veux pas mettre des espaces dans tes conditions entre les symboles de comparaison, le double &, et tes variables ? Je sais pas comment tu fais mais je saigne des yeux quand je vois ça :o))

Désolé :), je prends note pour mon prochain projet.

djun123 djun123
MP
Niveau 1
19 décembre 2014 à 01:49:19

Merci, ça marche.

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment