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

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

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2008, 11:16   #1
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию Осуществить передачу с клавы в объекты в программе с++

Кто может поправить программу. введенные значения с клавиатуры не передаются в объекты в программе.
Код:
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
typedef
 struct link
     {
      int data;
      link *left;
      link *right;
     };

class tree
 {
 public:
   link *r;
   int m;
   int x;
   int depth;
   int minim;
   int c;
   int d;

link *Find(link *Root, int a);
void add(link *n,int arg);
void restruct(link * v);
void delete1(link *n,int arg);
void view(link *n, int *d1);
void obhod1(link *n, int *d1,int *min);
void obhod2(link *n, int *d1,int min);
};

class bintree: public tree
{
 public:
 int  walk[100];

void Go(link *t,int y[],int *j);
};

link * tree::Find(link *Root, int a)
    {
	if (Root == NULL) return(NULL);
	else
		if (a == Root->data) return(Root);
		else
			if (a < Root->data) return(Find(Root->left, a));
			else return(Find(Root->right, a));
    };

void bintree::Go(link *t,int y[],int *j)
{
if (t!=NULL)
    {
      Go(t->left,y,j);
	{
	 j++;
	 *(y+*j)=0;
	};
      Go(t->right,y,j);
	{
	 j++;
	 y[*j]=1;
	};
    };
};



void tree::add(link *n,int arg)
{
  link *ind;
  link *neo;
   neo = new link;
   neo->data=arg;
   neo->left=NULL;
   neo->right=NULL;
   if (n==NULL)  n = neo;
   else {
      ind=n;
      while (neo!=NULL) {
	 if (arg<ind->data)  {
	    if (ind->left==NULL)  {
	       ind->left=neo;
	       neo=NULL;
	    }
	    else ind=ind->left;
	 }
	 else
	    if (arg>ind->data)  {
	       if (ind->right==NULL)  {
		  ind->right=neo;
		  neo=NULL;
	       }
	       else ind=ind->right;
	    }
	    else {
	       puts("Such element is already exists");
	       neo=NULL;
	    };
      };
   };
}; /* add */

void tree::restruct(link * v)
{
  link *ind1;
  link *ind2;

   ind1=v;
   if (ind1->right==NULL)  {
      ind2=v;
      v=ind2->left;
      delete ind2;
   }
   else
      if (ind1->left==NULL)  {
	 ind2=v;
	 v=ind2->right;
	 delete ind2;
      }
      else {
	 ind2=ind1->left;
	 while (ind2->right!=NULL)  {
	    ind1=ind2;
	    ind2=ind2->right;
	 };
	 ind1->right=ind2->left;
	 ind2->left=v->left;
	 ind2->right=v->right;
	 delete v;
	 v=ind2;
      };
}; /* restruct */

void tree::delete1(link * n,int arg)
{
   link *del;
   link *ind;
   int t;

   t=0;
   del=n;
   while (del!=NULL && !t)  {
      if (arg==del->data)  t=1;
      else
	 if (arg<del->data)  {
	    ind=del;
	    del=del->left;
	 }
	 else {
	    ind=del;
	    del=del->right;
	 };
   };
      if (t)  {
	 if (del->left==NULL && del->right==NULL)  {
	    if (del==n)  { n=NULL; delete del; } else
	    if (ind->left==del)  {
	       ind->left=NULL;
	       delete del;
	    }
	    else {
	       ind->right=NULL;
	       delete del;
	    }
	 }
	 else
	    if (del==n)  restruct(n); else
	    if (ind->left==del)  restruct(ind->left);
	    else restruct(ind->right);
      }
      else puts("Element is absent");
}; /* delete */

void tree::view(link *n, int *d1)
{
  int i;

   for (i=1; i<= d;i++) {
      printf("    "); };
   printf("%d",n->data);
   if (n->left==NULL && n->right==NULL)  d=d-1;
   else {
      if (n->right!=NULL)  {
	 d=d+1;
	 view(n->right,&d);
      };
      if (n->left!=NULL)  {
	 d=d+1;
	 view(n->left, &d);
      };
      d=d-1;
   };
}; /* view */

void tree::obhod1(link *n, int *d1,int *min)
{
   if (n->left==NULL && n->right==NULL)  {
      if (d<*min)  *min=d;
      d=d-1; }
      else {
	 if (n->right!=NULL)  {
	    d=d+1;
	    obhod1(n->right, &d, min); };
	 if (n->left!=NULL)  {
	    d=d+1;
	    obhod1(n->left, &d,min); };
	d=d-1;
      };
}; /* obhod1 */

void tree::obhod2(link *n, int *d1,int min)
{
   if (n->left==NULL && n->right==NULL)  {
      if (d==min)  printf("%d",n->data);
      d=d-1;
   }
   else {
      if (n->right!=NULL)  {
	 d=d+1;
	 obhod2(n->right,&d,min);
      };
      if (n->left!=NULL)  {
	 d=d+1;
	 obhod2(n->left, &d,min);
      };
      d=d-1;
   };
}; /* obhod2 */
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 23.12.2008, 11:17   #2
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

Код:
void main(void)
{
int temp,m,x,c,d,i;
bintree *pn,*pn1;
int flag;
   clrscr();
   m=1;
   temp=1;
   pn->r=NULL;pn1->r=NULL;
   while (m!=0) {
      printf("\n");
      printf("--- Type 1 to ADD new element\n");
      printf("--- Type 2 to DELETE element\n");
      printf("--- Type 3 to VIEW tree\n");
      printf("--- Type 4 to FIND elements with minimal depth\n");
      printf("--- Type 5 to TURN another tree\n");
      printf("--- Type 6 Equal?\n");
      printf("--- Type 7 Find element\n");
      printf("--- Type 0 to EXIT program\n");
      printf("\n");
      printf("Enter : ");
      scanf("%d",&m);
      printf("\n");
      switch (m){
       case	1 : {
	       printf("Enter new element : ");
	       scanf("%d",x);
	       if(temp==1)   pn->add(pn->r, x);
		  else  pn1->add(pn1->r,x);
	    };break;
	case 2 : {
	       printf("Enter element you want to delete : ");
	       scanf("%d",x);
	       if (temp==1)  pn->delete1(pn->r, x);
		  else pn->delete1(pn1->r,x);
	    };break;
     case	3 : {
	       if (temp==1)   {
		    pn->depth=1;
		    if (pn->r==NULL)  printf("The tree is empty"); else {
		    printf("The tree is : ");
		    pn->view(pn->r, &pn->depth);
		    };
		    }
		  else {
			 pn1->depth=1;
			if (pn1->r==NULL)  printf("The tree is empty"); else {
			printf("The tree is : ");
			pn1->view(pn1->r, &pn1->depth);

		       };
	       };
	    };break;
   case	4 : {
	     if (temp==1)  {
	       pn->depth=1;
	       pn->minim=20;
	       if (pn->r!=NULL)  {
	       printf("Elements with minimal depth");
	       pn->obhod1(pn->r,&pn->depth,&pn->minim);
		  printf("%d",pn->minim);
		  pn->depth=1;
		  pn->obhod2(pn->r,&pn->depth,pn->minim);
	       }
	       else printf("The tree is empty");
	      }
	     else {
		  if (pn1->r!=NULL)  {
		  printf("Elements with minimal depth");
		  pn1->obhod1(pn1->r,&pn1->depth,&pn1->minim);
		  printf("%d",pn1->minim);
		  pn1->depth=1;
		  pn1->obhod2(pn1->r,&pn1->depth,pn1->minim);
		  }
		    else printf("The tree is empty");
		  };
	    };break;
      case	5: {
	    if (temp==1)  {
			    temp=2;
			    printf("Current 2\n");
			   }
	       else {
		     temp=1;
		     printf("Current 1\n");
		    };
	   }; break;
      case	6: {
	   c=0;d=0;
	   pn->Go(pn->r,pn->walk,&c);
	   pn1->Go(pn1->r,pn1->walk,&d);
	   if (c==d)  {
		       flag=1;
		       for (i=1;i<= c;i++)
			 if (pn1->walk[i]!=pn->walk[i])  flag=0;
		       if (flag)  printf("Equal\n");
			  else printf("No\n");
		       }
	      else printf("No\n");

	   }; break;
      case	7:{
	   printf("Enter  element to Find: ");
	   scanf("%d",x);
	   if (temp==1)  {
			  if (pn->Find(pn->r,x) != NULL)  printf("Yes\n");
			     else printf("No\n");
			  }
	      else {
		    if (pn1->Find(pn1->r,x)!= NULL)  printf("Yes\n");
		       else printf("No\n");
		   };
	  }; break;
      }; /* case */
   };
}
оплата wm
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как осуществить передачу и прием пакета c клиента на сервер? IIpopoK Работа с сетью в Delphi 6 07.12.2008 14:10
Отслеживание мыши клавы LAFUDR Win Api 1 13.05.2008 12:37
Эмуляция клавы и мыши ЧИЖ Общие вопросы Delphi 4 02.04.2008 07:51
как обрабатывать события с клавы? proglamer Паскаль, Turbo Pascal, PascalABC.NET 13 25.10.2007 11:41
Прерывание от клавы Киркоров Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 04.09.2007 10:03