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

C Discussion :

Fonction "sign" ?


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 43
    Par défaut Fonction "sign" ?
    Voila, je suis en train de creer une S-Fonction sous matlab grace au S-fonction builder. Les formules mathematiques a taper sont de syntaxe C et a un moment j'ai la fonction "sign" a utiliser. Le probleme c'est que cette fonction n'existe pas en C.
    QQ1 connait son equivalent? J'ai pense a faire une fonction pour la remplacer... Petit probleme, je peux que taper des formules mathematiques, l'ajout d'une fonction fait planter la compilation.

    P.S: desole pour le manque d'accents mais je suis en stage en angleterre et sur claviers QWERTY y a pas d'accents...

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Par défaut
    quel est l'utilite de cet fonctions sign?

    moi aussi je suis en qwerty

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par sfeltan Voir le message
    <...> un moment j'ai la fonction "sign" a utiliser. Le probleme c'est que cette fonction n'existe pas en C.
    Super dur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return a < 0; /* 0=+ 1=- */
    je te laisse faire l'enrobage...

  4. #4
    Membre éclairé

    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Août 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 33
    Par défaut
    Si "sign" te renvoit juste le signe de ton entier tu peux la remplacer assez trivialement ainsi :

    sign(x) <=> x/abs(x)

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Par défaut
    ca doit donner le signe d'une valeur lol

  6. #6
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 43
    Par défaut
    Bon alors au final j'ai utilise #define sign(a) ((a)/fabs((a))) que j'ai trouve sur le forum.

  7. #7
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 43
    Par défaut
    pour info, la fonction sign sous matlab renvois 1 si le chiffre est positif, -1 si negatif

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Par défaut
    tu dis
    if(i>0) return 1;
    if(i=0) return 0;
    else return -1;

    i etant ta valeur.
    la j'ai rajoute que si ta valeur est nulle ca retourne 0.

  9. #9
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    qu'est ce qui ne joue pas avec la fonction d'Emmanuel? Sous forme de macro, cela donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #define sign(a) ( (a) < 0 )
    Difficile de faire plus simple et concis.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  10. #10
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 43
    Par défaut
    le #define marche tres bien, c'est juste que, comme je l'ai marque plus haut, dans l'assistant de creation de sfonction on doit se contenter de taper des fomules mathematiques... Voila

  11. #11
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    En effet, la fonction "sign" classique que je connais, c'est plutôt -1, 0, 1 :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /* Le type de retour doit sûrement être int, 
       mais le type d'entrée est au choix.*/
    int sign(int x)
    {
    	return ((x < 0) ? -1 : ((x > 0) ? 1 : 0) );
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    D'accord avec Médinoc. Le problème c'est que le sujet n'a pas été bien formulé dès le départ ...

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    non pas vraiment...

    signe = 0 n'aide pas beaucoup dans les algos...

    (en particulier en float ou double)...

    1 ou -1 est en general tres largement utilise...

  14. #14
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par sfeltan Voir le message
    Bon alors au final j'ai utilise #define sign(a) ((a)/fabs((a))) que j'ai trouve sur le forum.
    a = 0 ?
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. Fonction Replace pour quote
    Par piero53 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 17/11/2009, 01h19

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