Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Является ли матрица 3-го порядка симметричной С# (http://forum.oszone.net/showthread.php?t=230664)

NeoX_2011 18-03-2012 16:50 1881813

Является ли матрица 3-го порядка симметричной С#
 
Подскажите пожалуйста, я делаю так , но у меня после каждой введеной цифры говорит симметрична или нет, а мне надо только после того, как введу полностью:
Код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication17
{
    class Program
    {
        static void Main(string[] args)
        {
            var matrix = new int[3, 3];
            for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++)
                {
                    Console.WriteLine("Вводите a[{0}, {1}]:", i, j);
                    matrix[i, j] = int.Parse(Console.ReadLine());
                    if (matrix[i, j] != matrix[j, i])
                        Console.WriteLine("Матрица не симметрична\n");
                      else
                      Console.WriteLine("Симметрична\n");};

            Console.ReadLine();
                }
        }
    }


Beyound 18-03-2012 17:09 1881823

Цитата:

Цитата NeoX_2011
for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++)
{
Console.WriteLine("Вводите a[{0}, {1}]:", i, j);
matrix[i, j] = int.Parse(Console.ReadLine()); »

Цитата:

Цитата NeoX_2011
if (matrix[i, j] != matrix[j, i])
Console.WriteLine("Матрица не симметрична\n");
else
Console.WriteLine("Симметрична\n");}; »

вот это надо разнести в разные циклы

NeoX_2011 18-03-2012 17:22 1881837

Вложений: 2
Цитата:

Цитата Beyound
вот это надо разнести в разные циклы »

Ну вот:

Код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication17
{
    class Program
    {
        static void Main(string[] args)
        {
            var matrix = new int[3, 3];
            for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++)
                {
                    Console.WriteLine("Вводите a[{0}, {1}]:", i, j);
                    matrix[i, j] = int.Parse(Console.ReadLine());
                };
                  for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) {if (matrix[i, j] != matrix[j, i])
                        Console.WriteLine("Матрица не симметрична\n");
                    else
                        Console.WriteLine("Симметрична\n");
                };

            Console.ReadLine();
        }
    }
}

Ну при вводе случайного набора чисел выводит то что на первой картинке, а при вводе симметричной матрицы вторая картинка, а мне то надо что один раз было написано симметрична или нет

Beyound 19-03-2012 18:00 1882570

Цитата:

Цитата NeoX_2011
for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) {if (matrix[i, j] != matrix[j, i])
Console.WriteLine("Матрица не симметрична\n");
else
Console.WriteLine("Симметрична\n"); »

потому что этот цикл на каждом шаге не решает какая матрица, а всего лишь проверяет одну пару, решение выносится только после того как все пары проверены.
самое удобное сделать так
Код:

for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) if (matrix[i, j] != matrix[j, i])
{
Console.WriteLine("Non Симметрична\n");
return;
}
Console.WriteLine("Симметрична\n");
return;



Время: 18:41.

Время: 18:41.
© OSzone.net 2001-