문제

저는 기본 프로그래밍 클래스에 있으며 모든 것이 의사 코드로 수행됩니다.

내 질문은 이것입니다 : 두 배열을 어떻게 연결합니까?

나는 학생 이름을 나열하는 단일 차원 배열을 가지고 있으며 각 학생의 상위 8 개 점수를 나열하는 2 차원 배열이 있습니다 ... 이것은 모두 훌륭하고 멍청하지만 이제 학생들이 배열을 정렬해야합니다. 이름. 나는 온라인에서 찌르고 책 장을 두 번 읽었습니다. 두 배열을 연결하는 것을 간단히 언급하지만 예제는 표시되지 않습니다.

그것이 도움이된다면, 우리는 버블-조종을 사용하고 있으며 그것이 내가 친숙한 것입니다 ... 나는 이름을 정렬 할 수 있습니다. 그것은 쉬운 부분이지만, 나는 등급을 정렬하는 방법을 모릅니다. 주문을 중단하십시오.

입력 주셔서 감사합니다!

Sidenote : 나는 그것을 알아 냈다! 나는 Greg Hewgill이 어떻게 언급했는지를 끝내었다. 그의 제안에 대해 내 의견을 제시하면서, 나는 그 아이디어가 나를 때릴 때까지 무작위로 코드를 던지기 시작했습니다 ... 그것은 예쁘지 않은 것처럼 보이지 않습니다 (한 모듈은 이름을 바꾸고, 다른 모듈은 성적을 교환하고, 그때도 세 번째는 그때도. 다차원 배열로 일찍 성적을 바꾸는 개별 학생들을 교체하려면 실제로 작동하는 것처럼 보였습니다 ... 컴파일러가 없거나 의사 코드를 실제 코드로 만들 수있는 충분한 지식이 있으므로 언어로 테스트 할 수있는 방법이 없습니다. 나는 하나를 다운로드해야했지만, 내가 입력 한 종이에서 정말 좋은 소리!

내가 메모에서 언급했듯이, 나는 그들의 빠르고 도움이되는 통찰력에 대해 모두에게 감사합니다. 나는 실제로 오늘 밤 답장을받을 것이라고 생각조차하지 않았습니다. 모든 도움을 주셔서 다시 한 번 감사드립니다!

제프리

도움이 되었습니까?

해결책

당신이하고 싶은 것은 다음과 같습니다. 이름을 정렬하고 두 위치를 교환해야합니다. 같은 점수 배열에서 교체하십시오. 이렇게하면 이름 배열에 대한 모든 변경 사항은 점수 배열에 반영됩니다. 완료되면 점수는 이름과 동일한 정렬 순서가됩니다.

다른 의견이 알 수 있듯이 다른 데이터 구조 로이 작업을 수행하는보다 효과적인 방법이 있습니다.

다른 팁

다음과 같이 간단한 학생 수업을 정의하십시오.

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

당신을 위해 일을 할 것입니다.

당신의 전제는 잘못되었습니다. 처음에는 두 개의 배열이 없어야합니다.

하나의 배열이 있어야합니다 사물, 각각은 학생의 이름과 그의 점수를 보유하고 있습니다.

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

두 가지 접근법 : 첫째, 이름을 정렬 할 때 두 이름을 교환 할 때마다 동일한 위치에서 점수의 행 (또는 열 또는 호출하려는 항목)을 교환합니다. 결국, 점수는 여전히 이름과 동기화되어야합니다.

둘째, 이름을 정렬하는 대신, 초기에는 0에서 N-1에서 다른 두 배열 중 하나에 인덱스를 포함하는 세 번째 배열을 만듭니다. 이름 자체가 이름 자체입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top