Comment avez-vous un lien de deux tableaux?

voix
1

Je suis dans une classe de programmation de base, et tout est fait dans le code pseudo.

Ma question est la suivante: Comment avez-vous un lien de deux tableaux?

J'ai un tableau unidimensionnelle qui répertorie les noms des étudiants, et j'ai un tableau à deux dimensions qui répertorie les huit meilleurs scores de chaque élève ... tout cela est bien beau, mais maintenant je dois trier les tableaux par les étudiants prénom. Je suis en ligne poussé autour et lu le chapitre des livres, il ne mentionne que brièvement deux fois reliant deux tableaux, mais montre aucun exemple.

Si c'est une aide, nous utilisons le tri des bulles, et c'est ce que je suis assez familier avec ... Je peux trier les noms, qui est la partie facile, mais je ne sais pas comment trier les notes de sorte qu'ils ne le font pas sortir de l'ordre.

Merci pour les commentaires!

Sidenote: Je l'ai figuré dehors! J'ai fini par faire comment avait mentionné Greg Hewgill. Comme je l'ai mis dans mon commentaire à sa suggestion, j'ai commencé à jeter au hasard dans les lignes de code jusqu'à ce que cette idée m'a frappé ... il ne semble pas assez (un module permuté les noms, une autre pour échanger les notes, et un troisième, même alors, d'échanger les étudiants individuels grades plus tôt dans un tableau multidimensionnel), mais il semblait en effet travailler ... aucun moyen de le tester dans une langue que je n'ai pas compilateur et je n'ai assez de connaissances pour rendre le code pseudo dans le code réel si Je devais télécharger un, mais il sonne vraiment bien sur le papier que je dactylographié sur!

Comme je l'ai également mentionné dans la note, je remercie tout le monde pour leur vision rapide et utile, en fait je ne pensais même pas que je reçois ce soir réponse, je vous remercie tous encore pour votre aide!

Jeffrey

Créé 02/12/2008 à 09:03
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
0

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

Vous devriez avoir un réseau d' objets , dont chacun détient le nom et ses notes d'un étudiant:

public class Record
{
    public string Student;
    public int[] Scores;
} 
Créé 02/12/2008 à 09:08
source utilisateur

voix
1

Ce que vous pouvez faire est le suivant: Comme vous le tri des noms et vous devez échanger deux positions, faire le même échange dans le tableau des scores. De cette façon, toutes les modifications apportées au tableau des noms sera reflété dans le tableau des scores. Lorsque vous avez terminé, les scores seront dans le même ordre que les noms triés sont.

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

Créé 02/12/2008 à 09:12
source utilisateur

voix
0

Deux approches: d'abord, lors du tri des noms, chaque fois que vous échanger deux noms, l'échange des lignes ou des colonnes (ou tout ce que vous voulez les appeler) des scores dans les mêmes positions. A la fin, les scores devraient toujours être en phase avec les noms.

En second lieu, au lieu de trier les noms, créez un troisième tableau qui contiendra les indices dans l'une des deux autres tableaux, initialement 0 à n-1, puis trié, nom comparant [a] et le nom [b], au lieu de tri le tableau lui-même les noms.

Créé 02/12/2008 à 09:18
source utilisateur

voix
2

Définir une simple classe d'étudiant 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
}

puis 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.

Créé 02/12/2008 à 09:40
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more