Partage
  • Partager sur Facebook
  • Partager sur Twitter

FONCTION bsoin d'aide

Sujet résolu
    4 novembre 2006 à 17:48:19

    bonjour!
    J'ai besoin d'aide par rapport a mon probleme:

    j'ai donc un tableau de type : tableau[8][10]

    je cherche donc a ecrire une fonction qui renvoie "VRAI" si il existe une case de coordonée ( i , j ) , alors je me suis dis qu'il suffisait de verifier que i < 8 et j < 10 ?

    Ma fonction aurai l'air de ca? :

    PROBLEME RESOLU ENCORE MERCI :

    int tableau[8][10];

    int Fonction(int i , int j)
    {
    const int true = 1;
    const int false = 0;

    if (i < 8 && j< 10 && i >= 0 && j >= 0 )
    return true;
    else return false ;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      4 novembre 2006 à 17:52:19

      Faux ! Dans un tableau de 8*10, la case tableau[8][10] n'existe pas. Celle avec les indices les plus élevée est tableau [7][9] (cf cours pour l'explication)
      De plus ta fonction retourne quelque chose, donc son type n'est pas void. (je dirais que tu travaille en C++ vu que tu utilise true et false, donc c'est de type bool).
      • Partager sur Facebook
      • Partager sur Twitter
        4 novembre 2006 à 17:55:35

        oui exact j'ai corrigé je travaille en C et int ca marche bien meme si je return true ou false mais j'ai un bleme c'est ke si par exemple je pren i = 5 et j =20

        ca va renvoyer un TRUE pour i et un false pour J comment est ce que la fonction va gerer ca?

        il faut donc que je regroupe les deux condition :/
        • Partager sur Facebook
        • Partager sur Twitter
          4 novembre 2006 à 17:57:50

          puis le 2nd test ne sert à rien car dans tous les cas on rencontre un return avant.
          outre le problème d'indice, ce n'est pas ce que tu a implémenté:

          Citation :

          il suffi de verifier que i est bien inferieur ou egal a 8 et j est bien inferieur ou egal a 10


          • Partager sur Facebook
          • Partager sur Twitter
            4 novembre 2006 à 17:58:04

            dans ce cas, teste directement si i et j sont correct :
            if(i < 8 && j < 10)

            Car dans ton cas tu ne teste pas les deux variables simultanément.
            • Partager sur Facebook
            • Partager sur Twitter
              4 novembre 2006 à 18:01:47

              oui exact! roh lala en cour on nous a pas dis qu'on pouvai mettre deux conditions directement pour If merci bcp nico!! je corrige ca et je reecri le corrigé! je continue a poser d'autres questions apres :D
              • Partager sur Facebook
              • Partager sur Twitter
                4 novembre 2006 à 18:02:35

                Citation : popo_joe

                ma fonction aurai l'air de ca? :

                int Fonction(int i , int j)
                {


                Sans les balises code, elle n'a l'air de rien. Tu n'es pas nouveau ici, alors relis le règles du forum et met les balises... Je ne lis pas le code en vrac...
                • Partager sur Facebook
                • Partager sur Twitter
                Music only !
                  4 novembre 2006 à 18:05:08

                  quel balise code? il s'agit juste d'une FONCTION que j'etabli AVANT la fonction main() juste pour que mon code soit propre!
                  alor j'ai juste demandé si ma fonction etait correcte dailleur je trouve que tout est declaré les variables et les conditions.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 novembre 2006 à 18:09:21

                    non, il parle du Zcode. les balise <code> et < /code> qui devraient entourer le code C que tu nous a passé, histoire que nous le lisions plus facilement. Ca permet à ceux qui sont capable de résoudre tes problèmes de ne pas perdre de temps à chercher encore et encore ton code, de plus il est coloré et donc on repère plus facilement les variables, les conditions, les chaines, etc etc...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      4 novembre 2006 à 18:10:16

                      ah d'accord merci!!desolé

                      j'ai encore un probleme malgré tout dans ce cas la ca fonctionne si on veut tester des nombres positifs mais cela ne fonctionne plus avec des nombres negatifs!

                      j'impose d'autres conditions dans le IF??
                      int tableau[8][10];

                      int Fonction(int i , int j)
                      {
                      if (i < 8 && j< 10 && i >= 0 && j >= 0 ) // est ce que cette ligne est juste?
                      return true;
                      else return false ;
                      }
                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 novembre 2006 à 18:22:17

                        bah euh... oui, c'est une bonne condition
                        Et pense à indenter ton code (cf ici, cela nous permet de nous y retrouver encore mieux, de voir quelles parties de ton code est régie par quelle condition, etc etc (sur un petit code ce n'est pas flagrant, mais prendre de bonnes habitudes n'est pas une mauvaise chose en soi)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          4 novembre 2006 à 18:31:33

                          erf! merci bcp nico t sympa!!
                          mais j'ai encore un souci lorsque j'essaye de compiler sous Code::blocks j'obtient une erreur avec TRUE et False ils me disent qu'ils ne sont pas declarés!

                          alors lorsque je met : INT true, False;
                          code::blocks ne me met plus d'ereur mais dans ce cas la TRUE et FALSE ne sont plus considere comme etant des booleen mais plutot comme etant des variables non??


                          int tableau[8][10];

                          int Fonction(int i , int j)
                          {
                          int true, false; // ici true et false ne sont plus consideré comme booleen NON?
                          if (i < 8 && j< 10 && i >= 0 && j >= 0 )
                          return true;
                          else return false ;
                          }
                          • Partager sur Facebook
                          • Partager sur Twitter
                            4 novembre 2006 à 18:36:01

                            tu les déclare mais ne les initialise pas, ce qui n'est pas standard (j'en sais rien, faut demander à -ed- pour ce qui est du standard) peut provoquer un Comportement Indéfini qui est "la plaie du programmeur" (mais non ed j'ai pas été lire ton site). Quoi qu'il en soit, pour que ton programme fonctionne (tout du moins cette partie), écris :

                            int true = 1,
                                false = 0;

                            Car sinon tu ne sais pas ce qu'ils valent, auxquels cas les tester est une aberration.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              4 novembre 2006 à 18:38:49

                              d'accord donc en realité on ne considere plus TRUE et false comme etant des booleen mais considere des variables appelées True et False avec True =1 ( constante non modifiable) et false = 0 ( constante non modifiable)

                              dans ce cas je met plutot

                              const int true =1;
                              const int false = 0;


                              Merci bcp pour votre patience! surtt a toua nico :)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                4 novembre 2006 à 18:42:35

                                Citation : popo_joe

                                dans ce cas je met plutot


                                const int true =1;
                                const int false = 0;

                                ou tout simplement
                                enum (false, true);

                                mais je ne conseille pas ces noms qui sont réservés en C99...

                                De toutes façons, les booléens, ça ne sert à rien. Une expression logique en C retourne un int valant 0 ou 1.. Ca suffit pour être clair.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Music only !
                                  4 novembre 2006 à 18:48:53

                                  Encore merci :) on a pas vus ce genre de notations encore :) mais c'est bien pour culture generale :p!!
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    4 novembre 2006 à 18:51:38

                                    Pense à mettre ton topic en "résolu" en cliquant sur le lien "signaler que mon topic est résolu" en bas de la page plutôt que de l'écrire dans ton premier post (même si on sent que l'envie y était)
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    FONCTION bsoin d'aide

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown