Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
2 / 2 / 1
Регистрация: 05.12.2012
Сообщений: 14

Переставляя строки и столбцы матрицы, добиться, чтобы максимальный элемент оказался в верхнем левом углу

05.12.2012, 21:06. Показов 2305. Ответов 5

Студворк — интернет-сервис помощи студентам
Задана вещественная матрица размером н * м, где н , м - заданные целые числа. Используя только операции обмена местами строк и столбцов выполнить приведенные ниже задания.Задача: Переставляя строки и столбцы матрицы, добиться того, чтобы максимальный элемент оказался в верхнем левом углу.

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
         static void Print(double[,] arr, int n, int m)
        {
            for (int i = 0; i < n; i++)
            {
                for (int g = 0; g < m; g++)
                {
                    Console.Write("{0}  ",arr[i, g]);
                    
                }
                Console.WriteLine();
            }
        }
        static void Fill(double[,] arr, int n, int m)
        {
            Random r = new Random();
            for (int i = 0; i < n; i++)
            {
                for (int g = 0; g < m; g++)
                {
                    arr[i, g] = 10*r.NextDouble();
                }
               
            }
 
        }
        static void Main(string[] args)
        { start:
            //Переставляя строки и столбцы матрицы, добиться того, чтобы максимальный элемент оказался в верхнем левом углу.
           //объявление массива размером m and n
            Console.WriteLine("Введите размеры вещественной матрицы m и n :");
            Console.Write("Введите  n:");
            int n = int.Parse(Console.ReadLine());
          
            Console.Write("Введите  m:");
            int m = int.Parse(Console.ReadLine());
            double[,] arr = new double[n, m];
            double[,] arr2 = new double[n, m];
            double max = 0;
            int xpos=0;
            int ypos=0;
            Fill(arr,n,m);
            for (int i = 0; i < n; i++)
            {
                for (int g = 0; g < m; g++)
                {
                    if (arr[i, g] > max)
                    {
                        max = arr[i, g];
                        xpos = i;
                        ypos = g;
 
                    }
 
                }
            }
            Print(arr, n, m);
            Console.WriteLine("max element={0}",max);
            Console.WriteLine("Xpos {0} Ypos {1} ", xpos, ypos);
            Print(arr, n, m);
 
           for (int i = 0; i < n; i++)
            {
                for (int g = 0; g < m; g++)
                {
                    if (i == xpos)
                    {
                        bool stolb = true;
                        while(stolb&&(g<arr.Length))
                        {
                            arr2[0, g] = arr[xpos, g];
                            g++;
                        }
                        while (stolb)
                        {
                            arr2[xpos, g] = arr[0, g];
                        }
 
                    }
                    if (g == ypos)
                    {
                        bool stolb = true;
                        while (stolb &&(i<arr.Length))
                        {
                            arr2[i, 0] = arr[i, ypos];
                            i++;
                        }
                        while (stolb)
                        {
                            arr2[i, ypos] = arr[i, 0];
                        }
 
                    }
                }
            }
            Print(arr2, n, m);
            Console.ReadLine();
с логикой программы явно беда.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2012, 21:06
Ответы с готовыми решениями:

Переставляя строки и столбцы матрицы, добиться того, чтобы наибольший элемент оказался в левом верхнем углу
Дана вещественная матрица размером (N*M). Переставляя её строки и столбцы добиться того что бы наибольший элемент оказался в левом верхнем...

Переставляя строки и столбцы матрицы, добиться того, чтобы наибольший элемент оказался в левом верхнем углу
Дана вещественная матрица размером (N x M). Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (или один из них)...

Переставля строки и столбцы, добиться того, чтобы наибольший элемент оказался в левом верхнем углу
Помогите пожалуйста, нужен готовый код для такого задания на C#: Дана вещественная матрица размером (N x M). Переставляя ее строки и...

5
 Аватар для Enesi
3 / 3 / 1
Регистрация: 02.10.2012
Сообщений: 46
06.12.2012, 00:16
Очень милые бесконечные циклы =)) Я тоже не понял, что хотел сделать автор кода.

Не совсем понял, зачем там arr2. Но если хотите, напишите функцию копирования массива, скопируйте во второй массив первый, и изменяйте только второй. И зачем-то там лишний раз массив выводился.

Еще там перепутаны x и y .

