Форум программистов, компьютерный форум, киберфорум
Наши страницы
vseochenslojno
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Помогите доделать задачу!!! C#

Запись от vseochenslojno размещена 19.05.2019 в 11:06

Была задача:
Дан массив 5х5. Начертить вектор длиной 9, состоящий из максимумов элементов диагоналей, параллельных главной диагонали.
Задача готова, но ещё попросили дописать метод, находящий среднее арифметическое главной диагонали.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 using System;
 
namespace matr
{
    class Program
    {
        //Ввод массива
        static double[,] Input(int n)
        {
            double[,] A = new double[n, n];
             double avr = 0;
 
 
            Random rnd = new Random();
            for (int i = 0; i < n; i++) //цикл по строкам
                for (int j = 0; j < n; j++) //цикл по элементам строки
                {
                    A[i, j] = rnd.Next(-100, 100);
 
                }
            return A;
        }
        //вывод матрицы на экран
        static void Print(double[,] a)
        {
            Console.WriteLine();
            for (int i = 0; i < a.GetLength(0); i++)    //цикл по строкам
            {
                for (int j = 0; j < a.GetLength(1); j++)    //цикл по элементам строки
                    Console.Write("{0,6}", a[i, j]);
                Console.WriteLine();
            }
        }
        //обработка
        static double[] Process(double[,] a)
        {
            int n = a.GetLength(0);
            //массив флагов первых элементов в векторе
            bool[] fst = new bool[n + n - 1];
            for (int i = 0; i < n + n - 1; i++)
                fst[i] = true;
            double[] V = new double[n + n - 1];
            int from = -(n - 1);
            int to = n - 1;
            for (int j = from; j <= to; j++)
            {
                for (int i = 0; i < n; i++)
                {
                    if (i + j >= 0 && i + j < n)
                    {
                        if (fst[j + n - 1])
                        {
                            fst[j + n - 1] = false;
                            V[j + n - 1] = a[i, i + j];
                        }
                        else if (V[j + n - 1] < a[i, i + j])
                            V[j + n - 1] = a[i, i + j];
                    }
                }
            }
            return V;
        }
 
        static void Main(string[] args)
        {
            int n = 5;
            double[,] A = Input(n);
            Console.WriteLine("Исходный массив");
            Print(A);
            double[] V = Process(A);
            Console.WriteLine("Вектор");
            //вывод вектора
            for (int i = 0; i < n + n - 1; i++)
                Console.Write("{0,5}", V[i]);
            Console.ReadLine();
            
        }
    }
}
Размещено в Без категории
Просмотров 269 Комментарии 2
Всего комментариев 2
Комментарии
  1. Старый комментарий
    GLHF
    Запись от _SuGroB_ размещена 19.05.2019 в 19:03 _SuGroB_ вне форума
  2. Старый комментарий
    C#
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
            public static double MainDiagonal(int [,] vs)
            {
                var sum = 0.0;
     
                for (int i = 0; i < 5; i++)
                {
                    for (int j = 0; j < 5; j++)
                    {
                        if (i == j) sum += vs[i, j];
                    }
                }
     
                return sum / 5;
            }
    Самое легкое не сделал))
    Запись от Kirill2517 размещена 19.05.2019 в 22:31 Kirill2517 вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru