С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/40: Рейтинг темы: голосов - 40, средняя оценка - 4.90
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685

Сортировать записи в файле в порядке возрастания номера телефона

19.11.2017, 14:36. Показов 7479. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, ребята помогите с кодом, необходимо написать программу которая сортирует записи в файле в порядке возрастания номера телефона. В текстовом файле находятся записи о номерах телефонов. В каждой строке записана информация: номер телефона, ФИО, адрес.

Не могу понять как считать с файла все данные построчно с пробелами между словами и цифрами.
Буду благодарен за ваш код с разъяснениями...


П.с.
Помогите Христа ради....

Добавлено через 25 минут
i
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
nt main()
{
    setlocale(LC_ALL, "Russian");
    
    string s;
    char t;
    ifstream fin("fone_book.txt");
    if (!fin.is_open())
    {
        cout << "Файл не найден!" << endl;
    }
    while (true)
    {
        fin.get(t);
        if (fin.eof()) break;
        s.append(1, t);
    }
    cout << s << endl;
        fin.close();
написал такой бред а вот сортировку не пойму
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.11.2017, 14:36
Ответы с готовыми решениями:

сгенерировать квадратную матрицу n*n и сортировать ее в порядке возрастания
подскажите кто знает.я уже запарился.язык С надо сгенерировать квадратную матрицу n*n и сортировать ее в порядке возрастания. у меня...

Найти номера одинаковых элементов и вывести эти номера в порядке возрастания
Дан целочисленный массив размера N, содержащий ровно два одинаковых элемента. Найти номера одинаковых элементов и вывести эти номера в...

Найти номера одинаковых элементов массива и вывести эти номера в порядке возрастания
Дан целочисленный массив размера N, содержащий ровно два одинаковых элемента. Найти номера одинаковых элементов и вывести эти номера в...

14
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.11.2017, 15:52
Куда считать? У тебя же нет ничего.
Цитата Сообщение от Esso11 Посмотреть сообщение
как считать с файла все данные построчно
С помощью >>.
1
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
19.11.2017, 15:56  [ТС]
nmcf, я забыл добавить файл с которого считывать данные, мне вот интересно как вот с строки данных где написаны числа и знаки отсортировать файл по первым двум числам в начале каждой строки
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.11.2017, 16:09
Считываешь в массив, сортируешь, записываешь назад.
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
19.11.2017, 16:12  [ТС]
nmcf, а как мне считать со строки в массив данные?

Добавлено через 51 секунду
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
19.11.2017, 16:18
Цитата Сообщение от nmcf Посмотреть сообщение
С помощью >>
построчно считать не получится (а только по словам)
построчно читает метод getline.
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
19.11.2017, 16:20  [ТС]
zss, вывел я себе на экран 5 записей где указан к примеру:
88-56-71 Иван Иванович Охлобыстин ул.Пушкина дом 1, кв 5
55-61-70 Максим Викторович Аверин бул. Красных Богатырей дом 7, кв 44
99-57-05 Никита Борисович Джигурда ул. Строителей дом 4, кв 89
33-24-19 Дмитрий Владимирович Нагиев пр. Центральный дом 9, кв 99
11-53-44 Дарья Дмитриевна Сагалова ул. Заречная дом 4б

как мне отсортировать эти данные по номерам телефонов в начале строки
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
19.11.2017, 16:27
Т.к. номер телефона указан в начале строки, то читайте записи в ассоциативный массив string, он сам отсортируется:
C++
1
2
3
4
5
6
7
srting s;
set<string> vs;
ifstream ff("file.dat");
while( getline(ff,s) )
   vs.insert(s);
for(set<string>::iterator p=vs.begin;p!=vs.end();++p)
   cout<<*p<<endl;
В целом получится так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <fstream>
#include <string>
#include <set>
#include <clocale>
using namespace std;
 
int main() 
{ 
    setlocale(LC_ALL,"Rus");
    string s;
    set<string> vs;
    ifstream ff("Text.dat");
    if(ff)
    {
        while( getline(ff,s) )
            vs.insert(s);
        for(set<string>::iterator p=vs.begin();p!=vs.end();++p)
            cout<<*p<<endl;
    }
    system("pause");
    return 0; 
}
Результат:
11-53-44 Дарья Дмитриевна Сагалова ул. Заречная дом 4б
33-24-19 Дмитрий Владимирович Нагиев пр. Центральный дом 9, кв 99
55-61-70 Максим Викторович Аверин бул. Красных Богатырей дом 7, кв 44
88-56-71 Иван Иванович Охлобыстин ул.Пушкина дом 1, кв 5
99-57-05 Никита Борисович Джигурда ул. Строителей дом 4, кв 89
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
19.11.2017, 16:31  [ТС]
zss, а что в коде означает set<string> vs;
vs.insert(s);
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.11.2017, 16:34
Цитата Сообщение от zss Посмотреть сообщение
построчно считать не получится
Ну при таком заполнении да. Надо же сразу показывать. Всё равно можно 4 >> и getline() остатка.
1
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
19.11.2017, 16:39
Ассоциативные массивы set из библиотеки STL хранят отсортированные данные в одном экземпляре.
Метод insert вставляет элемент в этот массив.

Если не хочется использовать set, то создайте массив строк достаточного размера, а потом его отсортируйте по алфавиту
(+сделал вывод результата в файл):
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
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
#include <clocale>
using namespace std;
 
int main() 
{ 
    setlocale(LC_ALL,"Rus");
    string vs[100];
    ifstream ff("Text.dat");
    ofstream res("Textsort.dat");
    int n=0;
    if(ff)
    {
        while( getline(ff,vs[n++]) && n<100 )
            ; // пустой оператор
        sort(vs,vs+n);
        for(int j=0;j<n;j++)
            res<<vs[j]<<endl;
        res.close();
    }
    system("pause");
    return 0; 
}
2
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
19.11.2017, 16:46  [ТС]
zss, Уважаемый гражданин код супер только почему то у меня вывелся 2 раза мой список от большего к меньшему и наоборот от меньшего к большему

Добавлено через 51 секунду
zss, ааа я такое еще не проходил.... понял


Нет пардон я туплю се вывелось правильно, а есть еще какой то способ решения если не использовать библиотеку set

Добавлено через 3 минуты
zss, а можно как то создать массив строк не указывая размер я же не всегда знаю сколько елементов будет храниться в строке

Добавлено через 1 минуту
nmcf, а можно Вашу мысль услышать как надо было заполнить ...?
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
19.11.2017, 16:52
Цитата Сообщение от Esso11 Посмотреть сообщение
как то создать массив строк не указывая размер
Прочтите сначала файл в одну и ту же строку и посчитайте n.
Потом создайте массив динамически
C++
1
string* vs=new string[n];
Перемотайте файл на начало и повторите чтение в массив.
0
19.11.2017, 16:53

Не по теме:

Цитата Сообщение от Esso11 Посмотреть сообщение
как надо было заполнить
Я не об этом. Пример содержимого надо было в первом сообщении дать.

0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
19.11.2017, 17:00  [ТС]
nmcf, прости пожалуйста, не подумал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.11.2017, 17:00
Помогаю со студенческими работами здесь

Сортировать элементы, расположенные до первого отрицательного элемента в порядке возрастания элементов
Задача.Дано одномерный массив.Сортировать элементы, расположенные до первого отрицательного элемента в порядке возрастания элементов. ...

Сортировать элементы, расположенные до первого отрицательного элемента в порядке возрастания элементов
Задача.Дано одномерный массив.Сортировать элементы, расположенные до первого отрицательного элемента в порядке возрастания элементов. ...

Сортировать элементы, расположенные до первого отрицательного элемента в порядке возрастания элементов
Хелп плиз

С помощью алгоритма вставки, нужно сортировать парные числа массива в порядке возрастания
Приветствую! Нужно написать программу которая из текстового файла будет считывать в массив числа (например, 2 6 4 13 15 29). После...

Сортировать все названия в алфавитном порядке в .txt файле
Помогите пожалуйста) fstream file1; file1.open(&quot;Dimas.txt&quot;,fstream::in | fstream::out); if(!file1.is_open()) { ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru