Error: assignment of ready-only c++

Résolu
zhopte Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   -  
zhopte Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   -
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
 
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 ?
1
zhopte Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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
 
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   Statut Membre Dernière intervention  
 
A d'accord désolée ^^' j'ai mal compris
0
zhopte Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
Je suis nul en c++ mais j essaye comme je peux x),
0