0 / 0 / 0
Регистрация: 25.07.2013
Сообщений: 163
1

Сортировка строк в текстовом файле

08.06.2017, 22:22. Показов 3107. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, необходимо решить следующую задачу:

Есть текстовый файл в котором данные хранятся в следующем виде

-50.00 -50.00 xxxx xxxx xxxx xxxx xxxx
-45.00 -50.00 xxxx xxxx xxxx xxxx xxxx
.............................................................
0.00 -50.00 xxxx xxxx xxxx xxxx xxxx
5.00 -50.00 xxxx xxxx xxxx xxxx xxxx
.............................................................
45.00 -50.00 xxxx xxxx xxxx xxxx xxxx
50.00 -50.00 xxxx xxxx xxxx xxxx xxxx

и далее
-50.00 -45.00 xxxx xxxx xxxx xxxx xxxx
.............................................................
.............................................................
50.00 50.00 xxxx xxxx xxxx xxxx xxxx

Дело в том что все эти строки хранятся в несортированном виде, а необходимо их отсортировать т.е. чтобы сначала шли строки у которых второй элемент равен +50, а первый от -50 до +50 и так далее. Иногда возможны пропуски т.е. например строки 50 50 ххххх хххх хххх может не существовать а последний вариант 45 50 хххх хххх хххх

Сортировку первичную вроде понятно как делать( по крайней мере в теории): создаем массив массивов и сортируем по второму элементу, а вот как потом отсортировать по первому не понятно...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2017, 22:22
Ответы с готовыми решениями:

Обработка строк в текстовом файле
Всем привет, столкнулся со следующей проблемой: есть текстовый файл, который получен из некоей...

В текстовом файле подсчитать количество строк
В текстовом файле подсчитать количество строк. Помогите:wall:

