Jak połączyć dwie tablice?

głosy
1

Jestem w klasie podstawowej programowania, a wszystko odbywa się w pseudo kod.

Moje pytanie brzmi: Jak połączyć dwie tablice?

Mam jedno-wymiarowej tablicy z listą nazwisk studentów i muszę dwuwymiarową tablicą, która zawiera listę ośmiu najlepszych ocenę każdego studenta ... to wszystko jest cacy, ale teraz muszę posortować tablice przez studentów Nazwa. Ja szturchnął wokół online i zapoznać się z rozdziałem książki dwa razy, to tylko krótko wspomina łącząc dwie tablice, ale nie wykazuje żadnych przykładów.

Jeśli to każda pomoc, używamy bubble sortowania, i to jestem dość zaznajomieni z ... mogę posortować nazwy, to łatwiejsza część, ale nie wiem jak do sortowania klas, żeby nie robić wychodzić z zamówieniem.

Dzięki za wejście!

Sidenote: Mam to zorientowali się! Skończyło się robi jak Greg Hewgill wspomniał. Jak mogę umieścić w moim komentarzu do jego sugestii, zacząłem losowo rzucając w linii kodu, aż ten pomysł uderzył mnie ... to nie wygląda całkiem (jeden moduł wymienili nazwiska, innym, aby zamienić stopnie, a trzeci nawet wtedy zamienić poszczególne stopnie uczniów wcześniej w wielowymiarowej tablicy), ale to rzeczywiście wydawało się do pracy ... nie sposób przetestować go w języku, jak nie mam kompilatora ani nie mam wystarczającej wiedzy, aby pseudo kod do rzeczywistego kodu, jeśli I było pobrać jedną, ale brzmi to naprawdę dobrze na papierze Wpisałem go on!

Jak również wspomniano w nocie, mam podziękować wszystkim za szybką i pomocny wglądu, tak naprawdę nawet nie myślałem, że mogę dostać dzisiaj odpowiedź, dziękuję wszystkim jeszcze raz za pomoc!

Jeffrey

Utwórz 02/12/2008 o 09:03
źródło użytkownik
W innych językach...                            


4 odpowiedzi

głosy
0

Twoje założenie jest błędne. Nie powinny mieć dwa tablicę w pierwszej kolejności.

Powinieneś mieć jedną tablicę obiektów , z których każdy posiadanych nazwisko ucznia i jego wyniki:

public class Record
{
    public string Student;
    public int[] Scores;
} 
Odpowiedział 02/12/2008 o 09:08
źródło użytkownik

głosy
1

Co możesz zrobić, jest następujący: jak jesteś sortowania nazw i trzeba wymienić dwie pozycje, należy wykonać tę samą zamianę na tablicy wyników. W ten sposób, wszystkie zmiany wprowadzone do tablicy nazwy zostaną odzwierciedlone w tablicy zdobywa. Kiedy skończysz, wyniki będą w tej samej kolejności sortowane jako nazwy są.

Istnieją bardziej skuteczne sposoby na zrobienie tego z różnych struktur danych, jak inne komentarze pokaże.

Odpowiedział 02/12/2008 o 09:12
źródło użytkownik

głosy
0

Dwa podejścia: po pierwsze, przy sortowaniu nazw, za każdym razem wymieniać dwa imiona, zamianę wierszy (lub kolumn lub cokolwiek chcesz je nazwać) z wynikami w tych samych pozycjach. Na koniec, wyniki powinny nadal być zsynchronizowane z nazwiskami.

Po drugie, zamiast sortowania nazwy utworzyć trzeci układ, który zawiera indeksy do jednej z dwóch tablic, początkowo 0 do n-1, a następnie sortowane porównanie nazwy [A], a nazwa [B], natomiast sortowania tablicy sam nazwy.

Odpowiedział 02/12/2008 o 09:18
źródło użytkownik

głosy
2

Zdefiniuj prostą klasę Student takiego:

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
}

potem jeszcze prostsze

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

zrobi to za Ciebie.

Odpowiedział 02/12/2008 o 09:40
źródło użytkownik

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