Я изучаю базовый класс программирования, и все делается в псевдокоде.
У меня такой вопрос: как связать два массива?
У меня есть одномерный массив, в котором перечислены имена студентов, и у меня есть двумерный массив, в котором перечислены восемь лучших оценок каждого студента ... это все прекрасно, но теперь мне нужно отсортировать массивы по студентам имя. Я ковырялся в Интернете и дважды прочитал главу книги, в ней лишь кратко упоминается связь двух массивов, но нет примеров.
Если это поможет, мы используем пузырьковую сортировку, и это то, с чем я довольно хорошо знаком ... Я могу отсортировать имена, это простая часть, но я не знаю, как отсортировать оценки, чтобы они не выйти из строя.
Спасибо за вклад!
Примечание: я понял! В итоге я поступил так, как упомянул Грег Хьюгилл. Когда я добавил свой комментарий к его предложению, я начал случайным образом вставлять строки кода, пока эта идея не поразила меня ... это выглядит не очень красиво (один модуль менял имена, другой - оценки, а третий даже тогда чтобы поменять местами отдельные оценки учащихся ранее в многомерном массиве), но это действительно сработало ... нет возможности проверить это на языке, поскольку у меня нет компилятора и недостаточно знаний, чтобы превратить псевдокод в реальный код, если Я должен был загрузить один, но он действительно хорошо звучит на бумаге, на которой я ее печатал!
Как я также упоминал в заметке, я действительно благодарю всех за их быстрое и полезное понимание, я даже не думал, что получу ответ сегодня вечером, еще раз спасибо всем за вашу помощь!
Джеффри
На самом деле вам не нужен компилятор. Выбирайте язык, у которого есть интерпретатор, такой как Python, Ruby, SML, ...
Псевдокод? Нет компилятора? Дейкстра обрадуется ...



Ваше предположение неверно. Во-первых, у вас не должно быть двух массивов.
У вас должен быть один массив объекты, каждый из которых содержит имя студента и его оценки:
public class Record
{
public string Student;
public int[] Scores;
}
Скажите это учителю (если бы только вы могли), а не несчастному ученику.
Как я уже сказал, это очень базовый класс, я не изучал язык программирования со школы (почти шесть лет назад), а в то время, когда это был С ++, учитель, кажется, преподает самые основные основы, и это здорово. ... но я всегда ужасно умел заставлять две вещи работать вместе, многозадачность - отстой
Вы не знаете, находится ли класс программирования уже на уровне класса. Кроме того, вы не знаете языка, возможно, нет классов, скажем, на функциональном языке.
Возможно, вы захотите сделать следующее: когда вы сортируете имена и вам нужно поменять местами две позиции, сделайте обмен такой же в массиве оценок. Таким образом, все изменения, внесенные в массив имен, будут отражены в массиве оценок. Когда вы закончите, оценки будут отсортированы в том же порядке, что и имена.
Есть более эффективные способы сделать это с разными структурами данных, как покажут другие комментарии.
Я начал делать то, что делаю всегда, то есть писать случайные строки кода, пока не найду, что работает, и на самом деле я сделал это таким образом, спасибо всем за ваши немедленные советы и вклад! Я знаю, куда теперь буду обращаться за помощью. ^ - ^
Не зарегистрирован, поэтому не могу проголосовать, если мне повезет, я смогу выспаться 6 часов, если пойду спать сейчас, прежде чем я буду в этом классе ... спать ... зарегистрироваться ... Я зарегистрируюсь завтра ^ - ^;
Два подхода: во-первых, при сортировке имен каждый раз, когда вы обмениваетесь двумя именами, обменивайтесь строками (или столбцами, или как хотите их назвать) оценок в одних и тех же позициях. В конце концов, оценки должны быть синхронизированы с именами.
Во-вторых, вместо сортировки имен создайте третий массив, который будет содержать индексы в любой из двух других массивов, изначально от 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);
сделает всю работу за вас.
Джефф: Добро пожаловать в stackoverflow! Проголосуйте за полезные ответы и примите (с галочкой) один из ответов. :)