Hvordan kobler du to matriser?

stemmer
1

Jeg er i en grunnleggende programmering klasse, og alt er gjort i pseudo-kode.

Mitt spørsmål er dette: Hvordan koble to arrays?

Jeg har en single-dimensjonal array som viser elevenes navn, og jeg har en todimensjonal matrise som viser de åtte score til hver elev ... dette er alt fint og dandy, men nå trenger jeg å sortere arrays av studentene Navn. Jeg poked rundt på nettet og lese gjennom kapittelet bøkene to ganger, det bare kort nevner knytte to matriser, men viser ingen eksempler.

Hvis det er noen hjelp, vi bruker boble-sortering, og det er det jeg er ganske kjent med ... Jeg kan sortere navnene, det er den enkle delen, men jeg vet ikke hvordan å sortere karakterer slik at de ikke går ut av drift.

Takk for innspill!

Sidenote: Jeg fikk det regnet ut! Jeg endte opp med å gjøre hvordan Greg Hewgill hadde nevnt. Som jeg satt i min kommentar til hans forslag, begynte jeg tilfeldig kaster i linjer med kode før den tanken slo meg ... det ser ikke pen (en modul byttet navn, en annen å bytte karakterer, og en tredje selv da å bytte de enkelte elevenes karakterer tidligere i en flerdimensjonal array), men det faktisk ut til å fungere ... ingen måte å teste det på et språk som jeg har ingen kompilator jeg har heller ikke nok kunnskap til å gjøre det pseudo-kode i selve koden hvis jeg skulle laste ned en, men det høres veldig bra ut på papiret jeg skrev det ut på!

Som jeg også nevnt i notatet, jeg takker alle for deres raske og nyttig innsikt, jeg faktisk ikke engang tror jeg ville få et svar i kveld, takk alle igjen for all hjelp!

Jeffrey

Publisert på 02/12/2008 klokken 08:03
kilden bruker
På andre språk...                            


4 svar

stemmer
0

Premisset er galt. Du bør ikke ha to utvalg i første omgang.

Du bør ha en rekke gjenstander , som hver holder en elevs navn og hans score:

public class Record
{
    public string Student;
    public int[] Scores;
} 
Svarte 02/12/2008 kl. 08:08
kilden bruker

stemmer
1

Hva kan det være lurt å gjøre er følgende: Som du sortere navnene og du må bytte to stillinger, gjør samme swap i rekken av poengsummer. På den måten vil alle endringer du gjør i navnene rekke gjenspeiles i score tabellen. Når du er ferdig, vil resultatet være i samme sortert rekkefølge som navnene er.

Det finnes mer effektive måter å gjøre dette med forskjellige datastrukturer, som andre kommentarer vil vise.

Svarte 02/12/2008 kl. 08:12
kilden bruker

stemmer
0

To tilnærminger: For det første, når sortering navn, hver gang du utveksle to navn, bytte rader (eller kolonner eller hva du vil kalle dem) i score i de samme posisjonene. På slutten, bør resultatet fortsatt være synkronisert med navnene.

For det andre, i stedet for sortering navnene, opprette en tredje matrise som skal inneholde indeksene inn i begge de to andre rekkene, innledningsvis 0 til n-1, men deretter sortert, sammenligner navn [a] og navn [b], i stedet for sortering navnene matrise seg selv.

Svarte 02/12/2008 kl. 08:18
kilden bruker

stemmer
2

Definer en enkel Student klasse som dette:

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
}

deretter enda enklere

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

vil gjøre jobben for deg.

Svarte 02/12/2008 kl. 08:40
kilden bruker

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