Напишите программу которая сортирует записи в файле в порядке возрастания номера телефона. В текстовом файле находятся записи о номерах телефонов. В каждой строке записана информация: номер телефона, ФИО, адрес. Пример работы программы:
Данное решение прислал пользователь нашего сайта — NaikoN. Огромное спасибо ему за это, решение еще не успел проверить.
33-34-35 Иванов Юрий Петрович Чайковского 1 кв 1
44-35-31 Зибров Сергей Иванович Космонавтов 32\2 кв 1
22-21-23 Грабчак Александр Владимирович Строителей 12 кв 34
11-23-78 Кириленко Артур Иванович Чкалова 43б кв 34
Задача решена с использование классов. Вот код main
функции:
#include <iostream> #include "list.h" using namespace std; int main() { { list L; for(int i=0;i<10;++i) L.push_back(i+1); L.print(); } system("pause>0"); return 0; }
Заголовочный файл класса list
. В этом файле объявлены конструктор, деструктор, методы и др. элементы класса. Имя файла — list.h
.
#ifndef list_h #define list_h class list { public: list(){head = new (node); head->next = NULL;} ~list(){destroy(); delete head;} void push_back(int); void push_front(int); void pop_back(); void pop_front(); void print(); void print_reverse(); void destroy(); private: struct node { int data; node* next; node* prev; }; node* head; }; #endif
Файл в котором определена реализация класса list
. В этом файле запрограммирована логика работы всех функций класса. Имя файла — list.cpp
.
#include <iostream> #include "list.h" using namespace std; void list::push_back(int el) { node* p,*p1; p = head; while(p->next != NULL) {p = p->next;} p1 = new (node); p1->data = el; p1->next = NULL; p1->prev = p; p->next = p1; } void list::print() { node* p; p = head->next; while(p != NULL) { cout<<(p->data)<<" "; p = p->next; } } void list::push_front(int el) { node* p; p = new (node); p->data = el; if(head->next == NULL) { p->next = head->next; head->next = p; p->prev = head; } else { p->next = head->next; head->next->prev = p; head->next = p; p->prev = head; } } void list::print_reverse() { node* p; p = head; while(p->next != NULL) {p = p->next;} while(p != head) { cout<<(p->data)<<" "; p = p->prev; } } void list::destroy() { node* p,* p1; p = head; p1 = p->next; while(p1 != NULL) { p = p1; p1 = p1->next; delete p; } } void list::pop_back() { node* p,* p1; p = head; p1 = p->next; while(p1->next != NULL) { p = p1; p1 = p1->next; } p->next = NULL; delete p1; } void list::pop_front() { node* p; p = head->next; head->next = p->next; p->next->prev = head; delete p; }
Смотрим результат работы программы:
11-23-78 Кириленко Артур Иванович Чкалова 43б кв 34 22-21-23 Грабчак Александр Владимирович Строителей 12 кв 34 33-34-35 Иванов Юрий Петрович Чайковского 1 кв 1 44-35-31 Зибров Сергей Иванович Космонавтов 32\2 кв 1
Комментарии
AndreiST