Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

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


Ответ
 
Опции темы
Старый 04.06.2012, 08:38   #1
МашаПолудницына
Новичок
Джуниор
 
Регистрация: 04.06.2012
Сообщений: 1
По умолчанию Магический квадрат

Здравствуйте!!! Помогите пожалуйста с такой задачей на C# : Дана квадратная целочисленная матрица размера M. Написать программу, которая проверяет, является ли введенная с клавиатуры матрица магическим квадратом. Магическим квадратом называется матрица, сумма элементов которой в каждой строке, в каждом столбце и по каждой диагонали одинакова.
За ранее благодарна.

В данном коде ошибка, при задании массива чисел arr[i, j] = R.Next(10, 10); показывает, что матрица не является магическим квадратом. Подскажите, в чем ошибка кода?

Код:
static void Main(string[] args)
        {
           
            Random R = new Random(); 
            int[,] arr = new int [9,9];
            int flagStrok = 0;
            int flagStolb = 0;
 
            Console.WriteLine("Массив чисел:");
            for (int i = 0; i <arr.GetLength(0); i++)
            {
                for (int j = 0; j < arr.GetLength(1); j++)
                {
                    arr[i, j] = R.Next(10, 100);
                    Console.Write("{0} ", arr[i, j]);
                }
                Console.WriteLine();
            }
 
            int[] SumStrok = new int[arr.GetLength(0)];
            
            for (int z = 0; z < arr.GetLength(0); z++)
            {
                for (int j = 0; j < arr.GetLength(1); j++)
                    SumStrok[z] += arr[z, j];
                
                if (SumStrok[z] == SumStrok[0]) flagStrok++;
            }
 
            int[] SumStolb = new int[arr.GetLength(1)];
 
            for (int z = 0; z < arr.GetLength(0); z++)
            {
                for (int j = 0; j < arr.GetLength(1); j++)
                     SumStolb[z] += arr[z, j];
                
                if (SumStolb[z] == SumStolb[0]) flagStolb++;
            }
 
            if (SumStrok[0] == SumStolb[0] && flagStrok ==arr.Length-1 && flagStolb==arr.Length-1)
                Console.WriteLine("Матрица 9-го порядка является магическим квадратом!");
 
            else Console.WriteLine("Матрица не является магическим квадратом.");
 
            Console.ReadLine();
        }
МашаПолудницына вне форума Ответить с цитированием
Старый 04.06.2012, 11:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Может так?:
Код:
            Random R = new Random();
            int[,] arr = new int[4, 4];
            int k = 0;
            Console.WriteLine("Массив чисел:");
            for (int i = 0; i < arr.GetLength(0)-1; i++)
            {
                for (int j = 0; j < arr.GetLength(1)-1; j++)
                {
                    arr[i, j] = R.Next(1, 10);
                    //arr[i, j]=Convert.ToInt32(Console.ReadLine());
                    arr[i, arr.GetLength(1)-1] += arr[i, j];
                    arr[arr.GetLength(0)-1,j] += arr[i, j];
                }
            }
            int l = arr.GetLength(0);
            int p = arr[0, l - 1];
            int o = arr.GetLength(1) + arr.GetLength(0)-2;
            for (int i = 0; i < arr.GetLength(0)-1; i++)
            {
                k += (arr[i, l - 1] == p) ? 1 : 0;
                k += (arr[l - 1,i] == p) ? 1 : 0;
            }

            for (int i = 0; i < arr.GetLength(0); i++)
            {
                for (int j = 0; j < arr.GetLength(1); j++)
                {
                    Console.Write("{0}\t", arr[i, j]);
                }
                Console.WriteLine();
                
            }
            if (k == o) Console.WriteLine("{0} Магично",k);
            else Console.WriteLine("{0} не Магично",k);
                Console.ReadKey();
        }
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Магический квадрат ПрИуЭт Общие вопросы C/C++ 0 04.01.2012 13:47
Магический квадрат mikekucherov Помощь студентам 6 19.09.2011 10:43
Магический квадрат morgan97 Паскаль, Turbo Pascal, PascalABC.NET 5 09.04.2011 17:10
магический квадрат Irk-O Помощь студентам 3 11.10.2010 13:00
Магический квадрат Гаджи Помощь студентам 5 24.10.2009 09:46