Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 4
1

Задача о библиотеке

23.12.2014, 18:30. Показов 1797. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В библиотеке для каждого заказывающего книгу читателя заполняется карточка: фамилия, дата заказа, дата выдачи книги. Определить: 1) самый маленький срок, за который нашли книгу; 2) сколько заказов было не удовлетворено; 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <iostream>
#include <climits> //for INT_MAX
#include <map>
#include <string>
using namespace std;
 
struct Date {
    int d;
    int m;
    int y;
};
 
 
int isLeapYear(int n) { //високосный ли год
    int k = 0;
    if (n/4 == 0) k++;
    if (n/100 == 0) k--;
    if (n/400 == 0) k++;
    return k;
}
    
int daysInMonth(int year, int month) {//возвращает количество дней в месяцe
     switch (month) {
         case 1: return 31;
         case 2: if(isLeapYear(year)) return 29;
                 else return 28;
         case 3: return 31;
         case 4: return 30;
         case 5: return 31;
         case 6: return 30;
         case 7: return 31;
         case 8: return 31;
         case 9: return 30;
         case 10: return 31;
         case 11: return 30;
         case 12: return 31;
     }
}
         
 
int operator-(Date &d1, Date &d2) {
    int d1days = d1.y * 365 + d1.y/4 - d1.y/100 + d1.y/400 + d1.d;
    for (int i = 1; i <= d1.m; ++i)
        d1days += daysInMonth(d1.y,i);
 
    int d2days = d2.y * 365 + d2.y/4 - d2.y/100 + d2.y/400 + d2.d;
    for (int i = 1; i <= d2.m; ++i)
        d1days += daysInMonth(d2.y,i);
    
    return d1days - d2days;
}
    
 
 
istream& operator>>(istream & is, Date & dt) {//переопределяем оператор ввода, чтоб можно было сразу из cin считывать в экземпляр Date
    is >> dt.y >> dt.m >> dt.d;
}
 
struct Card {
    string surname;
    Date dateOfOrder;
    Date dateOfOutput;
};
 
int main() {
    Card temp;
    int n;
    cout << "Enter number of cards: ";
    cin >> n;
    int SmallestPeriod = INT_MAX;
    int NeUd = 0;
    map<string,int> readers;
    for (int i = 0; i< n; ++i)  {
        cout << "Enter surname(one word): ";
        cin >> temp.surname;
        cout << "Enter date of order(yyyy mm dd): ";
        cin >> temp.dateOfOrder;
        cout << "Enter date of book's output(yyyy mm dd) \nor 0 0 0, if order was not satisfied: ";
        cin >> temp.dateOfOutput;
 
        cin.get();
        if (temp.dateOfOutput.y ==  0) 
            NeUd++;
        else {
            int t = temp.dateOfOutput-temp.dateOfOrder;
            if (SmallestPeriod > t ) {
                SmallestPeriod = t;
            }
        }
        readers[temp.surname]++; //массив хранит пары (фамилия, количество Прочитанных Книг)
                
    }
 
    cout << "\n\n";
    cout << "1: " << SmallestPeriod << "days \n";
    cout << "2: " << NeUd << " orders not satisfied\n";
    
    map<string,int>::iterator it;
    string str;
    int max = 0;
    for (it = readers.begin(); it != readers.end(); ++it) {
        if (it->second > max) {
            max = it->second;
            str = it->first;
        }
    }
    cout << "3: " << str << " has taken " << max << " books \n";
}
Ругается на эту строчку, не могу понять в чем дело..
C++
1
2
3
istream& operator>>(istream & is, Date & dt) {//переопределяем оператор ввода, чтоб можно было сразу из cin считывать в экземпляр Date
    is >> dt.y >> dt.m >> dt.d;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2014, 18:30
Ответы с готовыми решениями:

Логическая задача про девочек в библиотеке.
Здравствуйте. Помогите пожалуйста с задачей: Меня хватило только на домены и предикаты, что же...

Задача: В библиотеке последний четверг каждого месяца - санитарный день
В библиотеке последний четверг каждого месяца - санитарный день. Дано число, обозначающее номер...

Задача "В библиотеке не хватает пяти книг." на Visual Prolog
Есть задача: В библиотеке не хватает пяти книг: - томика Жюля Верна; - романа Чарлза Диккенса;...

о библиотеке
очень много наслышан о данной библиотеке, читал что пишут в вики. Но не пойму все 2 вещи. В чем...

0
23.12.2014, 18:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2014, 18:30
Помогаю со студенческими работами здесь

Информация о библиотеке с++
Решил начать изучать с++ и для закрепления полученных знаний писать программу. Раньше изучал...

книги в библиотеке
Задание: Составить программу, которая содержит текущую информацию о книгах в библиотеке. Сведения...

О системной библиотеке.
Всем привет!Появилась проблема-при установке скаченной программы появляется надпись что системная...

Исключения в библиотеке
Всем привет. создаю свою библиотеку. в ней есть класс. в этом классе должно быть 2 массива...


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

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