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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
bestdimaaa
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 7
#1

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

27.05.2013, 14:39. Просмотров 708. Ответов 0
Метки нет (Все метки)

Задача
Определить класс с именем 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 (поля: фамилия, имя; номер телефона; день рождения; определить методы доступа к этим полям и перегруженные операции извлечения и вставки) (C++):

Описать структуру NOTE, содержащую следующие поля: фамилия, имя, номер телефона - C++
1. Описать структуру NOTE, содержащую следующие поля: фамилия, имя, номер телефона. 2. Написать программу, выполняющую следующие...

Программа не работает (описать класс с именем NOTE (фамилия и инициалы; номер телефона; дата рождения)) - C++
Задание: Описать класс, объявить массив из 10 объектов. Написать программу в которой обеспечить ввод данных в массив с клавиатуры,...

Описать структуру с именем NOTE, с полями: фамилия, номер телефона, год рождения. Ввести несколько структур. - C++
Помогите пожайлуйста 1. Описать структуру с именем NOTE, с полями: фамилия, номер телефона, год рождения. Ввести несколько структур....

Структура «Школьник»: фамилия, имя, отчество; класс; номер телефона; оценки по предметам - C++
Структура «Школьник»: фамилия, имя, отчество; класс; номер телефона; оценки по предметам (математика, физика, русский язык,...

Описать структуру FRIEND, содержащую след. поля: Имя, Номер телефона, Дата рождения. С++ - C++
Доброго времени суток, будьте добры, помогите решить задачу. Формулировка: Описать структуру FRIEND, содержащую следующие поля: -Имя...

Создайте структуру данных Student, если нужно использовать следующие поля: фамилия, имя, номер группы, адрес, год рождения. - C++
Создайте структуру данных Student, если нужно использовать следующие поля: фамилия, имя, номер группы, адрес, год рождения. Организуйте...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2013, 14:39
Привет! Вот еще темы с ответами:

Задача (язык С + +). Создайте структуру данных Student, если нужно использовать следующие поля: фамилия, имя, номер группы, адрес, год рождения. Орган - C++
)))))

Описать структуру ZODIAK (знак зодиака, фамилия, имя, день рождения) - C++
Описать структуру ZODIAK (знак зодиака, фамилия, имя, день рождения). Введите данные в массив, состоящий из 12 элементов типа ZODIAK....

Класс «Дата» - поля данных и перегруженные операции - C++
Привет! ребят помогите с заданием:&quot; Класс «Дата» должен включать поля данных: день, месяц, год; методы: вывод даты и времени года и...

Составить программу, в которой описывается структура из полей: Фамилия, Номер телефона, Год рождения - C++
Составить программу, в которой описывается структура из полей: Фамилия, Номер телефона, Год рождения. Организовать ввод двух структурных...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru