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 :

Faire commencer un tableau a l'indice 1


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Faire commencer un tableau a l'indice 1
    Bien le bonjour.
    Je souhaiterai savoir si en C#, il est possible pour un tableau de le faire commencer a l'indice 1, et si oui, de quelle maniere.
    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Un tableau commencera toujours à partir de l'indice 0, maintenant libre à toi de l'utiliser à partir de l'indice 1, bien que je n'en vois aps l'interet.

  3. #3
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Essaie de nous préciser le but de faire commencer un tableau à 1, peut être que tu emploie une solution non idéale à ton problème, ce qui fait que tu sois devant cet obstacle.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    C'est en rapport avec un exercice sur des lignes de bus. Il me serait difficile d'avoir une ligne 0, vu que l'indice de mon tableau correspont a mon numero de ligne.
    Mais en effet, je n'avais pas pensé a occulter la premiere case du tableau tout betement.
    Merci.

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Ton indice pourrait être ta ligne -1. Ainsi tu stoque la ligne 1 dans la case 0, la 2 dans 1, la 3 dans 2, ...
    Ce n'est qu'une repésentation des choses, ce serait bête de perdre une case pour cela

  6. #6
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Tu melange représentation métier et implémentation => tu cours droit dans le mur

    Sérieusement, tu peux t'en sortir comme ca, bien sur. Mais il vaudrait mieux avoir une classe LigneDeBus qui contient le numéro de ligne. Ensuite tu fais une List<LigneDeBus> et pour accéder à une ligne particulière tu fait un delegate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    List<LigneDeBus> malist;
    //remplissage
    LigneDeBus L1 = malist.Find(delegate(LigneDeBus item){return item.Num==1});

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Le pauvre déjà qu'il ne maitrise pas les représentation sous forme de tableau

  8. #8
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Justement, les List sont peut être plus intuitives pour lui.

    Bon, ok, le delegate c'est ptet un peu hâtif... Mais les list<> ca devrait pas trop poser de problème, et ca gère en plus le problème de 'sizing' des tableaux.

  9. #9
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Tout à fait d'accord.
    Et en effet je pense que le délégate arrive un peu trop tot.
    Peut être ne connait il même pas la notion de pointeur

  10. #10
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Ah les pointeurs... Penses tu qu'il aies besoin de savoir ce que c'est pour manipuler une liste ? Sincèrement je pense que non... Vu l'API, il est aisé selon moi d'aborder le sujet sans notions complexes telles que les pointeurs (bien que cela aide évidememnt).. M'enfin on s'écarte du sujet

  11. #11
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Ha non je parlais des pointeurs pour comprendre les delegates, perso je pense que sans notion de pointeur, leurs fonctionnement soient compréhensible.

    T'inquiète je ne pensais pas revenir ou liste chainées, au structure c qui possède un pointeur suivant et un précedent pour les implémentés, pour expliquer ce qu'est une liste.
    Je pense que faire référence à une liste de course c'est plus simple

  12. #12
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Etrangement, dans le cas d'un Find sur une liste, ou d'un ForEach , je ne pense pas les delegate comme des pointeurs de fonction... Bien que cela en soit !
    Quand j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    malist.Find(delegate(LigneDeBus item){return item.Num==1});
    Je pense utiliser une syntaxe pour (et je pense de cette manière) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    malist.Find( where item.Num==1);
    Et pas du tout pointeur.

    Je dois etre en avance sur le 3.5... :-D

    Sinon la liste de courses c'est pas mal comme image pour une List<>

  13. #13
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Pour resumer:

    Soit tu utilises un tableau normal sans te soucier de la case 0 (Fais attention lorsque tu parcours ton tableau).


    Soit tu utilises un tableau normal en decalant les indices a inserer (Lorsque tu veux inserer 2, tu inseres 2-1 donc 1 et lorsque tu recuperes une valeur tu sais que c'est indice en cours + 1).

    Soit tu utilises une List<> sans te soucier de la taille ou des indices comme dans un tableau.


    Conseil: C'est toujours interressant de savoir se servir de List ou Hashtable ou ArrayList et c'est pas tres complique a utiliser.
    Moi dans ton cas j'aurai utilise une Hashtable(Cle, Valeur) car si tes lignes de bus portent un numero et un nom tu peux les remplir comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Hashtable MesLignesDeBus = new Hashtable();
    MesLigneDeBus.Add(1, "Premiere ligne");
    MesLigneDeBus.Add(2, "Deuxieme ligne");
    .
    .
    .
    Attention a ne pas entrer 2 fois la meme cle. Et lorsque tu veux savoir le nom de ta seconde ligne de bus par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string NomDeMaLigne = MesLignesDeBus[2].ToString();
    Tu peux bien sur parcourir ta Hashtable, changer les valeurs, supprimer les valeurs et surtout tu peux commencer ton indice a 1.

  14. #14
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    En effet la HashTable est une alternative plaisante. D'autant plus qu'on peut type la clef et la valeur et y mettre toute classe interressante, genre LigneDeBusIdentifiant => LigneDeBus

    Attention en ce cas à définir la comparaison (et la manière de hasher ?).

Discussions similaires

  1. Faire scroller un tableau
    Par JCD_31 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 21/06/2006, 09h23
  2. Faire un joli tableau HTML d'un XML via XSL
    Par FreddyP dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/03/2006, 12h43
  3. Réponses: 13
    Dernier message: 16/01/2006, 09h45
  4. Commencer un tableau
    Par Anduriel dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/01/2006, 19h17
  5. faire d'un tableau un lien
    Par jack1234 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/10/2005, 02h01

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