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

Ada Discussion :

[GNAT+GPS] Aide pour comprendre les messages du compilateur


Sujet :

Ada

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 14
    Points : 13
    Points
    13
    Par défaut [GNAT+GPS] Aide pour comprendre les messages du compilateur
    Voilà c'est décidé je m'y met. J'ai téléchargé GNAT, et GPS.
    Dites moi ce qu'il ne vas pas là-dedans si il vous plait je ne comprend rien à la floppée de message d'erreur du compilo. C'est si facile de le lire un texte en Ada ... et DIEU QUE C'EST DUR D'EN ECRIRE UN SOI-MÊME !
    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
    with Ada.Numerics.Discrete_Random;
    with Ada.Text_IO;Use Ada.Text_IO;
    procedure main is
    	package entier_rancmddom is new Ada.Numerics.Discrete_random(integer);
    	Gen:Ada.Numerics.Discrete_Random.generator;
    	j, aleat : integer;
    begin
    	Put_line("Donnez un nombre s'il vous plait.");
    	loop
    		Get_line(Integer'image(Gen));
    		aleat := Ada.Numerics.Discrete_random.random(Gen);
    		Put_line("A présent essayer de deviner le nombre aléatoire généré !");
    		Get_line(Integer'Image(aleat));
    		if j = aleat then
    			put_line("Vous avez trouvez !!!!);
    			do 5 loop
                                  Delay 0.5;
                                  put(Character'pos(7));
                            end loop;
    			exit;
    		else put_line("Recommençez.");
    		end if;
    	end loop;
    end main;
    Si j'ai utilisé autant d'attribut c'est parce qu'il me semble que put_line et get_line ne prennent que le type string. Peut être que je me trompe ?
    Allez y ... moquez vous maintenant.
    Merci d'avance Que les premiers pas sont durs, que la syntaxe est chi*nte !!!!! mais après j'en serai reconnaissant à Dame Ada !

  2. #2
    Invité
    Invité(e)
    Par défaut
    En prenant les erreurs du début à la fin.

    Ligne 5)
    Gen doit être du type Generator de l'instance de Discrete_random et non Discrete_Random lui même.

    Ligne 10)
    L'attribut Image est une fonction définit comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fonction S'image (Arg: S'Base) return String;
    Comment toute valeur de retour d'une fonction, c'est une constante ! Là, tu devrais utiliser une instance de Ada.Text_IO.Integer_IO. Mais il existe maintenant une instance toute prète pour ies Integer dans la lib standard qui est Ada.Integer_Text_IO.
    De plus, Au lieu de saisir un type Gen, qui doit être privé, tu devrais saisir j avec Get, et non Get_line qui n'existe pas dans Integer_IO.

    Ligne 10 et 1/2) tu devrais inserer une ligne pour initialiser ton générateur avec J;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    entier_rancmddom.Reset(Gen, J);
    Ligne 11)
    Tu dois utiliser l'instance de Discrete_Random.

    Ligne 13)
    Même principe qu'a la ligne10.

    ligne 15)
    T'as pas fermé ta chaîne.

    Ligne 16)
    Je pense que tu veux faire une bouce allant de 1 à 5 ;
    L'instuction for est ton amie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for i in 1..5 loop
      faire_quelque_chose;
    end loop;
    I est déclaré automatiquement.

    Ligne 18) Manqué ! C'est val !


    Commentaire : N'oublis pas ta condition d'arrêt !

  3. #3
    Invité
    Invité(e)
    Par défaut
    manu@Sir:~/new$ ./main
    Donnez un nombre s'il vous plait.
    10
    A présent essayer de deviner le nombre aléatoire généré !
    5
    Recommençez.


    1
    A présent essayer de deviner le nombre aléatoire généré !

    233
    Recommençez.




    0
    A présent essayer de deviner le nombre aléatoire généré !



    0
    Vous avez trouvez !!!!

    manu@Sir:~/new$


    Sur des entiers, faut le faire !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 14
    Points : 13
    Points
    13
    Par défaut essai 2 ... déjà moins d'erreur !
    Ben oui je commence par des entiers ... comme je sais pas exactement comment fonctionne random() !
    Qu'est-ce qui ne va pas avec put_line("Trouvé !" & 7*Character'Val(7)); ?
    Il me dit qu'il attend un integer, mais qu'il trouve un caractère ... Vous m'avez dit que put_line n'existait pas dans ada.numericals.integer_text_io !
    Alors pourquoi ai-je ce problême ? Sinon il ne trouve plus d'erreur dans ça, j'ai un peu simplifié(je suis étonné qu'il n'y ait pas de structure DO en Ada ...) :
    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
    with Ada.Numerics.Discrete_Random;
    with Ada.Text_IO;Use ada.text_IO;
    with Ada.Integer_Text_IO;use Ada.integer_text_IO;
    procedure main is
    	package entier_random is new Ada.Numerics.Discrete_random(integer);
       	use entier_random;
       	choix,chiffre_donné,alea:integer;
       	gen: generator;
    begin
    	Put_line("Donnez un nombre s'il vous plait.");
    	loop
    		ada.integer_text_IO.get(chiffre_donné);
    		entier_random.reset(Gen,chiffre_donné);
    		alea := entier_random.random(Gen);
    		put_line("Rentrez à présent un autre chiffre, nous allons savoir ...");
    		ada.integer_text_IO.get(choix);
    		if choix = alea then
    			ada.text_IO.put_line("Trouvé !" & 7*Character'Val(7));
    			delay 0.5;
    			exit;
    		else put_line("Recommencez à nouveau, donnez un premier nombre.");
    		end if;
       	end loop;
       	return;
    end main;

  5. #5
    Invité
    Invité(e)
    Par défaut
    T'as pas pris la même source que moi pour compter les lignes.
    Mais j'ai fais une erreur de +1 pour la ligne 18. C'est la ligne 17.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Enlève l'instruction reset aussi, elle ne fait pas partie de ton code.
    Désolé, j'avais pas lu le code en entier.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Bon c'est bon il tourne. gnatmake me dit rien, mais gnatcheck m'envoie encore une floppée d'erreur. Peut importe. Je vais faire d'autres exercices.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/06/2015, 15h41
  2. Client TCP sous android aide pour recevoir les messages
    Par Vestaproman dans le forum Android
    Réponses: 6
    Dernier message: 16/08/2012, 22h39
  3. [MySQL] besoin d'aide pour comprendre les injections sql
    Par cassy dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 28/01/2007, 14h21
  4. Réponses: 2
    Dernier message: 10/01/2007, 23h28
  5. Réponses: 4
    Dernier message: 28/07/2005, 16h22

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