CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • 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 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Bug declared in this scope c++

BaroudKelp
BaroudKelp
Niveau 10
14 octobre 2013 à 20:46:37

Bonjour,

J'ai un bug assez pénible et je ne comprends pas do'uil il sort "rejouer was not declared in the scope" alors qu'il est déclaré. J'ai essayé de le déclaré en int ou en double ou en bool ça change rien.
C'est ligne 163:

http://pastebin.com/LbtMAs2b

merci

godrik
godrik
Niveau 30
14 octobre 2013 à 20:54:55

Le compilateur a raison: rejouer n'est pas declare dans ce scope.

exemple:
void f(){int foo; foo=8;} // ca marche
void f(){{int foo;} foo=8;} // ca marche pas

BaroudKelp
BaroudKelp
Niveau 10
14 octobre 2013 à 22:16:50

j'avoue ne pas très bien comprendre ton exemple :(

Pseudo supprimé
Pseudo supprimé 14 octobre 2013 à 22:57:40

En C++ les accolades définissent le scope.

BaroudKelp
BaroudKelp
Niveau 10
14 octobre 2013 à 23:27:05

Donc concrètement je dois faire quoi? :(

_Toastation_
_Toastation_
Niveau 9
14 octobre 2013 à 23:31:39

Concrètement tu devrais déclarer "rejouer" avant ta boucle, la tu la déclares dans un block inférieur et tu l'utilises dans un block supérieur à celui dans lequel tu la déclares comme godrik l'a dit

BaroudKelp
BaroudKelp
Niveau 10
14 octobre 2013 à 23:32:40

Ah ok. J'ai compris, c'était con comme erreur en fait.

Merci ;)

BaroudKelp
BaroudKelp
Niveau 10
14 octobre 2013 à 23:41:04

Bon maintenant le problème c'est que ça recommence en boucle, malgrès mon do while et le changement de la valeur de rejouer :(

elzorino
elzorino
Niveau 10
15 octobre 2013 à 23:21:48

ligne 159 => if (rejouers==stop)
Ca ne fonctionnera jamais.

1) Soit tu fais : if(rejouers == "stop")

2) Soit tu utilises la string stop que tu as déclaré en l'initialisant : string stop = "stop";
Et ensuite : if (rejouers == stop) fonctionnera.

Néanmoins, la première solution est meilleure. Pas besoin de déclarer de string pour ça dans ton cas :-)))

BaroudKelp
BaroudKelp
Niveau 10
15 octobre 2013 à 23:56:27

Ca ne fonctionne pas dna sles deux cas :-(

BaroudKelp
BaroudKelp
Niveau 10
15 octobre 2013 à 23:56:41

dans les*

elzorino
elzorino
Niveau 10
16 octobre 2013 à 00:26:41

J'ai pas fait gaffe s'il y avait d'autres erreurs, j'ai juste vu celle-là alors je te l'ai signalé :hap:

Je m'ennuie en cette heure tardive, je vais regarder ton code 5 minutes... :hap:

elzorino
elzorino
Niveau 10
16 octobre 2013 à 01:07:42

Ah j'ai trouvé :hap:

http://pastebin.com/pMB6gy5j

J'ai juste rendu ton code plus propre niveau indentations/espaces et j'ai mis toutes tes variables en dehors de la boucle pour éviter les problèmes de scope :oui:

J'ai compris pour tous les "cout << endl;" que tu fais en mode 2 joueurs. Je t'ai mis un exemple pour faire pareil en plus propre avec une boucle. Bon, c'est pas très jolie cette méthode, mais c'est un exercice d'entraînement hein, on va dire que ça passe. Un manière un peu plus propre (mais qui en même temps ne l'est pas vraiment :hap: ) sous Windows, tu peux utiliser :

system("cls");

pour effacer la console. Mais attention, ça ne marche que sous Windows. Ce genre d'appels sytème ne sont pas portables (ici la commande cls par exemple ne fonctionnera pas sous Linux) et donc en général c'est à proscrire. Mais dans le cadre d'un exercice, on va pas s'embêter avec ce genre de détails...

Ton erreur était qu'au lieu d'écrire:

if(rejouers == stop)
{
    rejouer = 1;
}

Tu as écris :

if(rejouers == stop)
{
    rejouer == 1;
}

(rejouer == 1) ça ne fait que tester si rejouer vaut 1. Ici ça retourne 0 (faux) car à ce moment là rejouer vaut 0, mais ça n'affecte pas 1 à rejouer. Donc rejouer valait toujours 0, ce qui explique pourquoi ça ne s'arrêtait pas :hap:

Ton programme fonctionnait, à cette petite erreur près :oui:

Après, j'ajouterai que tu dois penser à indenter correctement ton code pour qu'il soit plus beau. Autant prendre les bonnes habitudes tout de suite :oui: Et pense aussi à t'entraîner à vérifier ce que l'utilisateur entre. Simple exemple : quand tu demandes la difficulté, si je rentre une lettre, ton programme fait n'importe quoi :hap: Une amélioration utile serait de vérifier que l'utilisateur rentre bien un chiffre et que c'est ente 1 et 4.

Voilà, bonne continuation !

BaroudKelp
BaroudKelp
Niveau 10
16 octobre 2013 à 07:03:51

Merci beaucoup, je m'arrachais les cheveux sur ce beug. Je suis au courant pour le "bug" du choix de niveau (je vais appeller ça une fonction non implanté pour le moment). Je vais m'y mettre ce soir!

BaroudKelp
BaroudKelp
Niveau 10
16 octobre 2013 à 17:18:26

Et pour l'indentation je laisse comme codeblocks fait du coup je savais pas trop comment "bien" faire. Merci encore! :)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment