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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2012, 18:26   #1
RIOs
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 49
По умолчанию

Дана действительная матрица mxn. Упорядочить столбцы матрицы по убыванию сумм элементов столбцов.

Ребят, кто-нибудь! весь код можно не писать, алгоритм не могу придумать лишь только. Допустим сумму получу, но как их сортирануть вообще не представляю

Подскажите, как сортировать

Последний раз редактировалось Stilet; 10.06.2012 в 09:48.
RIOs вне форума Ответить с цитированием
Старый 09.06.2012, 23:19   #2
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Вот тебе алгоритм "в лоб".

• Создаешь доп. матрицу 2хN.
• Пишешь в первую строку суммы каждого столбца, во вторую номер столбца.
• Сортируешь первую строку, соответственно не забывая переставлять "нижние" части, с номерами столбцов
• Вуаля, во второй строке доп. матрицы порядок столбцов, дальше делай с ним что хочешь.
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 10.06.2012, 01:39   #3
RIOs
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 49
По умолчанию

Ладно. Доп. матрицу создам. Суммы надеюсь додумаюсь как сосчитать (хоть пока не приходит ничего не ум). Но вот на третьем пункте загвозка. и как раз не понятно что я буду делать с этой матрицей. Печально, что мне не хватает мозгов
RIOs вне форума Ответить с цитированием
Старый 10.06.2012, 10:38   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю индексировать массив:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 4, m = 5;
            int[,] a=new int[n,m];
            int[] idx = new int[m];
            int[] sum = new int[m];
            Random r = new Random(1000);
            for (int i = 0; i < a.GetLength(0); i++)
            {
                sum[i] = 0;
                for (int j = 0; j < a.GetLength(1); j++) {
                    a[i, j] = r.Next()/1000000; Console.Write("{0}\t",a[i, j]);
                    sum[i] += a[i, j];
                    idx[j] = j;
                } Console.WriteLine();
            } Console.WriteLine();

            for (int j = 0; j < a.GetLength(1); j++)
            {
                Console.Write("{0}\t", sum[j]);
            } Console.WriteLine();


            for (int i = 0; i < idx.GetLength(0); i++)
            {
                for (int j = 1; j < i; j++)
                {
                    if (sum[idx[j]] < sum[idx[j-1]])
                    {
                        int t = idx[j]; idx[j] = idx[j - 1]; idx[j - 1] = t;
                    }
                } Console.WriteLine();
            }

            for (int i = 0; i < a.GetLength(0); i++)
            {
                for (int j = 0; j < a.GetLength(1); j++)
                {
                     Console.Write("{0}\t", a[i, idx[j]]);
                } Console.WriteLine("\t{0}",sum[idx[i]]);
            }


            Console.ReadKey();
        }
    }
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.06.2012, 15:22   #5
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

В принципе, я тож самое предлагал, только вместо двух одномерных юзать 1 доп. двухмерный. Вот мой код, выберайте для вас более понятный.
Код:
using System;

namespace SortMtx
{
    class Programm
    {
        static void Main(string[] args)
        {
            const int N = 4;
            const int M = 5;

            Random ran = new Random();

            int[,] mtx = new int[N, M];
            int[,] order = new int[2,M];

            //Заполняем матрицу
            for(int j = 0; j < M; ++j)
            {
                for (int i = 0; i < N; ++i)
                {
                    mtx[i,j] = ran.Next(0, 10); //Заполняем ячейку
                    order[0, j] += mtx[i, j];   //Подсчитываем сумму столбцов
                }
                order[1, j] = j;                //нумеруем стобцы
            }

            //Выводим
            Console.WriteLine("Unsorted matrix:");
            for (int i = 0; i < N; ++i)
            {
                for (int j = 0; j < M; ++j)
                    Console.Write("{0,3}", mtx[i, j]);
                Console.WriteLine();
            }

            //Сортировка пузырьком (но можно вообще любым методом, как удобно)

            for (int i = 0; i < M; ++i)
            {
                for (int j = 0; j < M-1; ++j)
                {
                    if (order[0, j] > order[0, j + 1])
                    {
                        int temp = order[0, j+1];       //меняем значения сумм
                        order[0, j + 1] = order[0, j];
                        order[0, j] = temp;

                        temp = order[1, j + 1];         //Меняем столбцы
                        order[1, j + 1] = order[1, j];
                        order[1, j] = temp;
                    }
                }
            }

            //Выводим отсортированную матрицу

            Console.WriteLine("\n\nSorted matrix:");
            for (int i = 0; i < N; ++i)
            {
                for (int j = 0; j < M; ++j)
                    Console.Write("{0,3}", mtx[i, order[1,j]]);
                Console.WriteLine();
            }

            Console.ReadKey();
        }
    }
}
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 11.06.2012, 14:37   #6
RIOs
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 49
По умолчанию

Ох! Ваще спасибо ребята. Сейчас буду разбираться.
RIOs вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. Матрица NxN -> текстовый файл -> Матрица NxN - найти max по диагоналям -> типизированный файл Лунатик13 Помощь студентам 1 20.02.2012 15:54
Матрица. С++ feytan Помощь студентам 0 09.04.2011 10:33
Непонятки с DirectX (матрица поворота, камера, матрица проекции) ROD Общие вопросы C/C++ 2 17.09.2010 17:00
TurboPascal: граф, матрица смежности и матрица инцидентности. ulala Помощь студентам 0 02.12.2009 10:11
матрица Babur4iK Помощь студентам 1 11.11.2009 17:53