/*
1. Определить класс с именем NOTE, содержащий следующие поля:
• фамилия, имя;
• номер телефона;
• год рождения .
2. Написать программу, выполняющую следующие действия:
• ввод с клавиатуры данных в массив, состоящий из трех объектов типа NOTE; записи должны быть упорядочены по трем первым цифрам номера телефона;
• вывод на экран информации о человеке, чья фамилия введена с клавиатуры;
• если такого нет, выдать на дисплей соответствующее сообщение.
з.ы. еще нужны перегрузка операторов(сравнение или присвоение)
*/
/*
codeby.net
Autor: DarkKnight125 (Denis Goncharov)
*/
#include <iostream>
using namespace std;
//Объявление класса TNote
class TNote
{
private:
char Soname[32]; //Фамилия
char Name[16]; //Имя
char TelNubm[14]; //Отчество
int Year; //Год рождения
public:
TNote(){}; //Конструктор по умолчанию
//Перезагруженный оператор сравнения (сравнивает по всем полям)
bool operator == (TNote& A)
{
bool Res = false; //Выставим флаг результат ТРУ
if (strcmp(Soname,A.Soname) == 0) //Если Фамилии равны
if (strcmp(Name,A.Name) == 0) //Если Имена равны
if (strcmp(TelNubm,A.TelNubm) == 0) //Если тел. номера равны
if (Year == A.Year) //И год рождения тоже
Res = true; //То сменим флаг на true
return Res;
}
//Дружественная функция сортировки массива TNote по ном. телефона
friend void SortNote(TNote *Arr, int Size)
{
for (int i = 0; i <Size; i++)
for (int j =i+1; j < Size; j++)
if (strcmp(Arr[i].TelNubm,Arr[j].TelNubm) > 0)
{
TNote Temp;
Temp = Arr[i];
Arr[i] = Arr[j];
Arr[j] = Temp;
}
}
//Дружественная перезагрузка оператора потокового ввода
friend istream& operator>> (istream& in,TNote& Note)
{
cout<< "Ввод записи TNote" << endl;
cout << "Введите Фамилию : ";
in.getline(Note.Soname,31);
cout << "Введите Имя : ";
in.getline(Note.Name,15);
cout << "Введите номер телефона : ";
in.getline(Note.TelNubm,13);
cout << "Введите год рождения : ";
in>>Note.Year;
in.ignore(1);
return in;
}
//Дружественная перезагрузка оператора потокового вывода
friend ostream& operator<< (ostream& out, TNote& Note)
{
out << "---------------------------------------" << endl;
out << "Фамилия : " << Note.Soname << endl;
out << "Имя : " << Note.Name << endl;
out << "Номер телефона : " << Note.TelNubm << endl;
out << "Год рождения : " << Note.Year << endl;
out << "---------------------------------------" << endl << endl;
return out;
}
};
//Основная функция (точка входа)
void main(void)
{
setlocale(LC_ALL,".1251"); //Установим локаль
TNote Arr[3]; //Наш массив объектов
//Ввод массива
for (int i = 0; i< 3; i++)
cin>>Arr[i];
//Проверка перазагруженной функции
if (Arr[1] == Arr[2])
cout << "Объект 2 == Объекту 3" << endl;
else cout << "Объект 2 != Объекту 3" << endl;
SortNote(Arr,3); //Отсортируем массив по ном. телефонов
//Выведим отсортированный массив на экран
for (int i = 0; i<3; i++)
cout << Arr[i];
}