Nasıl iki dizileri bağlarım?

oy
1

Bir temel programlama sınıfta olduğum ve her şey sözde kodunda yapılır.

İki diziler bağlarım Nasıl: Benim sorum şudur?

Ben öğrencilerin isimleri listeleyen tek boyutlu bir dizi var ve her öğrencinin üst sekiz puanları listeleyen bir iki boyutlu bir dizi ... Bu tüm iyi, güzel, ama şimdi öğrenciler tarafından diziler sıralamak gerekir ad. Ben sadece kısaca iki dizi birbirine bağlayan bahseder ama hiçbir örnekleri gösterir, iki kez kitap bölüm üzerinden online kurcaladım ve okuma ediyorum.

herhangi bir yardım varsa, biz kabarcık tasnif kullanıyor ve bu ı isimlerini sıralamak ... oldukça tanıdık buyum, işin kolay kısmı, ama onlar değil bu yüzden notları sıralamak bilmiyorum düzenin dışarı çıkmak.

Giriş için teşekkür ederiz!

Sidenote: Ben çözdüm! Greg Hewgill bahsettiği nasıl yapıyor sona erdi. Onun önerisi benim yorumunda belirttiği gibi, ben bu fikir bana çarptı kadar rastgele satır kod atarak başladı ... oldukça (bir modül isimleri, başka zaman bile notları takas ve üçüncü için takas gözükmüyor ) çok boyutlu bir dizide daha önce tek tek öğrencilerin notlarını takas, ama aslında hiçbir derleyici var ne de gerçek kod eğer içine sözde kodunu yapmak için yeterli bilgiye sahip olarak ... bir dilde test etmek hiçbir şekilde çalışır gibiydi için bir tane indirmek için vardı, ama ben onu dışarı yazdığınız kağıda gerçekten iyi geliyor!

Ayrıca notta belirtildiği gibi, onların hızlı ve yararlı anlayış herkese teşekkür etme, aslında ben bile bir cevap bu gece sanmıyordum, tüm yardımlarınız için tekrar size herkese teşekkür!

Jeffrey

Oluştur 02/12/2008 saat 09:03
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
0

Kişisel öncül yanlıştır. İlk etapta iki dizi olmamalıdır.

Sen bir dizi olmalıdır nesneler öğrencinin adını ve onun puanları tutan her biri,:

public class Record
{
    public string Student;
    public int[] Scores;
} 
Cevap 02/12/2008 saat 09:08
kaynak kullanıcı

oy
1

Ne yapmak isteyebilirsiniz şudur: İsimleri sıralama konum ve iki konum takas zorunda olduğu gibi, do aynı puanların dizide takas. Bu şekilde, isimleri diziye yaptığınız tüm değişiklikler puanları dizide yansıtılacaktır. İşiniz bittiğinde isimler olarak, puanlar aynı sıralanmış sırayla olacak.

diğer yorumlar gösterecektir gibi farklı veri yapıları ile bunu yapmanın daha etkili yollar vardır.

Cevap 02/12/2008 saat 09:12
kaynak kullanıcı

oy
0

Iki yaklaşım: isimleri sıralarken ilk olarak, iki adınızın alışverişinde her zaman aynı pozisyonda puanlarının (onları aramak istediğini veya sütunları ya) satırları alışverişi. Sonunda, puanlar hala isimlerle eşleşmeleri olmalıdır.

İkinci olarak, yerine adları sıralama, adı karşılaştırılması, kriteri sonra n-1 arasında diğer iki dizilerin biri içine dizinler içerir, üçüncü bir dizi, ilk olarak 0 oluşturmak, ancak [a] ve adı [b], yerine sıralama adları dizinin kendisi.

Cevap 02/12/2008 saat 09:18
kaynak kullanıcı

oy
2

Bu gibi basit Öğrenci sınıfı tanımlayın:

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
}

Sonra da basit

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

işi sizin için yapacaktır.

Cevap 02/12/2008 saat 09:40
kaynak kullanıcı

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