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 :

Comparer deux entiers sans structure conditionnelle


Sujet :

Turbo Pascal

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Comparer deux entiers sans structure conditionnelle
    Bonjour,

    Sans une structure conditionnelle, écrire un programme Pascal permettant de saisir deux entiers a et b et d'afficher la plus grande valeur.
    J'ai deux méthodes et je voudrais une autre méthode.

    1e méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    uses wincrt ; 
    var a,b,max:integer;
    begin 
    readln(a,b);
    max:=ord(a>b)*a+ord(b>a)*b ;
    writeln(max) ; 
    end.
    2e méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    uses wincrt; 
    var a,b,max:integer;
    begin
    readln(a,b) ;
    max:=trunc((a+b)/2 + ( a-b)/2) ;
    writeln(max);
    end.
    3e méthode ???

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 404
    Points : 5 790
    Points
    5 790
    Par défaut
    salut

    ta première méthode ne fonctionne pas si tu as une égalité
    tu dois dans l'un des termes écrire >=

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    max:=ord(a>b)*a+ord(b>=a)*b ;
    la deuxieme methode ne fonctionne pas si tes nombre ne sont pas ordonné et positif



    reprenons ta fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    max:=trunc((a+b)/2 + ( a-b)/2) ;
    imaginons que l'on a a = 1 et b = 2
    le premier termes seras donc égale a (1+2)/2 =>3/2 1.5
    le deuxième termes seras donc égale a (1-2)/2 =>-1/2 = -0.5
    pour que cela fonctionne il faut la valeur absolue du deuxième terme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    max:=(a+b)/2 +  Abs(a-b)/2 ;
    pour la troisième méthode dans la même veine que le deuxième on utilise la transitivité des opération

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =((B3+C3)+ABS(B3-C3))/2
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup
    Mais y a t'il une autre solution ?

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 404
    Points : 5 790
    Points
    5 790
    Par défaut
    salut

    une autre solution proche de la première

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Bool := a>b; 
    max:=ord(Bool)*a+ord(not(Bool))*b ;
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    une petite recherche google permet de trouver la réponse (mais comment faisait-on avant ?!)

    on la trouve même sur DVP dans la section algorithme évidemment

    http://www.developpez.net/forums/d21...mum-2-nombres/
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 550
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 550
    Points : 3 916
    Points
    3 916
    Par défaut
    Salut,

    Avec un opérateur conditionnel (? : ) comme en langage C, ce serait quand même plus sympa. Cet opérateur a une caractéristique intéressante, l'évaluation de 2ème ou 3ème opérande est contrôlée par celle du premier. Ce qui n'est pas identique par exemple à des fonctions iif(condition, valeur_si_true, valeur_si_false) où tous les opérandes sont évaluées.

    A quand dans Free Pascal ?

    Cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

Discussions similaires

  1. [XL-2010] Calcul de cumul avec une structure conditionelle
    Par bernadin.m dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 08/07/2014, 12h06
  2. Structure conditionel If
    Par mathiew dans le forum Débuter
    Réponses: 2
    Dernier message: 25/03/2009, 17h04
  3. Problème de structure conditionelle
    Par tidus666x dans le forum ASP
    Réponses: 7
    Dernier message: 30/04/2007, 00h18
  4. Import de la structure sans les données
    Par magic charly dans le forum Oracle
    Réponses: 8
    Dernier message: 05/04/2006, 15h43
  5. Insertion sans connaitre la structure
    Par Alexandre T dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/10/2005, 11h58

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