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

Работа с библиотекой STL

06.01.2018, 01:15. Показов 701. Ответов 2
Метки нет (Все метки)

Вроде задание несложное, но не могу понять в чем проблема
Само задание: В текстовом файле сохраняется информация про абонентов библиотеки университета: ФИО, кафедра, количество книг взятых абонентом. Написать программу с использованием собственных классов и классов стандартной библиотеки STL, которая определяла бы название кафедры за которой числится наибольшее количество книг

abonent.h
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
#pragma once
#include <string>
using namespace std;
 
class abonent {
public:
    wstring surname;
    wstring name;
    wstring mid_name;
    wstring kafedra;
    wstring books;
    abonent();
    abonent(wstring, wstring, wstring, wstring, wstring);
};
 
 
abonent::abonent() {
    name = L"";
    surname = L"";
    mid_name = L"";
    kafedra = L"";
    books = L"";
}
 
abonent::abonent(wstring s, wstring n, wstring m, wstring k, wstring b):surname(s), name(n), mid_name(m), kafedra(k), books(b) {}
main.cpp
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
48
49
50
#include "abonent.h"
#include <iostream>
#include <fstream>
#include <vector>
#include <conio.h>
#include <locale>
 
void main() {
    locale::global(locale(""));
    wcout.imbue(locale(".1251"));
    wcin.imbue(locale(".866"));
 
    vector <wstring> kafedr;
    vector <abonent> stud;
    vector <abonent> st;
    abonent temp;
    int k;
    
    wifstream file("books.txt");
    while (!file.eof()) {
        file >> temp.surname;
        file >> temp.name;
        file >> temp.mid_name;
        file >> temp.kafedra;
        file >> temp.books;
        stud.push_back(temp);
    }
 
    for (int i = 0; i < kafedr.size(); i++)
        for (int j = 0; j < stud.size(); j++)
        {
            if (stud[i].kafedra == kafedr[i])
            {
                st[i].kafedra = kafedr[i];
                st[i].books += stud[i].books;
                
            }
            int max = 0;
            for (int i = 0; i<stoi(st[i].kafedra); i++)
                if (stoi(st[i].books) > max)
                {
                    max += stoi(st[i].books);
                    k = i;
                }
        }
    
    wcout << st[k].kafedra;
    system("pause");
    
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.01.2018, 01:15
Ответы с готовыми решениями:

Работа с библиотекой STL, контейнер map
Ввожу с экрана имя и номер телефона несколько раз, но for_each почему-то выводит на экран только...

Как быть с библиотекой STL
Всем привет!!! У меня проблема с библиотекой STL может кто поможет её решить. #include&lt;list&gt; ...

задача с stl библиотекой и файлами
В текстовом файле input.txt записаны слова – по одному в строке. Необходимо разбить слова на группы...

Работа с библиотекой math.h
Задача звучит так: найти f(x) при x=0.7 и остаток от деления f(x) на g(x). Среда Borland C++ 3.1 ...

2
0 / 0 / 0
Регистрация: 16.03.2017
Сообщений: 13
07.01.2018, 17:16  [ТС] 2
Так кто-то сможет помочь?
0
2477 / 1904 / 951
Регистрация: 21.12.2010
Сообщений: 3,473
Записей в блоге: 10
07.01.2018, 18:18 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <string>
#include <iostream>
#include <fstream>
#include <locale>
#include <unordered_map>
#include <algorithm>
#include <cstdlib>
using namespace std;
 
class abonent 
{
public:
    wstring surname;
    wstring name;
    wstring mid_name;
    wstring kafedra;
    int books;
    abonent();
    abonent(wstring, wstring, wstring, wstring, int);
};
 
abonent::abonent() {}
 
abonent::abonent(wstring s, wstring n, wstring m, wstring k, int b) :surname(s), name(n), mid_name(m), kafedra(k), books(b) {}
 
int main() 
{
    locale::global(locale(""));
    wcout.imbue(locale(".1251"));
    wcin.imbue(locale(".866"));
        
    wifstream file("in.txt");
    abonent temp;
    std::unordered_map<std::wstring, int> mbook;
    while (!file.eof()) 
    {
        file >> temp.surname;
        file >> temp.name;
        file >> temp.mid_name;
        file >> temp.kafedra;
        file >> temp.books;
 
        if(!file.fail())
            mbook[temp.kafedra] += temp.books;
        else 
            break;
    }
 
    auto it = std::max_element(mbook.begin(), mbook.end(), [](auto const& v1, auto const& v2) {return v1.second < v2.second; });
    if (it != mbook.end())
    {
        wcout << it->first << "  " << it->second << std::endl;
    }
    
    system("pause");
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2018, 18:18
Помогаю со студенческими работами здесь

Работа с библиотекой <fstream>
Задание: Задан массив в файле в котором указана размерность и сам массив 4 * 4, нужно считать эту...

Работа с библиотекой MPIR
Всем привет. Начинаю осваивать С++, опыт нулевой... Хочу сделать програмку для перевода из...

Работа со стандартной библиотекой List.H
Помогите подключить стандартную библиотеку шаблонов List.H (с++ 3.1 для дос) и создать объект для...

Работа со статической lib библиотекой
Здравствуйте. Собрал в VS первую библиотеку. Скомпилировал. Появился файл .lib в папке debug. И я...


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

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

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