Πώς μπορείτε να συνδέσετε δύο σειρές;

ψήφοι
1

Είμαι σε μια βασική κλάση προγραμματισμού, και ό, τι γίνεται σε ψευδοκώδικα.

Το ερώτημά μου είναι το εξής: Πώς μπορείτε να συνδέσετε δύο σειρές;

Έχω ένα ενιαίο μονοδιάστατο πίνακα που παραθέτει τα ονόματα φοιτητές, και έχω ένα δισδιάστατο πίνακα που παραθέτει τις οκτώ κορυφαίες βαθμολογίες του κάθε μαθητή ... όλα αυτά είναι καλά και ωραία, αλλά τώρα πρέπει να ταξινομήσετε τις συστοιχίες από τους φοιτητές όνομα. Είμαι έσπρωξε γύρω online και να διαβάσετε το κεφάλαιο βιβλία δύο φορές, αναφέρει μόνο εν συντομία συνδέει δύο συστοιχίες, αλλά δεν δείχνει παραδείγματα.

Αν είναι κάθε βοήθεια, χρησιμοποιούμε φούσκα-διαλογής, και αυτό είναι που είμαι αρκετά εξοικειωμένος με ... Μπορώ να ταξινομήσετε τα ονόματα, αυτό είναι το εύκολο μέρος, αλλά δεν ξέρω πώς να ταξινομήσετε τους βαθμούς, ώστε να μην πάει εκτός λειτουργίας.

Ευχαριστώ για την είσοδο!

Υποσημείωση: Πήρα το κατάλαβα! Κατέληξα να κάνει πως είχε αναφέρει Greg Hewgill. Όπως έβαλα στο σχόλιό μου για την πρότασή του, άρχισα τυχαία ρίψη σε γραμμές κώδικα, μέχρι που η ιδέα με χτύπησε ... δεν φαίνονται αρκετά (μία μονάδα αντάλλαξαν τα ονόματα, άλλο να ανταλλάξουν τους βαθμούς, και το ένα τρίτο ακόμα και τότε να ανταλλάξουν τις ατομικές τους μαθητές των τάξεων νωρίτερα σε ένα πολυδιάστατο πίνακα), αλλά πράγματι φάνηκε να λειτουργεί ... δεν υπάρχει τρόπος να το δοκιμάσετε σε μια γλώσσα όπως δεν έχω compiler, ούτε έχω αρκετές γνώσεις για να κάνουν τον κωδικό ψευδο σε πραγματικό κώδικα και αν θα ήταν για να κατεβάσετε ένα, αλλά ακούγεται πολύ καλό για το χαρτί που θα πληκτρολογήσει έξω!

Όπως ανέφερα και στο σημείωμα, εγώ ευχαριστώ όλους για την ταχεία και χρήσιμες γνώσεις τους, εγώ πραγματικά δεν σκέφτονται ακόμη και θα έπαιρνα ένα απόψε απάντηση, σας ευχαριστώ και πάλι όλους για τη βοήθειά σας!

Jeffrey

Δημοσιεύθηκε 02/12/2008 στις 09:03
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
0

παραδοχή σας είναι λανθασμένη. Δεν θα πρέπει να έχουν δύο σειρά στην πρώτη θέση.

Θα πρέπει να έχετε μια σειρά από αντικείμενα , καθένα από τα οποία κατέχει το όνομα του μαθητή και τα αποτελέσματα του:

public class Record
{
    public string Student;
    public int[] Scores;
} 
Απαντήθηκε 02/12/2008 στις 09:08
πηγή χρήστη

ψήφοι
1

Τι μπορεί να θέλετε να κάνετε είναι το εξής: Όπως είστε διαλογή τα ονόματα και θα πρέπει να ανταλλάξουν δύο θέσεις, κάνουν το ίδιο ανταλλαγής στον πίνακα του σκορ. Με αυτόν τον τρόπο, όλες οι αλλαγές που κάνετε στη συστοιχία ονόματα θα εμφανιστούν στον πίνακα βαθμολογιών. Όταν τελειώσετε, τα αποτελέσματα θα είναι στην ίδια ταξινομημένη σειρά και τα ονόματα είναι.

Υπάρχουν πιο αποτελεσματικοί τρόποι για να γίνει αυτό με διαφορετικές δομές δεδομένων, όπως άλλα σχόλια θα δείξει.

Απαντήθηκε 02/12/2008 στις 09:12
πηγή χρήστη

ψήφοι
0

Δύο προσεγγίσεις: πρώτον, κατά την ταξινόμηση των ονομάτων, κάθε φορά που ανταλλάσσουν δύο ονόματα, ανταλλάσσουν τις γραμμές (ή στήλες ή όπως αλλιώς θέλετε να τους αποκαλούν) των βαθμολογιών στις ίδιες θέσεις. Στο τέλος, τα αποτελέσματα θα πρέπει να εξακολουθεί να είναι σε συγχρονισμό με τα ονόματα.

Δεύτερον, αντί του διαλογής τα ονόματα, δημιουργούν μια τρίτη συστοιχία που θα περιέχει τα ευρετήρια σε οποιαδήποτε από τις άλλες δύο συστοιχίες, αρχικά 0 έως Ν-1, αλλά στη συνέχεια ταξινομούνται, συγκρίνοντας όνομα [α] και το όνομα [b], αντί της διαλογής η ίδια η ονόματα συστοιχία.

Απαντήθηκε 02/12/2008 στις 09:18
πηγή χρήστη

ψήφοι
2

Ορίστε μια απλή κλάση Student όπως αυτό:

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
}

Στη συνέχεια ακόμα πιο απλή

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

θα κάνει τη δουλειά για σας.

Απαντήθηκε 02/12/2008 στις 09:40
πηγή χρήστη

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