IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres IDE Pascal Discussion :

Error: Operator is not overloaded


Sujet :

Autres IDE Pascal

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Error: Operator is not overloaded
    Bonjour

    Voilà j'ai un problème de boucle dans mon pendu que je ne comprends pas bien.Est ce que vous pouvez m'aider ?
    Merci d'avance .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    program pendu ;
     
    var
    i,rool,a,compt,erreur: integer ;
    dico: text ;
    mot : string ;
    motacher,cherche : string ;
    lettre : char ;
    tab: array[1..22739] of string ;
    begin
    assign(dico,'liste_francais.txt');
    reset(dico);
    i:= 1  ;
    while not eof(dico) do
    begin
    readln(dico,mot);
    tab[i]:= mot ;
    i:= i + 1  ;
    end;
    randomize ;
    rool:= random(22739);
    motacher:= tab[rool];
    cherche:=tab[rool] ;
     
    For a:=1 to length(motacher) do cherche[a]:='_' ;
     
    repeat
    writeln('Voici le mot à chercher',cherche) ;
    writeln('Entrez une lettre ');
    readln(lettre);
    erreur:=0   ;
    for a:=1 to length (motacher) do
    begin
    if lettre = motacher[a] then cherche[a]:=lettre
                            else erreur:= erreur + 1 ;
    end ;
    if erreur = length(motacher) then compt := compt +1  ;
     
    until compt>=7 or motacher><cherche ;
     
    if motacher = cherche then writeln('Bien joué ! vous avez trouvé le mot')
                        else writeln('Vous ètes mort dans d''affreuse souffrance brûlé vif !');
    close(dico);
    readln ;
     
     
    end.
    Probleme 39 / 27 pendu.pas Error: Operator is not overloaded

  2. #2
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Bonjour

    Il faut indenter ton code pour commencer
    Ensuite dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    until compt>=7 or motacher><cherche ;
    L'opérateur >< pour toi, c'est quoi? Je crois que tu voulais plutôt utiliser <>, et n'oublies pas de mettre les parenthèses

    Des choses à améliorer quand même dans ton code .....

    Cordialement
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci mais j'ai pas compris le truc avec indenter (ne dis pas que je suis con :p ) et pour les chose a ameliorer oui c'est mon programme d'essai :p

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 235
    Points : 506
    Points
    506

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Encore merci a tous ça fais 2 fois que vous m'aidé . un grand merci et à bientot peut etre ;p

  6. #6
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Pour plus de lisibilité, u peux découper ton programme en fonctions.
    Sinon, la fonction random est définie comme suit :
    0<= random(a)<= a-1
    Or les indices de ton tableau sont définies dans l'intervalle [1, 22739]. Pour eviter toute erreur, il faut ecrire
    (0+1)<=1+random(a)<=(a-1+1)
    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rool:= 1+random(22739);

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    oki je vais changé ça :p merci pour tout

  8. #8
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    je m'embêtais un peu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    program Pendus;
     
    // objet pour le dictionnaire (liste de chaines)
    type
      TStringList = object
        Strings : array of string;
        Count   : integer;
        procedure Initialize;
        procedure SetCount(aCount: integer);
        procedure Clear;
        procedure LoadFromFile(aFileName: string);
      end;
     
    { TStringList }
     
    procedure TStringList.Clear;
    begin
      SetLength(Strings, 0);
      Count := 0;
    end;
     
    procedure TStringList.Initialize;
    begin
      Clear;
    end;
     
    procedure TStringList.LoadFromFile(aFileName: string);
    var F: Text;
        I: integer;
    begin
      Assign(F, aFileName);
      Reset(F);
      Clear;
      I := 8;
      SetLength(Strings, I);
      while not Eof(F) do
      begin
        ReadLn(F, Strings[Count]);
        inc(Count);
        if Count = I then
        begin
          I := I + 8;
          SetLength(Strings, I);
        end;
      end;
      SetLength(Strings, Count);
      Close(F);
    end;
     
    procedure TStringList.SetCount(aCount: integer);
    begin
      SetLength(Strings, aCount);
      Count := aCount;
    end;
     
     
    // Messages du jeux
    const
      // à trouver une bonne lettre
      bienVus : array[0..3] of string = (
        'Super !',
        'Parfait !',
        'Héhé t''es en forme on dirait!',
        'Chanceux !'
      );
      maxBienVus = length(bienVus);
     
      // n'a pas trouver de lettre
      malVus : array[0..3] of string = (
        'Pas de chance !',
        'Dommage !',
        'Nul, concentre toi un peu !',
        'Holala, n''importe quoi !'
      );
      maxMalVus  = length(malVus);
     
      // gagne la partie
      youWin : array[0..3] of string = (
        'Hey! pas mal du tout!',
        'Félicitation, pas trop dur ?',
        'Qu''elle culture!',
        'Impréssionant!'
      );
      maxYouWin = length(youWin);
     
      // perd la partie
      youLose : array[0..3] of string = (
        'Nul nul nul archi nul!',
        'Ouai ouai ... la prochaine fois quoi ...',
        'T''as joué avec les pieds la ?',
        'Tu devrais lire un peu plus, tu crois pas ?'
      );
      maxYouLose = length(youLose);
     
     
    // variables globale
    var
      N,                               // boucle
      indexAleatoire,                  // index aléatoire pour le dictionnaire
      compteurEssais,                  // nombre d'essais pour trouver le mot
      erreurLettre,                    // nombre d'erreur
      lettreTrouve     : integer;      // nombre d'occurance de la lettre trouvée dans le mot
      motCache,                        // le mot à trouvé
      motCherche,                      // le mot caché
      lettresTest      : string;       // lettres testées
      lettreChoisie,                   // saisie utilisateur
      essayeEncore     : char;         // choix recommencer ou non (o ou n)
      dictionnaireMots : TStringList;  // dictionnaire
     
    begin
      // init generateur de nombres aléatoire
      randomize;
     
      // init dictionnaire
      dictionnaireMots.Initialize;
     
      // chargement dictionnaire
      dictionnaireMots.LoadFromFile('dictionnaire_francais.txt');
     
      // le dictionnaire est vide
      if dictionnaireMots.Count = 0 then
        writeln('Bah mince! le dictionnaire est vide... c''est balot')
      else
        repeat
          // choix d'un mot
          indexAleatoire := random(dictionnaireMots.Count);
          motCache       := dictionnaireMots.Strings[indexAleatoire];
          motCherche     := motCache;
     
          // cache le mot
          for N := 1 to length(motCache) do
            motCherche[N]:='_';
     
          // init partie
          erreurLettre   := 0;
          lettresTest    := '';
          compteurEssais := length(motCache);
          repeat
            // dernière chance
            if (compteurEssais = 1) or (erreurLettre = 4) then
            begin
              write('Dernière chance, proposez un mot pour "',motCherche,'" : ');
              readln(motCherche);
              dec(compteurEssais);
              inc(erreurLettre);
            end
            else
            begin
              // aller, trouve les lettres!
              writeln('Voici le mot à chercher, encore ', compteurEssais,' chances : ', motCherche);
              writeln('lettres testées : ',lettresTest,'');
              write('Choisissez une lettre : ');
              readln(lettreChoisie);
              // sauvegarde des lettres déjà saisie
              lettresTest := lettresTest + lettreChoisie;
     
              // cherche la lettre dans le mot
              lettreTrouve := 0;
              for N := 1 to length(motCache) do
                if lettreChoisie = motCache[N] then
                begin
                  motCherche[N] := lettreChoisie;
                  inc(lettreTrouve);
                end;
     
              if lettreTrouve = 0 then
              begin
                // la lettre n'a pas été trouvée dans le mot
                writeln(malVus[random(maxMalVus)]);
                inc(erreurLettre);
              end
              else
                // la lettre a été trouvée dans le mot
                writeln(bienVus[random(maxBienVus)]);
            end;
     
            dec(compteurEssais);
            writeln('');
          until (erreurLettre >= 5) or (compteurEssais < 1) or (motCache = motCherche);
     
          // gagné ou perdus ?
          if motCache = motCherche then
            writeln(youWin[random(maxYouWin)])
          else
            writeln(youLose[random(maxYouLose)]);
     
          // une autre partie ?
          writeln('');
          write('Une autre partie ? [o/n] :');
          readLn(essayeEncore);
        until not (essayeEncore in ['o','O']);
     
      // vide le dictionnaire
      dictionnaireMots.Clear;
    end.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

Discussions similaires

  1. fatal error : [] operator not supported for strings
    Par abdelkarim_1987 dans le forum Langage
    Réponses: 3
    Dernier message: 04/07/2013, 10h48
  2. ERROR: operator does not exist: integer = text
    Par fortlow dans le forum Administration
    Réponses: 1
    Dernier message: 13/12/2010, 14h44
  3. [PHP 4] [typage faible] Fatal error: [] operator not supported for strings
    Par Deallyra dans le forum Langage
    Réponses: 19
    Dernier message: 24/04/2009, 13h24
  4. [Wamp] Fatal error: [] operator not supported for strings
    Par shubb83 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 30/08/2007, 16h30
  5. Réponses: 4
    Dernier message: 22/04/2006, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo