Member 12880058 Ответов: 1

Вопрос о массиве и методах


public static void Main(string[] args)
{
    //change the number of arrays to 10!
    string[] studentNames = new string[3];
    int[] finalScores = new int[3];

    int minIndex, minGoes, temp;

    for (int i = 0; i < studentNames.Length; i++)
    {
        Console.Write("Enter student name " + ": ");
        studentNames[i] = Convert.ToString(Console.ReadLine());
        Console.Write("Enter student score " + ": ");
        finalScores[i] = Convert.ToInt32(Console.ReadLine());
    }

    minGoes = 0;
    minIndex = 0;

    for (int j = 1; j < finalScores.Length; j++)
    {
        if (finalScores[j] > finalScores[minIndex])
        {
            minIndex = j;
        }
        temp = finalScores[minIndex];
        finalScores[minIndex] = finalScores[minGoes];
        finalScores[minGoes] = temp;

        for (int i = 0; i < finalScores.Length - 1; i++)
        {
            minIndex = i;
            for (int j = i + 1; j < finalScores.Length; j++)
            {
                if (finalScores[j] > finalScores[minIndex])
                {
                    minIndex = j;
                }
                temp = finalScores[minIndex];
                finalScores[minIndex] = finalScores[i];
                finalScores[i] = temp;
            }
            Console.WriteLine("Student Scores: ");
            for (int i = 0; i < finalScores.Length; i++)
            {
                Console.Write(finalScores[i] + "\n ");
            }


Что я уже пробовал:

До сих пор он показывал результаты тестов от самых высоких до самых низких. Я не могу понять, как заставить имена быть правильными с самыми высокими и самыми низкими результатами тестов ?

Кроме того, как я мог бы включить несколько методов ?

Richard MacCutchan

Поскольку каждое имя идет со своим счетом, вы меняете записи имен одновременно с изменением записей баллов.

Что означает ваш второй вопрос?

1 Ответов

Рейтинг:
0

#realJSOP

Эти два массива никак не связаны. Вам повезет больше, если вы используете список объектов student (который содержит свойства для имени и оценки), а затем сортируете список по свойству name.

Другие советы:

0) никогда не объединяйте строки .Сеть с оператором"+". Воспользуйся string.Concat() вместо.

1) нет необходимости использовать Console.Write("...\n") когда вы можете использовать Console.WriteLine("...").

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


Philippe Mori

Ну, я бы не сказал, что профессор идиот... Должно быть очевидно, что если кто-то хочет, чтобы оба массива были обновлены, ему просто нужно добавить несколько строк, чтобы переместить также имя (в другой массив) при сортировке. Было бы глупо, если бы в какой-то момент курса не была показана альтернатива использования объектов.

Matt T Heffron

Re: Совет 0: это бессмысленный совет.
Оператор string " + " компилируется в вызовы string.Concat () [по крайней мере, с VS2013, режим выпуска]
С другой стороны, не используйте конкатенацию строк (либо"+", либо string.Concat ()) для построения строки кусочно-последовательно.
(Это создаст множество промежуточных экземпляров строк, которые почти сразу же будут отброшены.)
В этом случае используйте System.Text.StringBuilder.