Как связать два массива?

Я изучаю базовый класс программирования, и все делается в псевдокоде.

У меня такой вопрос: как связать два массива?

У меня есть одномерный массив, в котором перечислены имена студентов, и у меня есть двумерный массив, в котором перечислены восемь лучших оценок каждого студента ... это все прекрасно, но теперь мне нужно отсортировать массивы по студентам имя. Я ковырялся в Интернете и дважды прочитал главу книги, в ней лишь кратко упоминается связь двух массивов, но нет примеров.

Если это поможет, мы используем пузырьковую сортировку, и это то, с чем я довольно хорошо знаком ... Я могу отсортировать имена, это простая часть, но я не знаю, как отсортировать оценки, чтобы они не выйти из строя.

Спасибо за вклад!

Примечание: я понял! В итоге я поступил так, как упомянул Грег Хьюгилл. Когда я добавил свой комментарий к его предложению, я начал случайным образом вставлять строки кода, пока эта идея не поразила меня ... это выглядит не очень красиво (один модуль менял имена, другой - оценки, а третий даже тогда чтобы поменять местами отдельные оценки учащихся ранее в многомерном массиве), но это действительно сработало ... нет возможности проверить это на языке, поскольку у меня нет компилятора и недостаточно знаний, чтобы превратить псевдокод в реальный код, если Я должен был загрузить один, но он действительно хорошо звучит на бумаге, на которой я ее печатал!

Как я также упоминал в заметке, я действительно благодарю всех за их быстрое и полезное понимание, я даже не думал, что получу ответ сегодня вечером, еще раз спасибо всем за вашу помощь!

Джеффри

Джефф: Добро пожаловать в stackoverflow! Проголосуйте за полезные ответы и примите (с галочкой) один из ответов. :)

Greg Hewgill 02.12.2008 11:50

На самом деле вам не нужен компилятор. Выбирайте язык, у которого есть интерпретатор, такой как Python, Ruby, SML, ...

boutta 02.12.2008 12:12

Псевдокод? Нет компилятора? Дейкстра обрадуется ...

Artelius 07.11.2009 01:38
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
3
4 801
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ваше предположение неверно. Во-первых, у вас не должно быть двух массивов.

У вас должен быть один массив объекты, каждый из которых содержит имя студента и его оценки:

public class Record
{
    public string Student;
    public int[] Scores;
} 

Скажите это учителю (если бы только вы могли), а не несчастному ученику.

ysth 02.12.2008 11:11

Как я уже сказал, это очень базовый класс, я не изучал язык программирования со школы (почти шесть лет назад), а в то время, когда это был С ++, учитель, кажется, преподает самые основные основы, и это здорово. ... но я всегда ужасно умел заставлять две вещи работать вместе, многозадачность - отстой

Soully 02.12.2008 11:44

Вы не знаете, находится ли класс программирования уже на уровне класса. Кроме того, вы не знаете языка, возможно, нет классов, скажем, на функциональном языке.

boutta 02.12.2008 12:14
Ответ принят как подходящий

Возможно, вы захотите сделать следующее: когда вы сортируете имена и вам нужно поменять местами две позиции, сделайте обмен такой же в массиве оценок. Таким образом, все изменения, внесенные в массив имен, будут отражены в массиве оценок. Когда вы закончите, оценки будут отсортированы в том же порядке, что и имена.

Есть более эффективные способы сделать это с разными структурами данных, как покажут другие комментарии.

Я начал делать то, что делаю всегда, то есть писать случайные строки кода, пока не найду, что работает, и на самом деле я сделал это таким образом, спасибо всем за ваши немедленные советы и вклад! Я знаю, куда теперь буду обращаться за помощью. ^ - ^

Soully 02.12.2008 11:41

Не зарегистрирован, поэтому не могу проголосовать, если мне повезет, я смогу выспаться 6 часов, если пойду спать сейчас, прежде чем я буду в этом классе ... спать ... зарегистрироваться ... Я зарегистрируюсь завтра ^ - ^;

Soully 02.12.2008 11:50

Два подхода: во-первых, при сортировке имен каждый раз, когда вы обмениваетесь двумя именами, обменивайтесь строками (или столбцами, или как хотите их назвать) оценок в одних и тех же позициях. В конце концов, оценки должны быть синхронизированы с именами.

Во-вторых, вместо сортировки имен создайте третий массив, который будет содержать индексы в любой из двух других массивов, изначально от 0 до n-1, но затем отсортированный, сравнивая имя [a] и имя [b], вместо сортировки сам массив имен.

Определите простой класс 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);

сделает всю работу за вас.

Другие вопросы по теме