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 :

Algorithme renumerotation d'une datatable


Sujet :

C#

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Algorithme renumerotation d'une datatable
    Salut

    J'ai un peu la flemme des neuronnes ce soir et je prefere soumettre un algoritme de renumerotation a l'equipe

    J'ai une datatable avec une colonne numero

    Admetons qu'il y a 10 rows numerotées de 1 à 10
    Ces rows ne sont PAS physiquement dans l'ordre

    Via un datagridview l'utilisateur dit que la row 5 devient la row 2
    du coup
    la row 2 devient 3
    la row 3 devient 4
    la row 4 devient 5
    la row 5 devient 2
    Les autres ne bougent pas

    Ou plus généralement la row i devient la row j

    Le fait que la table n'est pas triée complique un peu les choses

    Concours du meilleur algo !

    Merci pour vos suggestions

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonsoir,
    Tu as raison : c'est plus l'heure pour raisonner.
    Enfin, je me lance. Peut-être ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int OldIndex= 5 ;
    int NewIndex=2 ;
    int updatedCurIndex ;
    for (int i=0; i<MyDataTable.rows.Count; i++)
    { 
       int CurIndex=(int)MyDataTable.rows[i]["Numero"] ;
       if (CurIndex==OldIndex) CurIndex=NewIndex ;
       else
       {
          if (CurIndex>=NewIndex) CurIndex++ ;
          if (CurIndex> OldIndex) CurIndex-- ;
       }
       MyDataTable.rows[i]["Numero"]=CurIndex ;
    }

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonsoir et merci Grafitto

    Bon j'analyse mais je pense qu'il y a une faille

    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
    int OldIndex= 5 ;
    int NewIndex=2 ;
    int updatedCurIndex ;
    for (int i=0; i<MyDataTable.rows.Count; i++)
    { 
       int CurIndex=(int)MyDataTable.rows[i]["Numero"] ;
       if (CurIndex==OldIndex) 
       {
         CurIndex=NewIndex ;
       }
       else
       {
          if (CurIndex>=NewIndex) CurIndex++ ;
          if (CurIndex> OldIndex) CurIndex-- ;  // Faux car 6 deviendra 5 etc...
       }
       MyDataTable.rows[i]["Numero"]=CurIndex ;
    }

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    // Faux car 6 deviendra 5 etc...
    Au-delà de 5, CurIndex++ et CurIndex-- s'annulent.

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Au-delà de 5, CurIndex++ et CurIndex-- s'annulent.
    Ah oui !
    J'avais pas fais attention

    Il faut voir si ca marche aussi dans le cas ou NewIndex est > que OldIndex
    J'analyse

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/07/2006, 14h28
  2. [C#] Comment trier une DataTable ?
    Par royto dans le forum C#
    Réponses: 2
    Dernier message: 23/03/2006, 01h15
  3. [VB.NET] DataValueField avec 2 colonnes d'une datatable
    Par franculo_caoulene dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/02/2006, 17h00
  4. [VB.NET] Pb pour la copie d'une datatable...
    Par bisounux dans le forum Windows Forms
    Réponses: 12
    Dernier message: 12/01/2006, 10h20
  5. [C#] Modifier une valeur dans une DataTable
    Par Scorff dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/05/2005, 10h45

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