Cum se leagă două matrice?

voturi
1

Sunt într-o clasă de bază de programare, și totul se face în cod pseudo.

Întrebarea mea este: Cum se leagă două matrice?

Am o matrice unidimensionale care listează numele de studenți, și am o matrice bidimensională care listează primele opt scoruri ale fiecărui student ... asta e bine și frumos, dar acum am nevoie pentru a sorta tablouri de către elevi Nume. Sunt înțepat în jurul valorii de on-line și citiți capitolul cărți de două ori, se menționează doar pentru scurt timp legătura între două matrice, dar nu prezintă exemple.

Dacă e vreun ajutor, folosim bubble-sortare, și că este ceea ce eu sunt destul de familiarizat cu ... Eu pot sorta numele, care este partea cea mai ușoară, dar eu nu știu cum să sorteze notele astfel încât acestea să nu du-te în ordine.

Multumesc pentru intrare!

Notatie a partii: M-am dat seama! Am ajuns să fac cum a menționat Greg Hewgill. Așa cum am pus în comentariul meu la sugestia lui, am început să arunce la întâmplare în linii de cod până la acea idee mi-a lovit ... nu arata destul de (un modul schimbat numele, o alta pentru a schimba notele, și o treime chiar și atunci pentru a schimba individuale notele elevilor mai devreme într-o matrice multidimensionale), dar într-adevăr, părea să funcționeze ... nici o modalitate de a testa într-o limbă așa cum am nici un compilator și nici nu am suficiente cunoștințe pentru a face codul pseudo în codul real, dacă am fost să descărcați unul, dar sună foarte bine pe hârtie l-am scris pe!

Așa cum am menționat, de asemenea, în nota, eu mulțumesc tuturor pentru înțelegere rapidă a acestora și de ajutor, eu de fapt, nici nu cred că aș primi un răspuns în seara asta, vă mulțumesc tuturor din nou pentru ajutorul acordat!

Jeffrey

Întrebat 02/12/2008 la 09:03
sursa de către utilizator
În alte limbi...                            


4 răspunsuri

voturi
0

Premisa este greșit. Nu ar trebui să aibă două matrice, în primul rând.

Ar trebui să aibă o serie de obiecte , fiecare dintre care deține numele unui student și scorurile sale:

public class Record
{
    public string Student;
    public int[] Scores;
} 
Publicat 02/12/2008 la 09:08
sursa de către utilizator

voturi
1

Ce poate doriți să faceți este următoarea: Pe măsură ce sortarea numele și trebuie să schimb două poziții, face același tip swap în matrice de scoruri. În acest fel, toate modificările pe care le faceți matrice nume vor fi reflectate în matrice scoruri. Când ați terminat, scorurile vor fi în aceeași ordine ca și sortat numele sunt.

Există modalități mai eficiente de a face acest lucru cu diferite structuri de date, ca și alte comentarii vor arăta.

Publicat 02/12/2008 la 09:12
sursa de către utilizator

voturi
0

Două abordări: în primul rând, atunci când sortarea numelor, de fiecare dată când schimb două nume, schimb rândurile (sau coloane sau orice doriți să le numim) de scoruri în aceleași poziții. La final, scorurile ar trebui să fie în continuare în sincronizare cu numele.

În al doilea rând, în loc sortarea numelor, a crea oa treia matrice care va conține indicii în oricare dintre celelalte două matrici, inițial 0 prin n-1, dar apoi sortate, comparând nume [a] și numele [b], în loc de sortare numelor matrice în sine.

Publicat 02/12/2008 la 09:18
sursa de către utilizator

voturi
2

Definirea unei clase Student simplu ca aceasta:

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
}

apoi mai simplu

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

va face de lucru pentru tine.

Publicat 02/12/2008 la 09:40
sursa de către utilizator

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