Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2011, 20:46   #1
Vovchik123
Пользователь
 
Регистрация: 25.05.2011
Сообщений: 30
По умолчанию Матрица (C#)

Дана действительная квадратная матрица порядка N (N-нечетное), все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей.
___________
Выводит в 3 строчки, а не матрицу, поправте пожалуйста

Код:
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int N = 5;
            Random r = new Random();
            int[,] A = new int[5, 5];
            int iNumbersCount = 100;
            int[] aNumbers = new int[iNumbersCount];
            for (int i = 0; i < aNumbers.Length; i++)
                aNumbers[i] = i;

            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    int iIndex = r.Next(iNumbersCount);
                    A[i, j] = aNumbers[iIndex];
                    aNumbers[iIndex] = aNumbers[iNumbersCount - 1];
                    iNumbersCount--;
                    Console.Write(" \t " + A[i, j]);

                }

            }


            Console.WriteLine();
            int iMax = 1; int jMax = 1;

            // проход по главной диагонали
            for (int i = 0; i < N; i++)
            {
                if (A[i, i] > A[iMax, jMax])
                {
                    iMax = i; jMax = i;
                }
            }

            // проход по побочной диагонали
            for (int i = 0; i < N; i++)
            {
                if (A[i, N - 1 - i] > A[iMax, jMax])
                {
                    iMax = i; jMax = N - 1 - i;
                }
            }

        }
    }
}
Vovchik123 вне форума Ответить с цитированием
Старый 17.11.2011, 23:07   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если я правильно понял, то в ваш код достаточно добавить всего навсего одну строчку (выделена цветом):
Код:
            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    int iIndex = r.Next(iNumbersCount);
                    A[i, j] = aNumbers[iIndex];
                    aNumbers[iIndex] = aNumbers[iNumbersCount - 1];
                    iNumbersCount--;
                    Console.Write(" \t " + A[i, j]);

                }
                Console.WriteLine();

            }
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.11.2011, 23:20   #3
Vovchik123
Пользователь
 
Регистрация: 25.05.2011
Сообщений: 30
По умолчанию

не, ошибок кучу выбило
Vovchik123 вне форума Ответить с цитированием
Старый 17.11.2011, 23:39   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
не, ошибок кучу выбило
Каких таких ошибок?

я скопировал код после проверки его (из работающего примера!)

вы явно куда-то не туда вставили строчку (и/или при вставке удалили какую-то из фигурных скобок...)

вот, сверьтесь. полный тест:
Код:
namespace ConsoleApplication1
{
    class Program
    {
        public static void Main(string[] args)
        {
           int N = 5;
            Random r = new Random();
            int[,] A = new int[5, 5];
            int iNumbersCount = 100;
            int[] aNumbers = new int[iNumbersCount];
            for (int i = 0; i < aNumbers.Length; i++)
                aNumbers[i] = i;

            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    int iIndex = r.Next(iNumbersCount);
                    A[i, j] = aNumbers[iIndex];
                    aNumbers[iIndex] = aNumbers[iNumbersCount - 1];
                    iNumbersCount--;
                    Console.Write(" \t " + A[i, j]);

                }
                Console.WriteLine();

            }


            Console.WriteLine();
            int iMax = 1; int jMax = 1;

            // проход по главной диагонали
            for (int i = 0; i < N; i++)
            {
                if (A[i, i] > A[iMax, jMax])
                {
                    iMax = i; jMax = i;
                }
            }

            // проход по побочной диагонали
            for (int i = 0; i < N; i++)
            {
                if (A[i, N - 1 - i] > A[iMax, jMax])
                {
                    iMax = i; jMax = N - 1 - i;
                }
            }

            
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.11.2011, 00:02   #5
Vovchik123
Пользователь
 
Регистрация: 25.05.2011
Сообщений: 30
По умолчанию

Спасибо, действительно одну скобку провтыкал)
Vovchik123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятки с DirectX (матрица поворота, камера, матрица проекции) ROD Общие вопросы C/C++ 2 17.09.2010 17:00
матрица alerzo Помощь студентам 3 17.03.2010 12:27
матрица shelest Помощь студентам 1 19.12.2009 23:28
TurboPascal: граф, матрица смежности и матрица инцидентности. ulala Помощь студентам 0 02.12.2009 10:11