Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2012, 17:59   #1
Fiert
 
Регистрация: 17.05.2012
Сообщений: 3
По умолчанию Программа

Здравствуйте, подскажите что не правильно =( Не работает поиск.
Код:
#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;
}

Последний раз редактировалось ACE Valery; 17.05.2012 в 21:23.
Fiert вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа с применением записей и программа с применение множеств smert99 Помощь студентам 0 16.06.2011 23:14
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09
[PASCAL]Программа создания файла, программа обработки файла Виколяшка Фриланс 7 23.09.2009 17:38
Программа создания файла, программа обработки файла [PASCAL] Виколяшка Помощь студентам 1 22.09.2009 22:56