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

Pascal Discussion :

Inversion tableau en utilisant module inverse en méthode récursive


Sujet :

Pascal

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 23
    Points : 19
    Points
    19
    Par défaut Inversion tableau en utilisant module inverse en méthode récursive
    dans mon programme je veut inverser les elements d'un tableau t de n elements
    en utilisant le module inverse en methode recursive
    j'ai pas trouvé la faute oO je demande votre aide et merci d'avance ^^
    voici le code :

    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
    program inverser;
    uses wincrt ;
    type tab=array[1..50]of integer ;
    var t:tab ;
    i,n:integer;
    procedure saisie (var t:tab ;var n:integer);
    var i:integer ;
    begin
    writeln('donner la taille du tableau');
    readln(n);
     
    for i:= 1 to n do
    begin 
    writeln('donner l"entier n° ',i);
    readln(n);
    end;
    end;
    procedure permuter(a,b:integer);
    var z:integer;
    begin
      z:=a ;
      a:=b;
      b:=z;
      end;
    procedure inverse (var t:tab;var n,i:integer );
       begin 
       if (i<n) then
       permuter(t[i],t[n]);
       i:=i+1;
       n:=n-1;
       end;
     
       procedure affichage (t:tab;n:integer);
       var i:integer ;
       begin
       for i:=1 to n do
       write(t[i],' ');
       end;
       begin
       saisie(t,n) ;
        i:=1;
       inverse(t,n,i);
       affichage(t,n);
       end.
    je croi que la faute est trop petite que j'ai pas vu
    a+

  2. #2
    Membre confirmé
    Homme Profil pro
    .
    Inscrit en
    Juin 2002
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2002
    Messages : 239
    Points : 567
    Points
    567
    Par défaut
    Bonjour.

    Première erreur dans la procédure Saisie :

    pour saisir l'entier t[i], il faut écrire readln(t[i]) et non readln(n).


    Deuxième erreur dans la procédure Inverse :

    pour qu'elle soit récursive, il faut qu'elle s'appelle elle-même ;

    il faut donc écrire quelque chose du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ( i < n ) then begin
                                 permuter(t[i],t[n]) ;
                                 inverse(t,n-1,i+1) ;
                         end ;
    .

  3. #3
    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
    j'ajoute aux remarques precedentes d'autres encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure saisie (var t:tab ;var n:integer);
    var i:integer ;
    begin
         writeln('donner la taille du tableau');
         readln(n);
         for i:= 1 to n do
         begin 
             writeln('donner l"entier n° ',i);
             readln(n);
         end;
    end;
    Pas la peine de passer tes deux parametres par adresses et en plus tu peux bien passer seulement le tableau par adresse et ne meme pas passer la taille a saisir meme si tu veux apres connaitre la taille de ton tableau tu peux t'en passer la,(tout ça parce que cette taille est saisie à l'interieur de la procedure)
    Et comme deja dit pour lire dans les element du tableau c'est bien
    voila ce que je te propose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure saisie (var t:tab );
    var i,n:integer ;
    begin
         write('donner la taille du tableau:');
         readln(n);
         for i:= 1 to n do
         begin 
             writeln('donner l"entier n° ',i);
             readln(t[i]);
         end;
    end;
    ou pour cette fonction deux entetes possibles
    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
     
    fonction saisie (taille:integer):tableau;{dans ce cas tu n'auras plus a lire la taille dans la fonction}
    fonction saisie :tab;
    var i,n:integer ;
         t:tab;
    begin
         write('donner la taille du tableau:');
         readln(n);
         for i:= 1 to n do
         begin 
             writeln('donner l"entier n° ',i);
             readln(t[i]);
         end;
         saisie:=t;
    end;
    Ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure permuter(a,b:integer);
    var z:integer;
    begin
      z:=a ;
      a:=b;
      b:=z;
    end;
    On voit bien que tu permute ici mais d'apres toi que se passe t-il un fois qu'on sort de cette procedure a et b etant passé par valeur il resteront intact
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure inverse (var t:tab;var n,i:integer );
    begin 
       if (i<n) then
       permuter(t[i],t[n]);
       i:=i+1;
       n:=n-1;
    end;
    ça se passe en une fois
    Ou est passer ta recursivité dans ton code a moins que tu te trompes de mot
    mais bon j'arrete la,je vois un peu que tu ne prends pas trop le temps de bien etudier ce que tu veux faire avant de lancer a programmer et ça fait trop de chose pour un petit code a faire
    Ps:Evites d'utiliser le moins possibles les variables globales
    @+
    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

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Kio,
    Citation Envoyé par krachik Voir le message
    Ps:Evites d'utiliser le moins possibles les variables globales
    Aïe !

    La malédiction de la double négation a encore frappé.
    Si les cons volaient, il ferait nuit à midi.

  5. #5
    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
    Citation Envoyé par droggo
    Aïe !
    La malédiction de la double négation a encore frappé.


    Je deteste la malédiction
    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

  6. #6
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    merci bcp les gars
    je fait des fautes tres stupide
    il faut que j'ameliore mon niveau si quelqu'un a des exercices tres difficiles de recursivité me les pose svp et merci une autre fois et ciao

  7. #7
    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
    Citation Envoyé par aymenet1
    je fait des fautes tres stupide
    Meme les experts font des fautes stupides si on peut considerer qu'il y a plus ExPerTs qu'eux(Mais franchement il y a des fautes a ne pas faire )
    Citation Envoyé par aymenet1
    il faut que j'ameliore mon niveau si quelqu'un a des exercices tres difficiles de recursivité me les pose svp et merci une autre fois et ciao
    Bonjour

    tu t'en sort pas avec ça et tu veux des exercices de recursivité difficiles?
    il y a plein de sites ou tu trouveras des exercices sur la recursivité
    Que penses-tu de faire un code pour les tours Hanoi?(Si t'es chaud on fait le jeu ensemble ,c'est du code recursif)
    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

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Hio,
    Citation Envoyé par aymenet1 Voir le message
    merci bcp les gars
    je fait des fautes tres stupide
    il faut que j'ameliore mon niveau si quelqu'un a des exercices tres difficiles de recursivité me les pose svp et merci une autre fois et ciao
    À ce sujet, je suis en accord avec krachik.

    Il ne faut pas chercher à courir avant de savoir marcher.
    Si les cons volaient, il ferait nuit à midi.

Discussions similaires

  1. [XL-2007] Méthode inverse tableau croisé dynamique
    Par celineg13 dans le forum Excel
    Réponses: 3
    Dernier message: 17/01/2013, 10h56
  2. Macro Inverser Tableau
    Par kikim78 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/12/2009, 15h46
  3. Inversion tableau + Interpolation sous VBA
    Par keko38 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/05/2009, 22h09
  4. convertir object en tableau de byte et inversement
    Par wolfazer dans le forum VB.NET
    Réponses: 5
    Dernier message: 27/11/2008, 10h39
  5. Réponses: 10
    Dernier message: 18/02/2008, 10h07

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