Определить число строк в текстовом файле
Дан текстовый файл. Определить: а)число строк в тексте б)число слов (одно и...

Подсчитать количество определенных строк в текстовом файле
Добрый день! помогите плизз...в общем дело такое, необходимо подсчитать количество определенных...

8
3560 / 2501 / 1174
Регистрация: 14.08.2016
Сообщений: 8,206
09.06.2017, 14:08 2
как-то так
C#
1
2
3
4
            var result = File.ReadAllLines(@"c:\c#\1.txt").OrderByDescending(x => double.Parse(x.Split()[1],System.Globalization.CultureInfo.InvariantCulture))
                .ThenBy(x => double.Parse(x.Split()[0], System.Globalization.CultureInfo.InvariantCulture)).ToList();
            result.ForEach(Console.WriteLine);
            Console.ReadKey(true);
если я правильно уловил условия сортировки
0
0 / 0 / 0
Регистрация: 25.07.2013
Сообщений: 163
09.06.2017, 23:56  [ТС] 3
Попробую проверить, затем отпишу результаты, получилось или нет

Добавлено через 8 часов 59 минут
вот пример полной строки:

40 -50.000 0.000 -50.000 0.000 -49.810 -0.139 1.278 135.429

тут еще потом один вопрос будет, но сначала надо первый решить
0
3560 / 2501 / 1174
Регистрация: 14.08.2016
Сообщений: 8,206
10.06.2017, 00:17 4
вопрос то в чем? приведи часть входных данных, а как они должны выглядеть после сортировки, а то 50, -50, 40, -5, а в примерах по одной такой строке...телепаты в отпуске
0
34 / 34 / 16
Регистрация: 04.06.2017
Сообщений: 158
10.06.2017, 00:34 5
Цитата Сообщение от Diamante Посмотреть сообщение
вопрос то в чем? приведи часть входных данных, а как они должны выглядеть после сортировки, а то 50, -50, 40, -5, а в примерах по одной такой строке...телепаты в отпуске
Телепаты вернулись.

хочет что бы табличные данные, которые у него в тексте хранятся в виде строк, сначала отсортировали по второму столбцу(от большего к меньшему), потом в обратном порядке по первому

хотя остается вопрос... эти многопоинт так же в текстовом документе вставлены отделяя элементы (или просто для удобства просмотра), или это он тут показывал что-то типо и т.д.
0
0 / 0 / 0
Регистрация: 25.07.2013
Сообщений: 163
10.06.2017, 10:00  [ТС] 6
Модифицировал ваш вариант и почему то во второй сортировке неправильная строка, забыл сказать что первую и последнюю строку в файле необходимо игнорировать (я пока их просто удалил):

C#
1
2
3
4
var result = File.ReadAllLines(@"c:\c#\1.txt").OrderByDescending(x => double.Parse(x.Split(new char []{' ',' '})[6],System.Globalization.CultureInfo.InvariantCulture))
                .ThenBy(x => double.Parse(x.Split(new char[]{' ',' ')[1], System.Globalization.CultureInfo.InvariantCulture)).ToList();
            result.ForEach(Console.WriteLine);
            Console.ReadKey(true);
Добавлено через 22 минуты
246 -40.000 50.000 -40.000 50.000 -39.223 49.792 65.158 4.958
247 -35.000 50.000 -35.000 50.000 -35.211 50.349 71.835 3.562
248 -30.000 50.000 -30.000 50.000 -30.256 50.250 79.542 3.153
249 -20.000 50.000 -20.000 50.000 -20.202 50.612 96.966 1.413
250 -25.000 50.000 -25.000 50.000 -25.505 50.613 87.791 2.000
251 -20.000 50.000 -20.000 50.000 -20.107 50.458 97.000 1.650
252 -15.000 50.000 -15.000 50.000 -15.197 50.622 106.028 0.920
253 -10.000 50.000 -10.000 50.000 -9.958 50.260 115.658 1.092
254 -5.000 50.000 -5.000 50.000 -4.704 50.228 125.799 0.897
255 -0.000 50.000 -0.000 50.000 0.292 50.148 135.575 0.949
256 5.000 50.000 5.000 50.000 5.238 50.283 145.224 0.830
257 10.000 50.000 10.000 50.000 10.161 50.146 154.778 1.274
258 15.000 50.000 15.000 50.000 14.975 49.916 164.046 2.000
259 20.000 50.000 20.000 50.000 20.111 49.874 173.533 2.579
260 25.000 50.000 25.000 50.000 24.980 49.693 182.313 3.430
261 30.000 50.000 30.000 50.000 29.952 49.652 190.709 4.123
262 30.000 50.000 30.000 50.000 29.694 49.822 190.078 3.803
263 30.000 50.000 30.000 50.000 30.006 49.771 190.650 3.931
264 35.000 50.000 35.000 50.000 34.080 49.263 197.826 5.301
265 40.000 50.000 40.000 50.000 37.759 48.421 204.678 7.244


Вот пример, тут разделитель 'два пробела'. Есть вариант при котором первая сортировка будет по 7 столбцу.
0
0 / 0 / 0
Регистрация: 25.07.2013
Сообщений: 163
13.06.2017, 19:17  [ТС] 7
Ну что кто-нибудь подскажет?
0
.NET senior
440 / 358 / 137
Регистрация: 23.09.2016
Сообщений: 980
13.06.2017, 23:18 8
ZaStalim, а Вы что-нибудь пробовали за пять дней самостоятельно написать в рамках задачи?

Добавлено через 19 минут
Примерная реализация в моём представлении: последовательно читаем из исходного файла строки - например, с помощью File.ReadLines, потом каждую строку разбираем на части любым удобным способом - хоть через Split, хоть вручную - и заполняем полученными данными объект некого класса, который будет содержать исходную строку и значения нужных для сортировки столбцов, преобразованные к типу double. Потом сортируете эту коллекцию так, как Вам нужно, и уже из отсортированной коллекции записываете строки в выходной файл. Как-то так.
0
0 / 0 / 0
Регистрация: 25.07.2013
Сообщений: 163
14.06.2017, 19:47  [ТС] 9
Если честно то задача более широкая чем я описал и это на первом этапе. Поэтому ввиду нехватки времени и того что не прям чтобы сильно горело пока что продумываю структуру программы. Ниже попробую описать полностью текущую задачу:

1) отсортировать массив по 7, а затем по 2 столбцу

2) найти все неправильные данные, например строки в которых второй элемент равен ну пусть будет -100 и с учётом определенных условий заменить его на правильное число

3) найти повторяющиеся строки и.е. те у которых со 2 по 5 столбец одинаковые числа и в зависимости от значений 8 и 9 столбца у этих строк либо оставить их для ручного анализа, либо автоматически удалять оставляю только одну.

Я само собой никого не заставляю помогать, просто если у кого есть ещё идеи прошу поделиться

Добавлено через 3 часа 33 минуты
И как я писал выше игнорировать 1 и последнюю строку
0
14.06.2017, 19:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2017, 19:47
Помогаю со студенческими работами здесь

В текстовом файле FileIn записано несколько строк
В текстовом файле FileIn записано несколько строк, содержащие различные символы и целые числа,...

Найти количество повторяющихся строк (элементов) в текстовом файле
Прошу помощи у экспертов. Нужно подсчитать из текстового файла количество всех повторяющихся...

Файл: Сколько в строк в текстовом файле, не содержащих гласных букв?
Здравствуйте, помогите пожалуйста с данной задачей: Дан текстовый файл. Сколько в нем строк, не...

Сортировка строк в текстовом файле
В файле в одной строке записаны две переменные: имя, баллы. Можно ли отсортировать строки по баллам...

Сортировка строк в текстовом файле по дате
Здравствуйте, как можно сделать сортировку по дате рождения вида дд-мм-гг, догадываюсь, что нужно...

Программа для поиска соответствие строк, учитывая регистр, в текстовом файле с 10000+ строк
Уважаемые форумчане, прошу у вас помощи я неделю в поисках. Мне нужна программа или код для поиска...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru