Question

Je suis dans une classe de programmation de base et tout est fait en pseudo-code.

Ma question est la suivante: comment lier deux tableaux?

J'ai un tableau à une dimension qui répertorie les noms des étudiants, et un tableau à deux dimensions qui répertorie les huit meilleurs scores de chaque élève ... tout va bien, mais je dois maintenant trier les tableaux. par le nom des étudiants. Je fais des recherches en ligne et lis deux fois le chapitre des livres. Il ne mentionne que brièvement le lien entre deux tableaux mais ne montre aucun exemple.

Si cela peut vous aider, nous utilisons le tri à bulles, et c’est ce que je connais assez bien ... Je peux trier les noms, c’est la partie la plus facile, mais je ne sais pas comment trier les notes ils ne vont pas en panne.

Merci pour votre contribution!

Sidenote: Je l'ai compris! J'ai fini par faire ce que Greg Hewgill avait mentionné. En répondant à sa suggestion, j'ai commencé à ajouter au hasard des lignes de code jusqu'à ce que cette idée me frappe ... ça n'a pas l'air joli (un module a échangé les noms, un autre pour échanger les notes, et un troisième quand même) pour échanger les notes individuelles des élèves plus tôt dans un tableau multidimensionnel), mais cela semblait effectivement fonctionner ... aucun moyen de le tester dans une langue, car je n’ai ni compilateur ni assez de connaissances pour transformer le pseudo-code en code réel si Je devais en télécharger un, mais ça sonne vraiment bien sur le papier sur lequel je l'ai tapé!

Comme je l'ai également mentionné dans la note, je remercie tout le monde pour ses idées rapides et utiles. En fait, je ne pensais même pas que j'aurais une réponse ce soir, merci encore à tous pour votre aide!

Jeffrey

Était-ce utile?

La solution

Ce que vous voudrez peut-être faire est le suivant: pendant que vous triez les noms et que vous devez échanger deux positions, effectuez l’échange identique dans le tableau des partitions. Ainsi, toutes les modifications que vous apportez au tableau de noms seront reflétées dans le tableau de scores. Lorsque vous avez terminé, les scores seront dans le même ordre de tri que les noms.

Il existe des moyens plus efficaces de le faire avec différentes structures de données, comme le montrent d'autres commentaires.

Autres conseils

Définissez une classe d'étudiants simple comme ceci:

public class Student : IComparable<Student>
{
    public string Name { get; set; }
    public int[] Scores { get; set; }

    #region IComparable<Student> Members

    public int CompareTo(Student other)
    {
        // Assume Name cannot be null
        return this.Name.CompareTo(other.Name);
    }

    #endregion
}

alors encore plus simple

    var students = new[] {
        new Student(){ Name = "B", Scores = new [] { 1,2,3 } },
        new Student(){ Name = "C", Scores = new [] { 3,4,5 } },
        new Student(){ Name = "A", Scores = new [] { 5,6,7 } }
    };

    Array.Sort(students);

fera le travail pour vous.

Votre prémisse est fausse. Vous ne devriez pas avoir deux tableaux en premier lieu.

Vous devez disposer d'un tableau d'objets , chacun contenant le nom d'un élève et ses scores:

public class Record
{
    public string Student;
    public int[] Scores;
} 

Deux approches: tout d’abord, lors du tri des noms, chaque fois que vous échangez deux noms, échangez les lignes (ou les colonnes ou tout ce que vous voulez appeler) de partitions occupant les mêmes positions. À la fin, les partitions doivent toujours être synchronisées avec les noms.

Deuxièmement, au lieu de trier les noms, créez un troisième tableau qui contiendra les index dans l’un des deux autres tableaux, initialement compris entre 0 et n-1, puis trié, en comparant nom [a] et nom [b], au lieu de trier le tableau de noms lui-même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top