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 :

Programme pour estimer le prix d'un objet


Sujet :

Pascal

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Programme pour estimer le prix d'un objet
    Bonjour,
    voila je débute en pascal et pour m'entrainer j'ai décider d'écrire un petit programme pascal pour estimer le prix d'un objet.
    mais je bloque sur certains points..mon programme n'a pas l'air correct.

    Pourriez vous m'indiquer ou cela ne va pas? j'ai bien séparer toutes les étapes pour une meilleurs compréhension... je blinderai le programme seulement après quand je suis sure que tout fonctionne.
    Peut on faire plus simple? merci de votre aide! j'attend surtout des critiques constructives pour me faire avancer dans mon apprentissage.
    Ce qui me pose le plus de problème étant le coup du random...
    De plus a la fin du programme..comment poser une condition que le prixfinal ne doit en aucun cas dépasser 70% de la valeur initiale? (une sorte de %max de 0.7)
    J'ai légèrement remodifier le programme...par contre pour la ligne avec le random voila ce que j'aimerais que le pourcentage soit influencer par la valeur (ici bluff ou diplomatie) avec un facteur aléatoire de 1 a 20
    ex:
    j'ai 30 en bluff auquel je rajoute une nombre comprit entre 1 et 20 et ensuite seulement je divise le total par 200 qui se rajoute au pourcentage.

    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
     
     
    program revente;
    var marchand,typeobjet,ro,competence,duree,prixfinal,prixinitial: integer;
            pourcentage: real;
    begin
         repeat
               writeln ('entrer le prix initial de lobjet a vendre');
               readln (prixinitial);
         until prixinitial>0;
         repeat
         writeln ('indiquer le type dobjet 11-armes classique 12-armes exotique 13-armures 14-bijoux 15-autres');
         readln (typeobjet);
                case typeobjet of
                '11': pourcentage:=0.4;
                '12': pourcentage:=0.3;
                '13': pourcentage:=0.4;
                '15': pourcentage:=0.45;
                '16': pourcentage:=0.5;
                then
                    writeln ('mauvais choix');
                end;
         until typeobjet>10 and typeobjet<16;
         repeat
         writeln ('indiquer le type de marchands 1-honnete 2-filou 3-escroc');
         readln (marchand);
                case marchand of
                '1': pourcentage:=pourcentage; {idéalement ici j'aimerai un random entre -0.05 et +0.05 mais je n'ai pas trouver comment faire...)
                '2': pourcentage:=pourcentage-0.05;
                '3': pourcentage:=pourcentage-0.15;
                then
                writeln ('mauvais choix');
                end;
         until marchand>0 and marchand<4;
     
         repeat
               Randomize;
               writeln ('entrer la valeur de diplomatie ou de bluff');
               pourcentage:= pourcentage+((competence+rand(20))/200);
               readln (competence);
         until comp>-1;
         repeat
               writeln ('entrer la duree consacrée en jours a la revente de lobjet');
               readln (duree);
               case duree of
               '0':pourcentage-0.1;
               '>0 and <16' :pourcentage;
               '>15 and <31' : pourcentage:= pourcentage+0.02;
               '>30 and <61' : pourcentage:= pourcentage+0.04;
               '>60 and <91' : pourcentage:= pourcentage+0.07;
               '>90 and <121' : pourcentage:= pourcentage+0.1;
               '>120 and <181' : pourcentage:= pourcentage+0.13;
               '>180 and <361' : pourcentage:= pourcentage+0.20;
               end;
         until duree>-1;
         end;
         writeln (prixinitial*pourcentage);
         readln;
    end.

  2. #2
    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
    Joa,

    Pour commencer, il faut tenir compte des messages du compilateur (vu le code, tu en as forcément).
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    justement...je ne comprend pas ou sont mes erreurs..c'est pour cela que je demande de l'aide

  4. #4
    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
    tu peux poster le message d'erreur, afin de faciliter la détection de l'erreur. On a pas forcement de compilateur pascal sur nos machines ou envie de compiler les codes à chaque fois

    Il y a plein d'erreurs dans ton code : syntaxe, type incompatible, ...
    Commençant par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     case typeobjet of
                '11': pourcentage:=0.4;
                '12': pourcentage:=0.3;
                '13': pourcentage:=0.4;
                '15': pourcentage:=0.45;
                '16': pourcentage:=0.5;
                then
                    writeln ('mauvais choix');
                end;
    La syntaxe de la structure case-of n'est respecté. Aussi, typeObjet est de type Integer et tu essaye de la comparer avec des String.

    Une resivion de ton cours sur le pascal te sera bien utile.

    Une petite correction de ton code donne ce qui suit, mais je ne promet pas que le code va compiler ni faire ce que tu veux
    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
     
    program revente;
       var 
            marchand, typeobjet, ro, competence, duree, prixfinal, prixinitial : Integer;
            pourcentage : real;
     
    begin
         repeat
               write('entrer le prix initial de lobjet a vendre : ');
               readln (prixinitial);
         until prixinitial>0;
     
         repeat
          write ('indiquer le type dobjet 11-armes classique 12-armes exotique 13-armures 14-bijoux 15-autres : ');
          readln (typeobjet);
          case typeobjet of
            11 : pourcentage := 0.4;
            12 : pourcentage := 0.3;
            13 : pourcentage := 0.4;
            15 : pourcentage := 0.45;
            16 : pourcentage := 0.5;
             else
                writeln ('mauvais choix');
          end;
        until (typeobjet>10) and (typeobjet<16); { () indispensable }
     
       repeat
         write ('indiquer le type de marchands 1-honnete 2-filou 3-escroc : ');
         readln (marchand);
         case marchand of
           1 : pourcentage:=pourcentage; {idéalement ici j'aimerai un random entre -0.05 et +0.05 mais je n'ai pas trouver comment faire...}
           2 : pourcentage:=pourcentage-0.05;
           3 : pourcentage:=pourcentage-0.15;
           else
               writeln ('mauvais choix');
          end;
        until (marchand>0) and (marchand<4);
     
         repeat
           Randomize;
           writeln ('entrer la valeur de diplomatie ou de bluff');
               pourcentage:= pourcentage+((competence+random(20))/200);
               readln (competence);
         until competence>-1;
     
         repeat
               write('entrer la duree consacrée en jours a la revente de l''objet :');
               readln(duree);
               case duree of
                 0 : pourcentage := pourcentage-0.1;
                 {1..15    : pourcentage;}
                 16..30  : pourcentage := pourcentage+0.02;
                 31..60  : pourcentage := pourcentage+0.04;
                 61..90   : pourcentage := pourcentage+0.07;
                 91..120 : pourcentage := pourcentage+0.1;
                 121..180 : pourcentage := pourcentage+0.13;
                181..361 : pourcentage := pourcentage+0.20;
              end;
         until duree>-1;
         end;
     
         writeln (prixinitial*pourcentage);
         readln;
    end.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    bon j'ai remodifier le programme et ça me donne quelque chose qui marche pas trop mal.
    Maintenant j'aimerai rajouter de l'aléatoire...et je ne sait pas comment m'y prendre...j'aimerais rajouter sur ma ligne
    pourcentage:= pourcentage+(competence/200) une variable qui prenne en compte une valeur comprise entre 1 et 20
    en gros ca donnerai
    pourcentage:= pourcentage+((competence*random(20))/200); {attention rand 20 comprit entre 1 et 20}
    ..et si jamais le rand(20) donne 1 j'aimerai une condition et si cela donne 20 j'aimerai une autre condition..possible de m'aiguiller?

    Sinon comment créer l'exécutable via dev pascal? impossible de trouver des infos pour la suite apres avoir lancer le programme...merci!!

    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
     
    program revente;
       var 
            marchand, typeobjet, ro, duree, prixinitial,prixfinal : integer;
            pourcentage,competence : real;
     
    begin
         repeat
               write('entrer le prix initial de lobjet a vendre : ');
               readln (prixinitial);
         until prixinitial>0;
     
         repeat
          write ('indiquer le type dobjet 11-armes classique 12-armes exotique 13-armures 14-bijoux 15-autres : ');
          readln (typeobjet);
          case typeobjet of
            11 : pourcentage := 0.4;
            12 : pourcentage := 0.3;
            13 : pourcentage := 0.4;
            15 : pourcentage := 0.45;
            16 : pourcentage := 0.5;
             else
                writeln ('Merci de faire la bonne selection!!');
          end;
        until (typeobjet>10) and (typeobjet<16); { () indispensable }
     
       repeat
         write ('indiquer le type de marchands 1-honnete 2-filou 3-escroc : ');
         readln (marchand);
         case marchand of
           1 : pourcentage:=pourcentage; {idéalement ici j'aimerai un random entre -0.05 et +0.05 mais je n'ai pas trouver comment faire...}
           2 : pourcentage:=pourcentage-0.05;
           3 : pourcentage:=pourcentage-0.15;
           else
               writeln ('Merci de faire la bonne selection!!');
          end;
        until (marchand>0) and (marchand<4);
     
         repeat
           Randomize;
           writeln ('entrer la valeur de diplomatie ou de bluff');
               readln (competence);
               pourcentage:= pourcentage+(competence/200);
     
         until competence>-1;
     
         repeat
               write('entrer la duree consacrée en jours a la revente de l''objet :');
               readln(duree);
               case duree of
                 0 : pourcentage := pourcentage-0.1;
                 {1..15    : pourcentage;}
                 16..30  : pourcentage := pourcentage+0.02;
                 31..60  : pourcentage := pourcentage+0.04;
                 61..90   : pourcentage := pourcentage+0.07;
                 91..120 : pourcentage := pourcentage+0.1;
                 121..180 : pourcentage := pourcentage+0.13;
                181..361 : pourcentage := pourcentage+0.20;
              end;
         until duree>-1;
     
         writeln (trunc(prixinitial*pourcentage));
         readln;
    end.

  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
    Citation Envoyé par jadrax Voir le message
    pourcentage:= pourcentage+(competence/200) une variable qui prenne en compte une valeur comprise entre 1 et 20
    Random(x) donne un nombre compris entre 0 et x-1. Pour avoir un nombre compris entre 1 et 20, tu dois faire
    Aussi, ne met pas randomize dans la boucle repeat sinon tu auras presque le meme nombre a chaque fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    repeat
           Randomize;
           writeln ('entrer la valeur de diplomatie ou de bluff');
               readln (competence);
               pourcentage:= pourcentage+(competence/200);
     
         until competence>-1;
    Pour ajouter des condition pour 1 et 20, la solution c'est de les ajouter, je ne vois pas d'autres solutions
    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
     
    repeat
           writeln ('entrer la valeur de diplomatie ou de bluff');
           readln (competence);
           r:=1+random(20);
     
           if(r=1) then
              one()
           else if (r=20) then
             twenty()
           else
             other();
     
           pourcentage:= pourcentage+((competence*r)/200);
     
         until competence>-1;

  7. #7
    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
    aller hop, on réorganise tout et on corrige toute les erreurs
    avec en bonus : utilisation de VAL et FORMAT.

    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
     
    program revente;
     
    {$IF (not defined(FPC)) and (RTLVersion >= 13.0) }
      {$APPTYPE CONSOLE}
    {$IFEND}
     
    uses SysUtils;
     
    function getInitialPrice: integer;
    var S: string;
        E: integer;
        V: integer;
    begin
      repeat
        write('entrer le prix initial de lobjet a vendre (1 a 2 milliard) : ');
        readln(S);
        val(S, V, E);
      until (E = 0) and ((V > 0) and (V < 2000000000));
      writeln('');
      result := V;
    end;
     
     
    function getObjectType: integer;
    var
      S: string;
      E: integer;
      V: integer;
    begin
      repeat
        writeln('indiquez le type d''objet (1 a 5) : ');
        writeln('  1 : armes classique');
        writeln('  2 : armes exotique');
        writeln('  3 : armures');
        writeln('  4 : bijoux');
        writeln('  5 : autres');
        write('votre choix : ');
        readln(S);
        val(S, V, E);
      until (E = 0) and ((V > 0) and (V < 6));
      writeln('');
     
      result := V;
    end;
     
     
    function GetMerchantType: integer;
    var
      S: string;
      E: integer;
      V: integer;
    begin
      repeat
        writeln('indiquez le type de marchand (1 a 3) : ');
        writeln('  1 : honnete');
        writeln('  2 : filou');
        writeln('  3 : escroc');
        write('votre choix : ');
        readln(S);
        val(S, V, E);
      until (E = 0) and ((V > 0) and (V < 4));
      writeln('');
     
      result := V;
    end;
     
     
    function getSkillValue: integer;
    var
      S: string;
      E: integer;
      V: integer;
    begin
      repeat
        write('entrez la valeur de diplomatie ou de bluff (0 a 20) : ');
        readln(S);
        val(S, V, E);
      until (E = 0) and ((V >= 0) and (V < 21));
      writeln('');
     
      result := V;
    end;
     
     
    function getSellTime: integer;
    var
      S: string;
      E: integer;
      V: integer;
    begin
      repeat
        write('entrez le nombre de jours de vente pour cet objet (1 a 365) : ');
        readln(S);
        val(S, V, E);
      until (E = 0) and ((V > 0) and (V < 366));
      writeln('');
     
      result := V;
    end;
     
     
    var
      modifier,
      initialPrice,
      finalPrice,
      priceLimit : single;
    begin
      Randomize;
     
      modifier := 0.7;
     
      // initial price
      initialPrice := GetInitialPrice;
      priceLimit   := initialPrice * 0.7;
     
      // object type
      case getObjectType of
        1 : modifier := 0.4;
        2 : modifier := 0.3;
        3 : modifier := 0.4;
        4 : modifier := 0.45;
        5 : modifier := 0.5;
      end;
     
      // merchant type
      case getMerchantType of
        1 : modifier := modifier + ((random(5)+1)*0.01); // +0.01% .. +0.05%
        2 : modifier := modifier - ((random(4)+2)*0.01); // -0.02% .. -0.05%
        3 : modifier := modifier - ((random(11)+5)*0.01); // -0.05% .. -0.15%
      end;
     
      // bluff skill : 0..19.5%
      modifier := modifier + ((getSkillValue + random(20))*0.005); // +0.00% .. 19.5%
     
      // sell time
      case GetSellTime of
        0        : modifier := modifier - 0.1;
        15..30   : modifier := modifier + 0.02;
        31..60   : modifier := modifier + 0.04;
        61..90   : modifier := modifier + 0.07;
        91..120  : modifier := modifier + 0.1;
        121..180 : modifier := modifier + 0.13;
        181..365 : modifier := modifier + 0.20;
      end;
     
      // final price calculation
      if modifier < 0.1 then // minimum price = 10% of initial price
        modifier := 0.1
      else
      if modifier > 0.7 then // maximum price = 70% of initial price
        modifier := 0.7;
     
      finalPrice := initialPrice * modifier;
      writeln('Le prix de votre objet est de ', format('%.2n credits (modificateur : %.1f%%)',[finalPrice, modifier*100]));
     
      readln;
    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. (Québec) Estimation de Prix pour un site web ?
    Par Atmaelius dans le forum Devis
    Réponses: 7
    Dernier message: 23/12/2012, 15h52
  2. Fourchette d'estimation de prix pour site
    Par totoz dans le forum Devis
    Réponses: 9
    Dernier message: 24/06/2009, 09h17
  3. existe t 'il des programme pour transformer les bases
    Par creazone dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 05/10/2004, 14h11
  4. [TP]Programme pour piloter port série et parallèle...
    Par DDR dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 15/04/2004, 21h52
  5. Créer de programme pour WIndows avec Turbo Pascal
    Par kaygee dans le forum Turbo Pascal
    Réponses: 16
    Dernier message: 20/08/2003, 23h22

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