Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/20: Рейтинг темы: голосов - 20, средняя оценка - 4.80
0 / 1 / 0
Регистрация: 07.05.2020
Сообщений: 129

Не работает считка с файла

07.05.2020, 19:15. Показов 4036. Ответов 28
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
У файле находятся данные: фамилия абитуриента, год поступление и номер школы распределены через пробелы. Файл in.txt:
Hrytsenko 1975 1
Morozenko 1980 7
Valuev 1976 9
Grinchenko 1983 1
Fesiv 1974 32
Todorenko 1982 7
Dudchak 2000 1
Litvinchuk 1993 32
Fasenko 1995 9
Karpuk 2005 32
Kovalenko 2003 9
Matviychuk 2001 1
Нужно считать с файла данные у вектор структур (вначале указывать номер школы, затем число абитуриентов, затем фамилию).
Для каждой школы вывести общее число абитуриентов за все годы и фамилию первого из абитуриентов этой школы, содержащихся в исходном наборе данных. Сведения о каждой школе выводить на новой строке и упорядочивать по возрастанию номеров школ. (это в принципе можно сделать с помощью map, в этом нет проблемы). Проблема в том что я не могу правильно считать с файла данные у вектор структур и как можно вывести имя именно первого абитуриента школы. Вот какие-то наброски кода. Подскажите, пожалуйста что можно добавить или изменить.
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
 
struct data {
    string name;
    int year;
    int school;
    data (string n, int y, int s) : name(n), year(y), school(s)
    {}
 
};
int main()
{
    std::ifstream file("in.txt");
 
    if (file.is_open()) // вызов метода is_open()
        cout << "File is opened\n\n" << endl;
    else
    {
        cout << "File isn't opened!\n\n" << endl;
        return -1;
    }
 
    std::vector <data> new_data;
    string name;
    int year;
    int school;
    ifstream in("in.txt");
    if(in.is_open())
    {
        while (in >> name >> year >> school)
        {
            new_data.push_back(data(name, year, school));
        }
}
in.close();
 
for (int i = 0; i < new_data.size(); i++)
{
    std::cout << new_data[i].name << " - " << new_data[i].year << " - " << new_data[i].school << std::endl;
}
 
 
return 0;
}
Добавлено через 1 час 3 минуты
Сумел считать, но программа не видеть конца файла, плюс считал не у структуру.

C++
1
2
3
4
5
6
7
8
9
10
while (!in.eof)
    {
        st:
        in >> name;
        in >> year;
        in >> school;
        cout << name << " " << year << " " << school << "\n";
        if (!in.eof()) break; 
        goto st;
    }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.05.2020, 19:15
Ответы с готовыми решениями:

считка массива из файла
Есть 1 stringgrid и 1массив a записываю в файл я вот так int m; for (int i=0;i&lt;5;i++) for (int j=0;j&lt;5;j++) m=rand() %5; ...

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

dosbox и считка сектора
народ вроде все правильно написал, почему не читает сектор? мб dosbox глючит? .model tiny .data FT db 512 dup(0) del dw 0 .code...

28
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
07.05.2020, 21:32
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Parasha Посмотреть сообщение
ну я вот например хочу отсортировать таким образом: map<int, pair<int, string>>, где сначала идет номер школы, потом количество, а потом именно фамилия первого абитуриента. Как мне быть с этой фамилией, если по году именно надо получить?
Сделай map<int, std::tuple<int, int, string>> - <количество, год, фамилия> и по ходу ищи минимальное значение года
0
0 / 1 / 0
Регистрация: 07.05.2020
Сообщений: 129
07.05.2020, 22:01  [ТС]
oleg-m1973, а можно как-то без кортежов это сделать, никогда с ними не работал, не получается все равно с минимальным годом
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
07.05.2020, 22:05
Цитата Сообщение от Parasha Посмотреть сообщение
oleg-m1973, а можно как-то без кортежов это сделать, никогда с ними не работал, не получается все равно с минимальным годом
C++
1
2
3
4
5
6
7
8
9
10
11
    std::map<int, std::tuple<size_t, int, std::string>> schools;
    for (auto &item : new_data)
    {
        auto &scool = schools[item.school];
        ++std::get<0>(scool);
        if (std::get<1>(scool) == 0 || item.year < std::get<1>(scool))
        {
            std::get<1>(scool) = item.year;
            std::get<2>(scool) = item.name;
        }
    }
0
0 / 1 / 0
Регистрация: 07.05.2020
Сообщений: 129
07.05.2020, 22:18  [ТС]
oleg-m1973, а как после этого еще как результат вывести номер школы, к-ство абитуриентов и фамилию именно того первого абитуриента?
0
0 / 1 / 0
Регистрация: 07.05.2020
Сообщений: 129
07.05.2020, 22:21  [ТС]
Вот такое вот получается
Миниатюры
Не работает считка с файла  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
07.05.2020, 22:27
Цитата Сообщение от Parasha Посмотреть сообщение
oleg-m1973, а как после этого еще как результат вывести номер школы, к-ство абитуриентов и фамилию именно того первого абитуриента?
C++
1
2
    for (auto &item : schools)
        std::cout << item.first << ": " << std::get<0>(item.second) << ", " << std::get<2>(item.second) << std::endl;
0
0 / 1 / 0
Регистрация: 07.05.2020
Сообщений: 129
07.05.2020, 22:31  [ТС]
oleg-m1973, а можете кратко по коду объяснить что-да как, там где тапл, например условие иф чтобы я уже полностью с этим разобрался
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
08.05.2020, 10:15
Лучший ответ Сообщение было отмечено Parasha как решение

Решение

Цитата Сообщение от Parasha Посмотреть сообщение
oleg-m1973, а можете кратко по коду объяснить что-да как, там где тапл, например условие иф чтобы я уже полностью с этим разобрался
Это поиск минимального элемента. Если новое значение года меньше минимального, то делаем новое минимальным и запоминаем фамилию
1
0 / 1 / 0
Регистрация: 07.05.2020
Сообщений: 129
11.05.2020, 23:34  [ТС]
oleg-m1973, спасибо что помогли разобраться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.05.2020, 23:34

Считка пакетов с сокета без очереди
Доброго времени суток. При инициализации сокета, все пакеты которые он принимает кладутся в очередь, и вытаскивать приходится тоже в...

Код с пробелами работает в командной строке, но не работает из bat-файла
Помогите как откоректировать bat файл, чтобы он работал c: cd c:\Program Files (x86)\XMOS\xTIMEcomposer\Community_14.3.3 ...

[JSP] JS скрипт из файла не работает, а если вручную писать - работает
У меня в 4 файлах нужен один и тот же скрипт, я и его вынес в отдельный файл appendLanguageParamToUrl.js function appendParameters() {...

Друзья! не работает код с версией файла в 2003 офисе, на 2010 все работает, суть: копирование из закрытой книги
Sub Zagruzka_dannyh() UserForm1.Label117.Visible = False UserForm1.Image48.Visible = False Location = &quot;T:\Rik\PS\ЛПА\Выдача...

Друзья! не работает код с версией файла в 2003 офисе, на 2010 все работает, суть: копирование из закрытой книги
Sub Zagruzka_dannyh() UserForm1.Label117.Visible = False UserForm1.Image48.Visible = False Location = &quot;T:\Rik\PS\ЛПА\Выдача...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru