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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывод графика функции на экран Visual C++ 2010 Express http://www.cyberforum.ru/cpp-beginners/thread880516.html
Скачал с офф. сайта microsoft и поставил чистую версию Visual C++ 2010 Express. В общем надо вывести график функции на экран на определённом интервале. Нужна помощь так как как графику подключать не знаю, как библиотеки добавлять тоже не знаю.
C++ Составить программу вычисления пример задачи Составить программу вычисления y = 1! + 2! +...+n! загвоздка заключается переменной n. как вывести экспонент. http://www.cyberforum.ru/cpp-beginners/thread880510.html
C++ Типизированые файлы (Дан файл натуральных чисел. Создать файл простых чисел, которые явл-ся делителями чисел файла)
Дано файл f натуральных чисел, которые не больше 255. Создать файл простых чисел, которые есть делителями чисел файла f. У нас есть файл натуральных чисел, которые не больше 255. Нам нужно брать отдельно каждое число этого файла и делить на цело на все простые числа до 255. Их можно найти при помощи решета Эратосфена и выписать в отдельный линейный массив. Значит мы должны взять одно число...
C++ Сортирвка Хоара для сортировки слов в предложении
Друзья, подскажите, как реализовать сортировку Хоара для сортировки слов в предложении. Дело в том, что написала сначала для сортировки просто символов в предложении, но задание изменили(( Теперь потерялась, как исправить? Мысль такая, что нужно взять слово посередине (использовать доп. память) и с ним сравнивать слова, проблема как реализовать, ступор, помогите. #include "stdafx.h" #include...
C++ Представить определение функции, позволяющей переставить местами кратные 3 элементы указанного столбца и главной диагонали квадратной матрицы http://www.cyberforum.ru/cpp-beginners/thread880463.html
Представить определение функции, позволяющей переставить местами кратные 3 элементы указанного столбца и главной диагонали квадратной матрицы. Аргумент вызываемой функции передается как указатель на одномерный массив.
C++ Подводные камни в стеке, в очереди, в списке какие могут быть ошибки в структурах данных? например, вот в очереди начало может догнать конец. как этого избежать? Какие еще могут быть ошибки? подробнее

Показать сообщение отдельно
bestdimaaa
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 7
27.05.2013, 14:39     Класс note (поля: фамилия, имя; номер телефона; день рождения; определить методы доступа к этим полям и перегруженные операции извлечения и вставки)
Задача
Определить класс с именем 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;
}
///////////////////////////////////////////////////////////
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru