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

MATLAB Discussion :

Classer les pairs avant les impairs [Débutant]


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 31
    Points : 17
    Points
    17
    Par défaut Classer les pairs avant les impairs
    bonsoir ;
    pouvez vous m'aider a crée un programme sous matlab
    qui prend en argument un tableau d'entiers de taille n et qui le
    modi e de telle sorte que tous les entiers pairs se retrouvent avant les entiers impairs.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Par quoi es-tu bloqué ?
    Montre-nous ce que tu as déjà commencé à programmer...

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 31
    Points : 17
    Points
    17
    Par défaut voila
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function t=pairim(t)
    p=1;
    imp=1;
    for i=1:length(t)
        if mod(i,2)==0
            t(i)=t(i-1);
            p=p+1;
        else
            t(i)=t(i+1);
            imp=imp-1;
        end
     
    end

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ta ligne if mod(i,2)==0 est fausse, je t'invite à regarder ce message.

    Dans tes lignes t(i)=t(i-1); et t(i)=t(i+1);, il te faudrait plutôt penser à faire un échange
    >> Cette discussion devrait t'aider
    Dernière modification par Invité ; 21/01/2012 à 23h22. Motif: Rectification

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    ca y est j'ai trouve
    voila est ce que c correct :
    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
    function T = PairsFirst(tab)
    T=zeros;
    size = length(tab);
    x=0;
    for i=1:size
        if(mod(tab(i),2) == 0)
            x=x+1;
            T(x) = tab(i);
        end
    end
    for i=1:size
        if(mod(tab(i),2) ~= 0)
            x=x+1;
            T(x) = tab(i);
        end
    end

  6. #6
    Invité
    Invité(e)
    Par défaut
    Oui ce code fonctionne correctement.
    Deux remarques cependant:
    1. Pense à appliquer ceci en ce qui concerne SIZE. Dans ce cas, il n'y aura pas de problème, mais tu pourras rencontrer une erreur incompréhensible une prochaine fois.
    2. Pense à pré-allouer ta mémoire

    Voici une autre solution plus avancée utilisant l'indexage logique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function tab = PairsFirst(tab)
     
    idxPair = ~rem(tab(:),2);
    Pairs = tab(idxPair);
    Impairs = tab(~idxPair);
    tab(:) = [Pairs(:) ; Impairs(:)];
    Dernière modification par Invité ; 22/01/2012 à 00h06.

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 318
    Points : 52 958
    Points
    52 958
    Par défaut
    La meilleure solution pour tester la parité d'un entier consiste à utiliser BITGET pour récupérer la valeur du bit de poids faible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >> x = 0:10
     
    x =
     
         0     1     2     3     4     5     6     7     8     9    10
     
    >> bitget(x,1)
     
    ans =
     
         0     1     0     1     0     1     0     1     0     1     0

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/11/2012, 14h39
  2. Les polices dans les tables et les requêts
    Par zooffy dans le forum Access
    Réponses: 3
    Dernier message: 21/06/2006, 12h06
  3. Afficher le texte avant les images et les pubs
    Par topolino dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/04/2006, 09h33

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