Просуммировать элементы матрицы, расположенные на диагоналях, параллельных главной, включая главную диагональ - C#

Узнай цену своей работы

Формулировка задачи:

Дорогие форумчани, помогите с задачками, в понедельник зачет, ничего в голову не идет Для квадратной матрицы размера nxn просуммировать эле-менты, расположенные на диагоналях, параллельных главной, включая главную диагональ. Результат получить в виде вектора размера 2n – 1. В соревнованиях по прыжкам со 120-метрового трамплина принимает участие не более 30 спортсменов. Судят соревнования 5 судей. Каждый судья выставляет оценку за стиль прыжка по 20-балльной шкале. Меньшая и большая оценки отбрасываются, ос-тальные суммируются. К этой сумме прибавляются очки за даль-ность прыжка: 120 метров – 60 очков, за каждый метр превышения добавляются по 2 очка, при меньшей дальности отнимаются 2 очка за каждый метр. Получить итоговую таблицу соревнований, содержа-щую фамилию и итоговый результат для каждого участника в поряд-ке занятых мест

Решение задачи: «Просуммировать элементы матрицы, расположенные на диагоналях, параллельных главной, включая главную диагональ»

textual
Листинг программы
class Program
{
    static void Main()
    {
        int SportsmansCount = 5;
        CompetitionResult[] results = new CompetitionResult[SportsmansCount];
        for (int i = 0; i < SportsmansCount; i++)
            results[i] = new CompetitionResult();
        BubbleSort(results);
        Console.WriteLine("Name\tDistance\tMarks\tTotal");
        foreach (CompetitionResult result in results)
            Console.WriteLine(result);
        Console.Read();
    }
 
    class CompetitionResult : IComparable<CompetitionResult>
    {
        string Name;
        int Distance;
        int[] Marks;
 
        public CompetitionResult()
        {
            Console.WriteLine("Введите имя спортсмена: ");
            this.Name = Console.ReadLine();
            Console.WriteLine("Введите дальность прыжка: ");
            this.Distance = int.Parse(Console.ReadLine());
            Console.WriteLine("Введите пять оценок (через Enter):");
            this.Marks = new int[5];
            for (int i = 0; i < 5; i++)
                this.Marks[i] = int.Parse(Console.ReadLine());
        }
 
        public int GetTotal()
        {
            int sum = 60, max = int.MinValue, min = int.MaxValue;
            foreach (int mark in this.Marks)
            {
                if (mark < min)
                    min = mark;
                if (mark > max)
                    max = mark;
                sum += mark;
            }
            sum -= (max + min);
 
            if (this.Distance < 120)
                sum -= (120 - Distance) * 2;
            else
                sum += (Distance - 120) * 2;
 
            return sum;
        }
 
        public int CompareTo(CompetitionResult other)
        {
            int pointsCompareResult = this.GetTotal().CompareTo(other.GetTotal());
            if (pointsCompareResult == 0)
                return this.Name.CompareTo(other.Name);
            else
                return pointsCompareResult;
        }
 
        public override string ToString()
        {
            return String.Format("{0}\t{1}\t{2}\t{3}", this.Name, this.Distance, string.Join("; ", this.Marks), this.GetTotal());
        }
    }
 
    static void BubbleSort<T>(T[] array) where T : IComparable<T>
    {
        for (int i = 0; i < array.Length; i++)
            for (int j = i; j < array.Length; j++)
                if (array[i].CompareTo(array[j]) == -1)
                {
                    T tmp = array[i];
                    array[i] = array[j];
                    array[j] = tmp;
                }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5
Похожие ответы