Написал такой вариант. Его логика вам понятна, или объяснить?

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
        static void Main(string[] args)
        {
        start:
            //Переставляя строки и столбцы матрицы, добиться того, чтобы максимальный элемент оказался в верхнем левом углу.
            //объявление массива размером m and n
            Console.WriteLine("Введите размеры вещественной матрицы m и n :");
            Console.Write("Введите  n:");
            int n = int.Parse(Console.ReadLine());
 
            Console.Write("Введите  m:");
            int m = int.Parse(Console.ReadLine());
            double[,] arr = new double[n, m];
            double[,] arr2 = new double[n, m];
            double max = 0;
            int xpos = 0;
            int ypos = 0;
            Fill(arr, n, m);
            for (int i = 0; i < n; i++)
            {
                for (int g = 0; g < m; g++)
                {
                    if (arr[i, g] > max)
                    {
                        max = arr[i, g];
                        xpos = g;
                        ypos = i;
 
                    }
 
                }
            }
            Print(arr, n, m);
            Console.WriteLine("max element={0}", max);
            Console.WriteLine("Xpos {0} Ypos {1} ", xpos, ypos);
 
            //выводим строку с максимальным элементом на место первой строки
            for (int i = 0; i < n; i++)
            {
                double tmp = arr[i, 0];
                arr[i, 0] = arr[i, ypos];
                arr[i, ypos] = tmp;
            }
 
            //выводим столбец с максимальным элементом на место первого столбца
            for (int i = 0; i < m; i++)
            {
                double tmp = arr[0, i];
                arr[0, i] = arr[xpos, i];
                arr[xpos,i] = tmp;
            }
 
           
            Print(arr, n, m);
            Console.ReadLine();
 
        }
0
2 / 2 / 1
Регистрация: 05.12.2012
Сообщений: 14
06.12.2012, 20:34  [ТС]
я размышлял немного подругому)))но с логикой была явно беда)

Добавлено через 13 секунд
спасибо за помощь

Добавлено через 11 минут
C#
1
2
3
4
5
6
7
                       max = arr[i, g];
                        xpos = g;
                        ypos = i;
//у вас ошибка xpos Отвечает за строку ypos за столбец  у меня было объявлено правильно
                      max = arr[i, g];
                        xpos = i;
                        ypos = g;
но код рабочий спс
и можно вопрос по этому поводу массив хранится же в динамической памяти и если мы перезапишем строчку то потеряем ту строку которая была

Добавлено через 1 минуту
а все вопрос исчерпан для этого вы создали переменную tmp.Еще раз спс за код
0
 Аватар для Enesi
3 / 3 / 1
Регистрация: 02.10.2012
Сообщений: 46
08.12.2012, 02:05
Рад помочь))

А на счет ошибки...Боюсь настаивать, но... вы проверяли? Это же очень наглядно при маленьких n и m. Посмотрите, в вашем варианте он неверно указывает положение максимального элемента.
xpos Отвечает за строку ypos за столбец
Но x - это столбцы, а y - строки как-раз.
0
2 / 2 / 1
Регистрация: 05.12.2012
Сообщений: 14
08.12.2012, 15:33  [ТС]
когда код был с вашим вариантом он отказывался менял рандомно а когда я поставил наоборот все заработало нормально
0
 Аватар для Enesi
3 / 3 / 1
Регистрация: 02.10.2012
Сообщений: 46
09.12.2012, 15:06
Загадочно, у меня нормально меняет =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.12.2012, 15:06
Помогаю со студенческими работами здесь

Путем перестановки элементов квадратной вещественной матрицы добиться того, чтобы ее максимальный элемент находился в левом верхнем углу
Помогите, пожалуйста, с заданием на вставки, удаления, перестановки в массивах. Путем перестановки элементов квадратной вещественной...

Переставляя строки и столбцы матрицы, добиться, чтобы наибольший элемент оказался в верхнем левом углу
Дана вещественная матрица A размером 7*4. Переставляя ее строки и столбцы,добиться того,чтобы наибольший элемент (один из них) оказался в...

Переставляя строки и столбцы матрицы добиться, чтобы ее наибольший элемент оказался в верхнем левом углу
Дана матрица размером n*m. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент(или один из них) оказался в верхнем...

Переставляя строки и столбцы матрицы, добиться, чтобы наибольший элемент оказался в верхнем левом углу
Дана целочисленная матрица размером 7*4. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (один из них ) оказался в...

Переставляя строки и столбцы матрицы, добиться того, чтобы ее наибольший элемент оказался в верхнем левом углу
Здравствуйте! Уважаемые форумчане помогите пожалуйста с решением кто чем может...сама даже не знаю с чего и как начать В двумерном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru