Форум программистов, компьютерный форум CyberForum.ru

Выбор информации с <vector> в переменную. - C++

Восстановить пароль Регистрация
 
Usefur
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 74
02.06.2011, 20:01     Выбор информации с <vector> в переменную. #1
Есть класс, данные его обьектов записаны в векторе:
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
class Library:public Book{
 
public:
    Library(){}
    ~Library(){}
 
    string GetChutach(){return libChutach;}
    int GetDay(){ return libDay;}
    int GetMounth(){ return libMounth;}
    int GetYear(){ return libYear;}
        
    void SetChutach(string chut){ libChutach=chut;}
    void SetDay(int days) {libDay=days;}
    void SetMounth(int mis) {libMounth=mis;}
    void SetYear(int years) {libYear=years;}
 
            void Print();
 
private:
    string libChutach;
    int libDay;
    int libMounth;
    int libYear;            
};
C++
1
vector <Library> lib;
Мне нужно изъять данные которые записаны в векторе, и записать в переменные например, чтобы потом можно было ими манипулировать. А именно, нужно изъять GetDay, GetMounth, GetYear.
Программа об библиотеке, и мне нужно найти количество должников, которые держат книгу дольше месяца.
Я попробовал сделать так:
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
void Debtors(){system("cls");
     int d, y, m ,zd,zv,q;
     int j=0;
     int k=0;
     int z=lib[k].GetDay();
     int x=lib[k].GetMounth();
     int c=lib[k].GetYear();
     cout<<Rus("Введiть Дату|Мiсяць|Рiк сьогоднiшнього дня : \n");
     cout<<Rus("Введiть день:");
     cin>>d;
     cout<<Rus("Введiть мiсяць:");
     cin>>m;
     cout<<Rus("Введiть рiк:");
     cin>>y;
     cout<<"\n";
     cout<<Rus("Боржники (читачi, якi тримають книгу бiльше мiсяця) :")<<" \n";
     for(int n=0; n<lib.size();n++)
     {
     zd=((m*31)+d);
     zv=((x*31)+z);
     q=zd-zv;
     if(q>=31)
     {
          cout<<Rus("\n- Запис # ")<<n+1<<" \n";
          lib[n].Print();
      }
     n++;
     j++;
     }
     cout<<"\n";
     cout<<Rus("Кiлькiсть читачiв - боржникiв станом на сьогоднiшнiй день = ")<< j << "\n";
     cout<<"\n";
     cout<<Rus("__________Готово!__________\n");           
}
Но считывает из вектора только 1 значение как я понял, и выводит на экран каждое второе.
Может есть другой способ?...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.06.2011, 20:12     Выбор информации с <vector> в переменную. #2
У тебя инкремент дважды указан. 28 строку удали.

Добавлено через 15 секунд
*27 строку
Usefur
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 74
02.06.2011, 20:26  [ТС]     Выбор информации с <vector> в переменную. #3
Удалил.
Но считывает только 1 элемент.
И если он удовлетворяет условие if то выводит все, если нет - ничего.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.06.2011, 20:34     Выбор информации с <vector> в переменную. #4
Тогда изучай, когда выполняется условие "if(q>=31)".
Usefur
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 74
02.06.2011, 21:21  [ТС]     Выбор информации с <vector> в переменную. #5
Меня больше интерисует каким образом можно считать все данные с вектора?
Дальше я уже разберусь..

Добавлено через 35 минут
Вроде разобрался.
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
void Debtors(){system("cls");
     int d, y, m ,zd,zv,q;
     int j=0;
     cout<<Rus("Введiть Дату|Мiсяць|Рiк сьогоднiшнього дня : \n");
     cout<<Rus("Введiть день:");
     cin>>d;
     cout<<Rus("Введiть мiсяць:");
     cin>>m;
     cout<<Rus("Введiть рiк:");
     cin>>y;
     cout<<"\n";
     cout<<Rus("Боржники (читачi, якi тримають книгу бiльше мiсяця) :")<<" \n";
     for(int n=0; n<lib.size();n++)
     {
     int k=0;
     int z=lib[n].GetDay();
     int x=lib[n].GetMounth();
     int c=lib[n].GetYear();
     zd=((m*31)+d);
     zv=((x*31)+z);
     q=zd-zv;
     cout<<"zd="<<zd<<"\n";
     cout<<"zv="<<zv<<"\n";
     cout<<"q="<<q<<"\n";
     if(q>=31)
     {
          cout<<Rus("\n- Запис # ")<<n+1<<" \n";
          lib[n].Print();
      }
     j++;
     }
     cout<<"\n";
     cout<<Rus("Кiлькiсть читачiв - боржникiв станом на сьогоднiшнiй день = ")<< j << "\n";
     cout<<"\n";
     cout<<Rus("__________Готово!__________\n");           
}
Требуется маленькая доработка но вроде работает.

Иногда решение прямо перед носом, а ты этого не видишь.
Yandex
Объявления
02.06.2011, 21:21     Выбор информации с <vector> в переменную.
Ответ Создать тему
Опции темы

Текущее время: 09:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru