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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2013, 20:18   #1
reprain
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 16
По умолчанию

дана матрица 10х10. Надо установить взаимо однозначное отображение. Т.е пример(наобум пишу,так что не обессудьте):
|1 2 3 4|
|5 6 7 8|
|9 10 11 12|
|13 14 15 16|

После преобразования так будет.(вроде)
|1 5 9 13|
|2 6 10 14 |
|3 7 11 15 |
|4 8 12 16 |

Код:
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            {int y;
                int[,] a = new int[10,10]; //Массив в котором 10 чисел
                Random rand = new Random();             
                for (int i = 0; i < 10; i++)                
                    for (int j = 0; j < 10; j++)                 
                    {                     
                        a[i, j] = (rand.Next(0,500));                 }
 
 
                for (int i = 0; i < 10; i++)
                {
                    for (int i = 0; i < 10; i++)
                    { a[i,j]=y;
                    a[i, j] = a[j, i];
                        a[j,i=y]
                    }
                }
           for (int i = 0; i < 10; i++)            
                {                
                    for (int j = 0; j < 10; j++)                 
                    {                    
                        Console.Write(a[i, j] + " ");                 }                 
                    Console.WriteLine();             }            
                Console.ReadKey();
 
            }
 
 
 
        }
    }
}
Код:
 static void Main(string[] args)
        {
            {int y;
                int[,] a = new int[10,10]; //Массив в котором 10 чисел
                Random rand = new Random();             
                for (int i = 0; i < 10; i++)                
                    for (int j = 0; j < 10; j++)                 
                    {                     
                        a[i, j] = (rand.Next(0,500));                 }


                for (int i = 0; i < 10; i++)
                {
                    for (int j = 0; i < 10; j++)
                    {
                       y = a[i, j];
                    a[i, j] = a[j, i];
                    a[j, i] = y;
                    }
                }
           for (int i = 0; i < 10; i++)            
                {                
                    for (int j = 0; j < 10; j++)                 
                    {                    
                        Console.Write(a[i, j] + " ");                 }                 
                    Console.WriteLine();             }            
                Console.ReadKey();

            }
 


        }
    }
}
вариан 2. Переполнение дает

Последний раз редактировалось Stilet; 21.05.2013 в 21:53.
reprain вне форума Ответить с цитированием
Старый 21.05.2013, 20:49   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Сначала Ваш код (после исправления синтаксических ошибок) поменяет местами a[1,3] с a[3,1] (i=1, j=3).
Потом поменяет местами a[3,1] с a[1,3] (i=3, j=1).
В итоге получится исходная матрица.

Цитата:
вариан 2. Переполнение дает
Чего-чего даёт?
Abstraction вне форума Ответить с цитированием
Старый 21.05.2013, 20:53   #3
reprain
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Сначала Ваш код (после исправления синтаксических ошибок) поменяет местами a[1,3] с a[3,1] (i=1, j=3).
Потом поменяет местами a[3,1] с a[1,3] (i=3, j=1).
В итоге получится исходная матрица.

Чего-чего даёт?
выход за границы. Но это я уже исправил. Не подскажите,как написать ,чтоб нормально меняла матрицу?
reprain вне форума Ответить с цитированием
Старый 21.05.2013, 21:01   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Не подскажите,как написать ,чтоб нормально меняла матрицу?
1) Эта операция называется "транспонирование".
2) Очевидно, из двух обменов нужно оставить только один. Поскольку в двух обменах всегда в одном случае i>j, а в другом i<j, то...
Abstraction вне форума Ответить с цитированием
Старый 21.05.2013, 21:05   #5
reprain
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 16
По умолчанию

Цитата:
namespace Console1
{
class Program
{
static void Main()
{
int i, j;
int y = 0;
int[,] a = new int[10, 10]; //Массив в котором 10 чисел // Не 10, а 100(сто)!
Random rand = new Random();

for (i = 0; i < a.GetLength(0); i++)
for (j = 0; j < a.GetLength(1); j++)
a[i, j] = rand.Next(0, 500);


Console.WriteLine("Исходный массив:");
for (i = 0; i < a.GetLength(0); i++)
{
for (j = 0; j < a.GetLength(1); j++)
Console.Write("{0}\t", a[i, j]);

Console.WriteLine();
}
Console.WriteLine();

for (i = 0; i < a.GetLength(0); i++)
{
for (j = 0; j < i; j++)
{
y = a[i, j];
a[i, j] = a[j, i];
a[j, i] = y;
}
}

Console.WriteLine("Изменённый массив:");
for (i = 0; i < a.GetLength(0); i++)
{
for (j = 0; j < a.GetLength(1); j++)
Console.Write("{0}\t", a[i, j]);

Console.WriteLine();
}
Console.WriteLine();

Console.ReadKey();
}
}
}
работает. Спасибо
reprain вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибки в коде.. arh42kem Windows Forms 10 10.04.2013 18:42
Ошибки в коде C++ BloodWolf Помощь студентам 3 28.11.2012 15:39
ошибки в коде VBA noscere Microsoft Office Excel 7 05.04.2012 13:46
C++ ошибки в коде Straiker900 Помощь студентам 0 18.01.2012 19:48
Матрица опять.. POPOV Помощь студентам 11 17.11.2007 18:52