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

Turbo Pascal Discussion :

[TP] Problème de dénombrement


Sujet :

Turbo Pascal

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 113
    Points : 72
    Points
    72
    Par défaut [TP] Problème de dénombrement
    Je viens de faire un programme qui fait le calcul de l'arrangement sans remise mais il m'indique un problème.
    SVP aidez-moi à le corriger
    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
    program arrange ;
    uses wincrt;
    var
    x,n,p:integer;
    function fact(x:integer):longint;
    var
    s,i:longint;
    begin
    s:=1;
    	for i := 1 to x do
    	begin
    s:=s*i
    	end;
    fact:=s;
    end;
    procedure lecture(var n:integer;var p:integer);
    begin
    	repeat
    writeln('donnes le nombre d objet');
    readln(n) ;
    writeln('donnes le nomre d objet à tiré');
    readln(p);
    	until p >= n  ;
    end;
    procedure arrangement (n:integer;p:integer);
    	var
    A:integer;
    c,v:longint;
    	begin
    c:= fact(n);
    v:=fact(n-p);
    A:=c/v;
    writeln('le nombre de tirage est:   ',A);
    end;
    begin
    lecture(n,p);
    arrangement(n,p);
    end.

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Si tu ne fais pas d'effort, nous n'en ferons pas. Indique nous pourquoi ca ne fonctionne pas, si ca compile ou pas.
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Je vois deux erreurs :

    p doit être inférieur à n, pas supérieur...

    Cette division-là est pour les flottants. Pour les entiers, il faut utiliser div.

    Et puis, pourquoi a est-il integer et pas longint, mystère...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 113
    Points : 72
    Points
    72
    Par défaut
    le probleme est dans une simple opertion d'adition

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 113
    Points : 72
    Points
    72
    Par défaut
    voici la corecction mais le pascal n'a pas l'accepté

    until n >= p and p >=1

  6. #6
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Non, c'est :

    ou

    et c'est tout. Ta fonction fact est bien écrite, en principe elle renvoie bien 0! = 1.

    Par ailleurs, pour mettre deux tests séparés par un and, chaque condition doit être mise entre parenthèses, sinon effectivement ça ne passe pas.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 113
    Points : 72
    Points
    72
    Par défaut
    oui ça bien marché merci beacoup

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 113
    Points : 72
    Points
    72
    Par défaut
    J'ai modifié le programme mais j'ai eu un problème sur l'affichage du dernier resultat malgré que le calcul est juste
    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
    program combinison ;
    uses wincrt;
    var
    x,n,p:integer;
    function fact(x:integer):longint;
    var
    s,i:longint;
    begin
    s:=1;
    	for i := 1 to x do
    	begin
    s:=s*i
    	end;
    fact:=s;
    end;
    procedure lecture(var n:integer;var p:integer);
    begin
    	repeat
    writeln('donnes le nombre d objet');
    readln(n) ;
    writeln('donnes le nomre d objet à tiré');
    readln(p);
    	until (n >= p) and (p >=1)  ;
    end;
    procedure combini (n:integer;p:integer);
    	var
    A:integer;
    c,k,v:longint;
    	begin
    c:= fact(n);
    v:=fact(n-p);
    k:=c*v;
    A:=c div k ;
    writeln('le nombre de tirage est:   ',A);
    end;
    begin
    lecture(n,p);
    combini(n,p);
    end.

  9. #9
    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
    Jao,

    Puisque c'est résolu, je me permets une fois de plus:

    Attention à la mise en forme du code, c'est important, aussi bien pour toi que pour faire relire/corriger ton programme par quelqu'un d'autre.

    Ce n'est quand même pas difficile à faire

    Exemple, là, je n'ai même pas jeté un coup d'oeil à ton code, trop confus.
    Si les cons volaient, il ferait nuit à midi.

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

Discussions similaires

  1. [2003] Problème de dénombrement de valeurs différentes
    Par mandela9857 dans le forum Microsoft Office
    Réponses: 2
    Dernier message: 02/02/2015, 12h59
  2. [XL-2002] Somme avec conditions ou problème de dénombrement
    Par Xorbane dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/05/2012, 22h51
  3. Problème de dénombrement dans un StringGrid
    Par Nyio- dans le forum Composants VCL
    Réponses: 2
    Dernier message: 25/05/2010, 15h19
  4. Problème de dénombrement
    Par nicolas66 dans le forum Mathématiques
    Réponses: 8
    Dernier message: 28/10/2007, 19h03
  5. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18

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