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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2013, 22:16   #1
FroZko
Пользователь
 
Регистрация: 11.11.2012
Сообщений: 23
По умолчанию Упорядочение элементов массива по возрастанию их модулей

Здравствуйте, уважаемые эксперты. Предо мной встала следующая задача: написать программу, которая упорядочивала бы элементы массива по возрастанию их модулей. Как отсортировать массив по возрастанию я понял и сделал. Как изменить модули чисел тоже понял. Но вот как выстроить правильную логику для достижения результата увы не смог понять. Прилагаю код, в котором пробовались разные танцы с бубном. В итоге получилась некая программа, которая меняет знаки у элементов массива на противоположные и сортирует этот массив по возрастанию. Есть очень жесткое подозрение, что ушел я не в тот лес, посему и прошу помощи.
Код:
Console.WriteLine("Введите число элементов массива");
            int razm = int.Parse(Console.ReadLine());
            double[] mas = new double[razm];
            Console.WriteLine("Введите элементы массива");
            for (int j = 0; j < razm; j++)
                mas[j] = double.Parse(Console.ReadLine());
            for (int i = 0; i < razm; i++) 
                if (mas[i] < 0)
                {
                    mas[i] = Math.Abs(mas[i]);
                }
                else
                {
                    mas[i] = mas[i] * (-1);
                }
           
            Array.Sort(mas);
 
            Console.WriteLine("Массив отсортированный по возрастанию: ");
            for (int i = 0; i < razm; i++) 
            {
                Console.Write(mas[i] + "");
                Console.WriteLine();
            }
 
            Console.ReadLine();
FroZko вне форума Ответить с цитированием
Старый 23.03.2013, 22:50   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
Console.WriteLine("Введите число элементов массива");
            int razm = int.Parse(Console.ReadLine());
            double[] mas = new double[razm];
            Console.WriteLine("Введите элементы массива");
            for (int j = 0; j < razm; j++)
                mas[j] = double.Parse(Console.ReadLine());
 
            Console.WriteLine("Массив отсортированный по возрастанию: ");
            foreach (int i in mas.Sort(v => Math.Abs(v))) 
            {
                Console.Write("{0}\t",i);
            }
 
            Console.ReadLine();
Подходит?
Не проверял.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.03.2013, 23:09   #3
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Код:
Array.Sort(mas, x => Math.Abs(x));
Кажется так проще всего. Не проверял, но что-то вроде. Кажется даже так можно написать:
Код:
Array.Sort(mas, Math.Abs);
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 24.03.2013, 07:18   #4
FroZko
Пользователь
 
Регистрация: 11.11.2012
Сообщений: 23
По умолчанию

по логике все сходится вроде.
Stilet, что есть "v" в вашем коде?
Selestis, а у Вас что такое "x"? и функция под вторым номером облагается ошибкой перегрузки и использовании нескольких недопустимых элементов.
FroZko вне форума Ответить с цитированием
Старый 24.03.2013, 13:41   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
что есть "v" в вашем коде?
Параметр-переменная для анонимной функции. которая используется (читай: передается) в метод Sort. Хорошая штука, удобная. Читай про нее в книгах о LINQ.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны три массива. Упорядочить их по возрастанию элементов Новичёк_Delphi Помощь студентам 4 05.12.2012 21:27
Упорядочение элементов массива millepetrozza Общие вопросы C/C++ 1 22.10.2012 21:53
Упорядочить вставкой строки массива по возрастанию элементов столбцов. Вадим Величко Помощь студентам 0 21.12.2011 17:15
[Pascal] Нахождение наибольшей из сум модулей элементов многомерного массива just4smth Помощь студентам 3 16.05.2011 20:00
Упорядочение элементов массива Юлёк PHP 2 28.01.2008 21:27