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

Langage Perl Discussion :

Resultat entier d'une division


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Par défaut Resultat entier d'une division
    Bonjour,

    je suis en train de faire un calcul pour obtenir dans un quadrillage le numéro d'une colonne (soit 'c') d'après le n° du carré (soit 'N'). Les éléments du maillage sont numérotés de haut en bas, puis colonne par colonne depuis la gauche vers la droite.

    J'ai donc besoin de diviser N par le nombre d'éléments par colonne (soit 'z') et d'arrondir au nombre supérieur.
    (ou autrement dit d'obtenir le résultat entier et d'y ajouter 1)

    Je ne sais pas comment écrire cela en perl (ni en c d'ailleurs)

    mon code se présente de cette manière pour l'instant :

    Quelqu'un aurait une idée de comment faire cela ?

    Merci à toutes les contributions !

    L.

  2. #2
    Membre chevronné Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Par défaut
    Bonjour,

    Pour arrondir à l'entier supérieur sur une division tu peux regarder le modulo (reste de la division entière) de tes deux nombres :
    - si celui-ci est égale à 0 : la division peut se faire sans arrondi : ex 8 / 2 = 4
    - si celui-ci n'est pas égal à 0 : on utilise "int" qui va garder la partie entière de la division et ajouter 1 pour arrondir à l'entier supérieur. Ex : int(9 / 2) + 1 = 4 + 1 = 5

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    my $res = 0;
    if(($num_1 % $num_2) == 0){
      $res = $num_1 / $num_2;
    }
    else{
      $res = int($num_1 / $num_2) + 1;
    }

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Il n'est pas nécessaire de faire ce type de contrôle, la fonction suivante retourne le bon arrondi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $arrondi_entier = int($nombre + 0.5);
    Ceci fonctionne également pour arrondir au dixième :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $arrondi10e = int($nombre * 10 + 0.5)/10;

  4. #4
    Membre chevronné Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Par défaut
    Merci pour la solution, je n'avais pas pensé à ajouter 0.5 pour ensuite arrondir.

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Tu peux aussi utiliser le module POSIX.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    use POSIX qw(ceil);
    $c= ceil($N/$z); # This is identical to the C function ceil(), returning the smallest integer value greater than or equal to the given numerical argument.
    # ou 
    $c= floor($N/$z); # This is identical to the C function floor(), returning the largest integer value less than or equal to the numerical argument.
    Tu n'as pas besoin d'installer le module. Il est par défaut dans le core.

Discussions similaires

  1. valeur entiere d'une division
    Par oliv27400 dans le forum MATLAB
    Réponses: 2
    Dernier message: 07/07/2010, 14h39
  2. Resultat d'une division à 0
    Par backdraf dans le forum Développement
    Réponses: 5
    Dernier message: 09/05/2009, 09h53
  3. Partie entiere d'une division
    Par freestyler dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/07/2008, 14h25
  4. Reste d'une division et partie entier.
    Par vanilla94 dans le forum Langage
    Réponses: 4
    Dernier message: 28/11/2006, 19h14
  5. Afficher la partie entiere d'une division
    Par ju360modena dans le forum ASP
    Réponses: 2
    Dernier message: 29/06/2005, 15h31

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