Error: assignment of ready-only c++

Résolu/Fermé
zhopte Messages postés 64 Date d'inscription mercredi 25 juin 2014 Statut Membre Dernière intervention 17 août 2018 - Modifié par baladur13 le 9/12/2016 à 21:53
zhopte Messages postés 64 Date d'inscription mercredi 25 juin 2014 Statut Membre Dernière intervention 17 août 2018 - 9 déc. 2016 à 23:32
Bonjour,
Je debute en c++, j'ai un exercice a faire mais sa me marque : error: assignment of ready-only variable ' '. Je ne comprend pas le probleme.

#include <iostream>
#include "stdlib.h"
#include "time.h"
using namespace std;

int main()
{
    srand((unsigned)time(NULL));
    int X;
    int N=0;
    int Y;
    int A;
    char aller='o';
    const int MAX=999, MIN=0;
    X=rand()%999;
    while (aller='o')
        {
            N=N+1;
            Y = (MAX+MIN)/2;
            if(MAX+MIN & 1)
            {
                A = rand()%1;
                Y=Y+A;
            }
            if (Y>X)
            {
                MAX=Y-1;
                cout << "trop grand";
            }
            aller='o';
            if (Y<X)
            {

MIN=Y+1;
                cout << "trop petit";
            aller='o';
            }

if (Y==X)
            {
                cout << "GAGNER EN : "<<N;
                cout << " COUPS"<<endl;
                return 0;
            }

}
}

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

2 réponses

Utilisateur anonyme
9 déc. 2016 à 21:26
Bonjour

Il y a des choses bizarres dans ton programme :

while (aller='o')
: à en juger par le reste, tu sembles bien savoir que la comparaison c'est == et non pas =

const int MAX=999, MIN=0;
MAX=Y-1;
MIN=Y+1;

Ton erreur vient de là : tu dis que MIN et MAX sont constants, puis tu essayes de les modifier.
A = rand()%1;
: petit problème de maths je suppose que tu voulais faire %2. Car l'opérateur % te donne le reste de la division, et quand tu divises par 1, ça tombe toujours juste : le reste est toujours 0. Je pense d'ailleurs que le %999 que tu fais au début relève de la même erreur : tu voulais sûrement faire %1000, même si ici c'est moins grave.

Et à quoi te sert ta variable 'aller', que tu initialises à 'o', que tu testes à 'o' alors que tu ne changes jamais sa valeur ?
zhopte Messages postés 64 Date d'inscription mercredi 25 juin 2014 Statut Membre Dernière intervention 17 août 2018
9 déc. 2016 à 22:13
Bas en gros j'ai pas bien compris la boucle while, juste pour que la boucle se stop quand (Y==X), A = rand()%1; c'était pour que quand sa divise sa donne + soit 0 soit 1 aleatoirement et le 999% on ma demander de faire un nombre aléatoire entre 0 et 999
0
zhopte Messages postés 64 Date d'inscription mercredi 25 juin 2014 Statut Membre Dernière intervention 17 août 2018
9 déc. 2016 à 22:14
L’ordinateur choisit un nombre aléatoire entre 0 et 999. il répondra par :  Trop petit.  Gagné  Trop grand
Mode automatique : Vous entrez votre choix à la demande de l’ordinateur, celui-ci résout alors tout seul le problème, et fais lui-même les réponses à ses propres propositions.
0
Utilisateur anonyme
9 déc. 2016 à 22:24
A = rand()%1; c'était pour que quand sa divise sa donne + soit 0 soit 1 aleatoiremen
J'avais bien compris que c'était ton intention, je te dis que c'est faux. %1 te donne le reste d'une division par 1, et le reste d'une division par 1, c'est TOUJOURS 0, pas tantôt 0, tantôt 1. Ce n'est pas une question de langageC, c'est une question d'arithmétique.
De même, le reste d'une division par 999 c'est un nombre de 0 à 998, pas un nombre de 0 à 999.
0
zhopte Messages postés 64 Date d'inscription mercredi 25 juin 2014 Statut Membre Dernière intervention 17 août 2018
9 déc. 2016 à 22:29
A d'accord désolée ^^' j'ai mal compris
0
zhopte Messages postés 64 Date d'inscription mercredi 25 juin 2014 Statut Membre Dernière intervention 17 août 2018
9 déc. 2016 à 22:32
Si non faut que je rajoute quoi pour pouvoir faire mon exercice :s, faut faire avec un modulo ?
0
zhopte Messages postés 64 Date d'inscription mercredi 25 juin 2014 Statut Membre Dernière intervention 17 août 2018
9 déc. 2016 à 17:34
Je suis nul en c++ mais j essaye comme je peux x),