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

Класс note (поля: фамилия, имя; номер телефона; день рождения; определить методы доступа к этим полям и перегруженные операции извлечения и вставки) - C++

Восстановить пароль Регистрация
 
bestdimaaa
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 7
27.05.2013, 14:39     Класс note (поля: фамилия, имя; номер телефона; день рождения; определить методы доступа к этим полям и перегруженные операции извлечения и вставки) #1
Задача
Определить класс с именем NOTE, содержащий следующие поля:
фамилия, имя;
номер телефона;
день рождения (массив из трех чисел).
Определить методы доступа к этим полям и перегруженные операции извлечения
и вставки для объектов типа NOTE.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив, состоящий из восьми объектов типа
NOTE; записи должны быть упорядочены по трем первым цифрам номера
телефона;
вывод на экран информации о человеке, чья фамилия введена с клавиатуры;
если такого нет, выдать на дисплей соответствующее сообщение.

поиск не работает и не пойму почему( мб кто нить поможет допилить? остальное работает..

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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include <stdafx.h>
#include <iostream>
#include <iomanip>
using namespace std;
 
const int l_name = 30; int a[8], b[8];
class NOTE {
public:
    NOTE(int lName = 30);
    ~NOTE();
    int GetInt(istream&);           // Ввод целого числа
    int GetPay() const;
    int GetPay0() const;
    int GetPay1() const;
    int GetPay2() const;
    // Операция извлечения (ввода)
    friend istream& operator >>(istream&, NOTE&);
    // Операция вставки (вывода)
    friend ostream& operator <<(ostream&, NOTE&);
 
//private:
    char* pName;
    int numer;
    int year[3]; 
    
};
class DBase {
public:
    DBase(int);
    ~DBase();
    void InitInput();
    void Show();
    void SearchPayNotLess(char);
private:
    NOTE* pNOTE;
    int nRecords;
};
// ---------------------------- ввод целого числа
int GetInt(istream& in) {
    int value;
    while (true) {
        in >> value;                                  
        if (in.peek() == '\n') {                          
            in.get();                                 
            break;
        }
        else {
            cout << "Повторите ввод (ожидается целое число):"
                << endl;                              
            in.clear();                               
            while (in.get() != '\n') {};                  
        }
    }
    return value;
}
 
DBase::DBase(int nRec) : nRecords(nRec),
pNOTE(new NOTE[nRec]) {}
DBase::~DBase() { if (pNOTE) delete [] pNOTE; }
 
void DBase::InitInput() { 
    for (int i = 0; i < nRecords; i++)
        cin >> *(pNOTE + i);                           
}
 
void DBase::Show() { 
    cout << "================================" << endl;
    cout << "Содержимое базы данных:" << endl;
    for (int i = 0; i < nRecords; i++)
    a[i]=(pNOTE + i)->GetPay2()*10000+(pNOTE + i)->GetPay1()*100+(pNOTE + i)->GetPay0();//формируем дату в виде одного числа
    
    for (int i = 0; i < nRecords; i++)
        b[i]=a[i];
                       
    int temp=0;                        //сортировка пузырьком      
    for (int i=1;  i<nRecords  ;  i++)            
        for (int j=0;  j<nRecords-i;  j++)    
            if (b [j]>b [j+1]){     
                temp=b[j];           
                b [j]=b [j+1];    
                b[j+1]=temp;
            }
 
    for (int i = 0; i < nRecords; i++)
    for (int j = 0; j < nRecords; j++)
        if (b[i]==a[j]) cout << *(pNOTE + j);                          
}
 
void DBase::SearchPayNotLess(char numer) {
    bool not_found = true;
    for (int i = 0; i < nRecords; i++)
        if ((pNOTE + i)->pName == "aa") {
            cout << *(pNOTE + i);
            not_found = false;
        }
    if (not_found) cout << "Таких сотрудников нет." << endl;
}
 
 
NOTE::NOTE(int lName) { pName = new char[lName + 1]; }
NOTE::~NOTE() { if (pName) delete [] pName; }
int NOTE::GetPay() const { return numer; }
int NOTE::GetPay0() const { return year[0]; }
int NOTE::GetPay1() const { return year[1]; }
int NOTE::GetPay2() const { return year[2]; }
// Операция извлечения (ввода)
istream& operator >> (istream& in, NOTE& ob) {
    cout << "\nВведите данные в формате" << endl;
    cout << "Фамилия И.О. <Enter> Номер телефона <Enter>"<< endl;
    in.getline(ob.pName, l_name);
    ob.numer = GetInt(in);
    cout << " Дата рождения :" << endl;
    cout << " День рождения <Enter>  Месяц рождения <Enter> Год рождения <Enter>:" << endl;
    ob.year[0] = GetInt(in);  
    ob.year[1] = GetInt(in);
    ob.year[2] = GetInt(in);
    return in;
}
 
// Операция вставки (вывода)
ostream& operator << (ostream& out, NOTE& ob) {
    out << setw(30) << setiosflags(ios::left);
    out << ob.pName << "  ";
    out << ob.numer << "  ";
    out << ob.year[0]<<"." << ob.year[1]<<"."<< ob.year[2] <<endl;
    return out;
}
 
 
///////////////////////////////////////////////////////////
 
 
 
int main() {
    setlocale(LC_ALL, "rus");
    const int nRecord = 1;
    
    double any_pay;
    char* fam;
    fam="aa";
    DBase dBase(nRecord);
    dBase.InitInput();
    dBase.Show();
 
    cout << "Ввод данных завершен." << endl;
    cout << "=================================================" << endl;
    cout << "Поиск сотрудников по фамилии." << endl;
    cout << "Поиск завершается при вводе -1." << endl;
 
    while (true) {
        cout << "\nФамилия или -1: "; 
        scanf("%s", fam);
        if (fam == "-1")   break;
        dBase.SearchPayNotLess(*fam);
    }
 
 
 
    
 return 0;
}
///////////////////////////////////////////////////////////
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 14:39     Класс note (поля: фамилия, имя; номер телефона; день рождения; определить методы доступа к этим полям и перегруженные операции извлечения и вставки)
Посмотрите здесь:

Описать структуру с именем NOTE, с полями: фамилия, номер телефона, год рождения. Ввести несколько структур. C++
Класс «Дата» - поля данных и перегруженные операции C++
Описать структуру ZODIAK (знак зодиака, фамилия, имя, день рождения) C++
C++ Задача (язык С + +). Создайте структуру данных Student, если нужно использовать следующие поля: фамилия, имя, номер группы, адрес, год рождения. Орган
C++ Создайте структуру данных Student, если нужно использовать следующие поля: фамилия, имя, номер группы, адрес, год рождения.
C++ Программа не работает (описать класс с именем NOTE (фамилия и инициалы; номер телефона; дата рождения))
C++ Описать структуру NOTE, содержащую следующие поля: фамилия, имя, номер телефона
Структура «Школьник»: фамилия, имя, отчество; класс; номер телефона; оценки по предметам C++

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

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

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