Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 03.02.2017
Сообщений: 33

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

09.02.2018, 21:49. Показов 6629. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В файле в одной строке записаны две переменные: имя, баллы. Можно ли отсортировать строки по баллам (строка начинается с баллов) в порядке убывания?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.02.2018, 21:49
Ответы с готовыми решениями:

Сортировка чисел в текстовом файле
Здравствуйте! У меня такая задача:" Прочитать из текстового файла произвольную последовательность из 10 целых чисел, отсортировать его и...

Разбиение строк на слова в текстовом файле
Здравствуйте. Помогите пожалуйста с программой. "Дан текстовый файл. Необходимо считать из файла строки, разбить строки на слова....

Подсчитать количество пустых строк в текстовом файле
Помогите сделать эту программу, очень нужно. Завтра сдавать=(тПодсчитать количество пустых строк в текстовом файле. Вывести номера этих...

30
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
11.02.2018, 02:52
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от SlavaSokolov Посмотреть сообщение
У вас тупо стоит в файле переход на новую строку, а она пуста. После последнего имени.
Убрал, скомпилировал новую версию, теперь пишет file open! и всё на том, больше никакого движения.
1
174 / 134 / 105
Регистрация: 14.04.2016
Сообщений: 719
11.02.2018, 03:04
Цитата Сообщение от easybudda Посмотреть сообщение
Убрал, скомпилировал новую версию, теперь пишет file open! и всё на том, больше никакого движения.
Шок. У меня всё работает... Короче мой файл, я спать.
Вложения
Тип файла: txt X.txt (157 байт, 5 просмотров)
0
174 / 134 / 105
Регистрация: 14.04.2016
Сообщений: 719
11.02.2018, 03:07
Screen
Миниатюры
Сортировка строк в текстовом файле  
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
11.02.2018, 03:23
Цитата Сообщение от SlavaSokolov Посмотреть сообщение
Шок. У меня всё работает...
CentOS + gcc

Win 7 + gcc

Win 7 + cl
1
174 / 134 / 105
Регистрация: 14.04.2016
Сообщений: 719
11.02.2018, 13:59
easybudda, короче я не знаю. Это не я здесь предоставляю помощь в решении задач людям за пирожные. У меня всё работает. Задача решается в 90 строк без использования всяких доп.библиотек.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
12.02.2018, 18:33
Цитата Сообщение от SlavaSokolov Посмотреть сообщение
короче я не знаю.
Я догадываюсь: это та самая причина, по которой не рекомендуют с текстовыми файлами использовать fseek(), ftell() и иже с ними...

Цитата Сообщение от SlavaSokolov Посмотреть сообщение
Задача решается в 90 строк без использования всяких доп.библиотек.
Адски запутанным алгоритмом, который к тому же ещё и работает ингода, если повезёт. И по-моему Вы не так поняли: короткий код сам по себе не самоцель, он просто таким получается. Если хочется сделать покороче наплевав на производительность, то можно и в 3 раза короче вашего смелого решения:
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
#include <stdio.h>
#include <stdlib.h>
#include <glib.h>
 
#define FILE_NAME "scores.txt"
 
int cmp_func(const void * a, const void * b) {
    return atoi((char*)b) - atoi((char*)a);
}
 
int main(void) {
    FILE * fin = fopen(FILE_NAME, "r");
    if ( ! fin ) {
        fprintf(stderr, "Can't open file %s for input!\n", FILE_NAME);
        return 1;
    }
    
    char buf[BUFSIZ];
    GList * list = NULL;
    
    while ( fgets(buf, BUFSIZ, fin) )
        list = g_list_insert_sorted(list, g_strdup(buf), cmp_func);
    
    fclose(fin);
    
    for ( GList * iter = list; iter; iter = g_list_next(iter) )
        printf("%s", (char*)(iter->data));
    
    g_list_free_full(list, g_free);
    
    return 0;
}
Code
1
2
3
4
5
6
7
8
[andrew@andrew files]$ gcc -Wall -std=c99 sort_scores.c $(pkg-config --cflags --libs glib-2.0)
[andrew@andrew files]$ ./a.out 
54 Sigizmund
46 Aftandil
46 Zina
36 Vasya
14 Petya
[andrew@andrew files]$
1
174 / 134 / 105
Регистрация: 14.04.2016
Сообщений: 719
12.02.2018, 18:46
Цитата Сообщение от easybudda Посмотреть сообщение
по которой не рекомендуют с текстовыми файлами использовать fseek(), ftell() и иже с ними...
Вот про это я никогда ничего не слышал и не знал... Извиняюсь перед вами, если fseek() лучше не использовать. Ща загуглим почему.
Цитата Сообщение от easybudda Посмотреть сообщение
Адски запутанным алгоритмом,
Там же вроде всё очень просто. Мы строим "карту" начала строк. И сортируем её после этого. Что сложного то?
Цитата Сообщение от easybudda Посмотреть сообщение
смелого решения:
Вот тут я не понял, извините.

Ну вы опять юзаете чёрт знает какие-то библиотеки.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
12.02.2018, 18:58
Цитата Сообщение от easybudda Посмотреть сообщение
не рекомендуют с текстовыми файлами использовать fseek(), ftell() и иже с ними...
Это я сказанул. На самом деле не так немного: fseek() в текстовых файлах можно применять в трёх случаях: в самое начало файла, в самый конец файла и на позицию, возвращённую ftell().
1
174 / 134 / 105
Регистрация: 14.04.2016
Сообщений: 719
12.02.2018, 19:16
Цитата Сообщение от easybudda Посмотреть сообщение
Это я сказанул. На самом деле не так немного: fseek() в текстовых файлах можно применять в трёх случаях: в самое начало файла, в самый конец файла и на позицию, возвращённую ftell().
У меня только один вопрос. Почему?
Цитата Сообщение от easybudda Посмотреть сообщение
ftell().
Зачем перемещать указатель туда, где он стоит?
Функция ftell возвращает значение указателя текущего положения потока. Для бинарных потоков, возвращается значение соответствующее количеству байт от начала файла.

Не по теме:

Вот типичный пример библиотеки, которая сделана непонятно кем, непонятно зачем. Работает всё через з**ницу.:wall:

0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
12.02.2018, 19:55
Цитата Сообщение от SlavaSokolov Посмотреть сообщение
Зачем перемещать указатель туда, где он стоит?
Позицию в файле можно запомнить сохранив значение, возвращённое ftell(), а не пытаться считать байты, как Вы это делаете.

Цитата Сообщение от SlavaSokolov Посмотреть сообщение
Вот типичный пример библиотеки, которая сделана непонятно кем, непонятно зачем. Работает всё через з**ницу.
Всё с ней в порядке.
1
174 / 134 / 105
Регистрация: 14.04.2016
Сообщений: 719
12.02.2018, 20:18
easybudda, всё понял, спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.02.2018, 20:18

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

Нужно дополнить код, чтобы программа считывала несколько строк в текстовом файле
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; int main() { setlocale(LC_CTYPE,...

В текстовом файле подсчитать количество строк, которые начинаются и заканчиваются одной и той же буквой
Не подскажете, в чем ошибка? :) Программа не правильно считает. #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include...

Сортировка строк в файле
Здравствуйте, никак не могу реализовать сортировку строк по алфавиту после после первого пробела Изначальный список: ЗАО Рога и Копыта...

Сортировка строк в текстовом файле
Здравствуйте, необходимо решить следующую задачу: Есть текстовый файл в котором данные хранятся в следующем виде -50.00 -50.00 ...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru