Come si fa a collegare due array?

voti
1

Sono in una classe di programmazione di base, e tutto ciò che è fatto in pseudo-codice.

La mia domanda è questa: come si fa a collegare due array?

Ho una matrice unidimensionale che elenca i nomi degli studenti, e ho una matrice bidimensionale che elenca i primi otto punteggi di ogni studente ... questo è tutto bene e dandy, ma ora ho bisogno di ordinare gli array da parte degli studenti nome. Sto curiosato on-line e leggere attraverso il capitolo libri per due volte, si parla solo brevemente che collega due array, ma non mostra esempi.

Se si tratta di alcun aiuto, stiamo usando bolla-ordinamento, e questo è quello che sono abbastanza familiarità con ... posso ordinare i nomi, che è la parte facile, ma non so come ordinare i gradi in modo che non lo fanno andare fuori uso.

Grazie per l'input!

Sidenote: ho preso capito! Ho finito per fare come Greg Hewgill aveva menzionato. Come ho messo nel mio commento al suo suggerimento, ho iniziato casualmente gettando in righe di codice fino a quel idea mi ha colpito ... non sembra abbastanza (un modulo scambiato i nomi, un altro per scambiare i voti, e un terzo anche allora per scambiare i singoli studenti gradi in precedenza in un array multidimensionale), ma sembrava davvero a lavorare ... non c'è modo di provarlo in una lingua, come non ho compilatore né ho conoscenze sufficienti per rendere il codice pseudo in codice vero e proprio, se dovessi scaricare uno, ma suona davvero bene sulla carta ho digitato fuori su!

Come ho anche detto nella nota, io ringrazio tutti per la loro visione veloce e disponibile, io in realtà non ha nemmeno pensato che avrei avuto una risposta questa sera, grazie a tutti ancora per tutto il vostro aiuto!

Jeffrey

È pubblicato 02/12/2008 alle 09:03
fonte dall'utente
In altre lingue...                            


4 risposte

voti
0

Il tuo premessa è sbagliata. Non si dovrebbe avere due array in primo luogo.

Si dovrebbe avere un array di oggetti , ognuno dei quali contiene il nome di uno studente e le sue partiture:

public class Record
{
    public string Student;
    public int[] Scores;
} 
Risposto il 02/12/2008 a 09:08
fonte dall'utente

voti
1

Che cosa si può desiderare di fare è il seguente: Come si sta ordinando i nomi e si deve scambiare due posizioni, fare lo stesso di swap nella matrice dei punteggi. In questo modo, tutte le modifiche apportate alla matrice nomi si rifletterà nella matrice punteggi. Quando hai finito, i punteggi saranno nello stesso modo ordinato come i nomi sono.

Ci sono modi più efficaci per fare questo con diverse strutture di dati, come altri commenti mostrerà.

Risposto il 02/12/2008 a 09:12
fonte dall'utente

voti
0

Due approcci: in primo luogo, durante l'ordinamento i nomi, ogni volta che si scambiano due nomi, cambio le righe (o colonne o quello che volete chiamarli) di punteggi nelle stesse posizioni. Alla fine, i punteggi dovrebbero ancora essere in sincronia con i nomi.

Secondo, invece di smistamento nomi, creare un terzo array che conterrà gli indici in una delle altre due matrici, inizialmente 0 a n-1, ma poi filtrate, confrontando nome [a] e nome [b], invece di smistamento I nomi matrice stessa.

Risposto il 02/12/2008 a 09:18
fonte dall'utente

voti
2

Definire una semplice classe Studente in questo modo:

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
}

poi ancora più semplice

    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);

farà il lavoro per voi.

Risposto il 02/12/2008 a 09:40
fonte dall'utente

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