![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 17.05.2012
Сообщений: 3
|
![]()
Здравствуйте, проблема заключается в том что не работает поиск, точнее просто выключается программа после попытка поиска.
Задание: Картотека в бюро обмена квартир организована как линейный список. Сведения о каждой квартире содержат: *количество комнат *этаж *площадь *адрес Составить программу, которая обеспечивает *начальное формирование картотеки *ввод заявки на обмен *поиск в картотеке подходящего варианта: при равенстве количества комнат и этажа и различии площадей в пределах 10% выводится соответствующая карточка и удаляется из списка. в противном случае поступившая заявка включается в список *выывод всего списка Код: #include "stdafx.h" #include <string> #include <iostream> #include <iomanip> using namespace std; struct node { int n,l,m; char add[50]; node *next; node *prev; }; //----------------------- void add_node (node **pend, int n,int l,int m, char *add); node *find (node *pbeg, int n,int l,int m); void zayavka (node **pbeg, node **pend, int n,int l,int m, char *add); void remove (node ***pbeg, node ***pend, node **pkey); void show_all (node *p); void show_menu (); //----------------------- int _tmain(int argc, _TCHAR* argv[]) { node *pbeg, *pend; pbeg=pend=0; show_menu (); int n,l,m; char add[50]; int key=1; while (key) { cout << "Enter: "; cin >> key; switch (key) { // add case 1: cout << "Enter number of rooms: "; cin >> n; cout << "Enter the floor: "; cin >> l; cout << "Enter square: "; cin >> m; cout << "Enter addres: "; cin >> add; if (pbeg==0) { pbeg = new node; pbeg->n=n; pbeg->l=l; pbeg->m=m; strcpy(pbeg->add,add); pbeg->prev=0; pbeg->next=0; pend=pbeg; } else add_node (&pend,n,l,m,add); break; // show all case 2: show_all (pbeg); break; // find case 3: cout << "Enter number of rooms: "; cin >> n; cout << "Enter the floor: "; cin >> l; cout << "Enter square: "; cin >> m; cout << "Enter addres: "; cin >> add; zayavka (&pbeg,&pend,n,l,m,add); break; // exit default: key = 0; } } return 0; } // функции void add_node (node **pend, int n,int l,int m, char *add) { node *p = new node; p->n=n; p->l=l; p->m=m; strcpy(p->add,add); (*pend)->next=p; p->next=0; p->prev=*pend; *pend=p; } node *find (node *pbeg, int n,int l,int m) { node *p=pbeg; while (p){ if (p->n==n && p->l==l) return p; p=p->next; } return 0; } void remove (node ***pbeg, node ***pend, node **pkey) { if ((*pkey)==**pbeg){ **pbeg=(**pbeg)->next; (**pbeg)->prev=0; } if ((*pkey)==**pend){ **pend=(**pend)->prev; (**pend)->next=0; } else { ((*pkey)->prev)->next = (*pkey)->next; ((*pkey)->next)->prev = (*pkey)->prev; } delete pkey; } void zayavka (node **pbeg, node **pend, int n,int l,int m, char *add) { if (node *pkey=find(*pbeg,n,l,m)) { cout << pkey; cout << "Podxodjawaja zayavka:"; cout << "Number of rooms: " << pkey->n; cout << "Floor: " << pkey->l; cout << "Square: " << pkey->m; remove(&pbeg, &pend, &pkey); } else { cout << pkey; add_node (pend,n,l,m,add); } } void show_all (node *p) { if (p == 0) return; cout << "Number of rooms: " << p->n << " "; cout << "Floor: " << p->l << " "; cout << "Square: " << p->m << " "; cout << "Addres: " << p->add << " " << endl; show_all (p->next); } void show_menu () { cout << "Press any of this keys..." << endl; cout << setiosflags (ios::left) << setw (15) << "[ 1 - Add ] " << setw (15) << "[ 2 - Show all ] " << setw (15) << "[ 3 - Find ] " << setw (15) << "[ 4 - Exit ]" << endl << endl; } |
![]() |
![]() |
![]() |
#2 |
Регистрация: 17.05.2012
Сообщений: 3
|
![]()
Подскажите скорее, курсовую скоро сдавать =(
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Списки С++ | Klausms | Общие вопросы C/C++ | 0 | 01.03.2012 22:09 |
Списки в С | Nitriyc | Помощь студентам | 1 | 31.05.2010 00:55 |
односвязанные списки в си | J-lo | Помощь студентам | 0 | 05.05.2010 23:31 |
Списки? | Chainic | Microsoft Office Excel | 13 | 06.05.2009 22:53 |