МАКС написав:задана не порожня послідовність слів з латинських літер. Останнім символом цієї послідовності є крапка. словами називаються групи символів, які розділені одним чи кількома пробілами та не містять пробілів усередині себе. визначити кількість слів, які не містять заданої літери.
до понеділка, бажано з коментами, спасіб за раньше))

Староста написав:Визначити клас, який реалізує бінарне дерево. Передбачити метод включення та виключення елементу із дерева та пошуку елементу по заданому ключу.
#include <cstdlib>
#include <iostream>
#define SELFDELETE 1
using namespace std;
typedef struct elem
{
   unsigned long int key;
   void *value;
   elem* left;
   elem* right;
};
class bst
{
   private:
      elem* bst_root;
      void bst_add(elem **point,unsigned long int key, void *value);
      void bst_remove(elem *point,unsigned long int key,elem **parent);
      void* bst_find(elem *point,unsigned long int key);
   public:
      bst();
      ~bst();
      void add(unsigned long int key, void *value);
      void remove(unsigned long int key);
      void* find(unsigned long int key);
         
};
bst::bst()
{
   bst_root = NULL;
}
bst::~bst()
{
   //TODO: очистка памяти???
   // TODO: Нужно обходить все дерево и удалять элементы
}
void* bst::find(unsigned long int key)
{
   return bst_find(bst_root,key);
}
void* bst::bst_find(elem* point,unsigned long int key)
{
   if (point == NULL)
      return NULL;
   else if (point->key == key)
   {
      return point->value;
   }
   else if (point->key > key)
   {
      return bst_find(point->left,key);
   }
   else
      return bst_find(point->right,key);
}
void bst::add(unsigned long int key, void *value)
{
   bst_add(&bst_root,key,value);
}
void bst::remove(unsigned long int key)
{
   bst_remove(bst_root,key,NULL);
}
void bst::bst_remove(elem *point,unsigned long int key,elem **parent)
{
   if(point == NULL)
   {
      return;
   }
   else
   {
      if (key > point->key)
      {
         bst_remove(point->right,key,&point);
      }
      else if (key < point->key)
      {
         bst_remove(point->left,key,&point);
      }
      else
      {
         if (point->left == NULL && point->right == NULL)
         {
            *parent = NULL;
            #ifdef SELFDEELETE
               free(point->value);
            #endif
            free(point);
         }
         else if(point->left == NULL)
         {
            elem* tmp;
            tmp = point->left;
            point->right = tmp->right;
            point->left = tmp->left;
            point->value = tmp->value;
            free(tmp);
         }
         
         else if (point->right == NULL)
         {
            elem* tmp;
            tmp = point->right;
            point->right = tmp->right;
            point->left = tmp->left;
            point->value = tmp->value;
            free(tmp);
         }
         else
         {
            elem * tmp;
            tmp = point->right;
            while (tmp->left != NULL)
            {
               tmp = tmp->left;
            }
            point->value = tmp->value;
            point->key = tmp->key;
            free(tmp);
         }
      
      }
   }
}
void bst::bst_add(elem **ptr,unsigned long int key, void *value)
{
   elem* point;
   point = *ptr;
   if (point == NULL)
   {
      point = (elem *)malloc (sizeof(elem));
      point->left = NULL;
      point->right = NULL;
      point->key = key;
      point->value = value;
      *ptr = point;
   }   
   else
   {
      if(key < point->key)
      {
         bst_add(&point->left,key,value);
      }
      else
      {
         bst_add(&point->right,key,value);
      }
   }
}
int main(int argc, char *argv[])
{
   bst tree;
   string test1;
   string test2;
   string test3;
   string test4;
   string test5;
   string *res;
   test1 = "xxx";
   test2 = "yyy";
   test3 = "ddd";
   test4 = "ccc";
   test5 = "bbb";
   tree.add(5,&test1);
   tree.add(7,&test2);
   tree.add(4,&test3);
   tree.add(8,&test4);
   tree.add(2,&test5);
   
   res = (string *)tree.find(7);
   if (res == NULL)
   {
      cout << "Not found";
   }
   else
   {
      cout << res->data() ;
   }
    system("PAUSE");
    return EXIT_SUCCESS;
}
Василь написав:МАКС написав:задана не порожня послідовність слів з латинських літер. Останнім символом цієї послідовності є крапка. словами називаються групи символів, які розділені одним чи кількома пробілами та не містять пробілів усередині себе. визначити кількість слів, які не містять заданої літери.
до понеділка, бажано з коментами, спасіб за раньше))
Я уже написал... на ноуте лежит ))
Визначити клас ОДНОЗВЯЗНИЙ СПИСОК. Реалізувати методи для включення та виключення елементу у список, а також методи пошуку елементу по заданому ключу та визначення, чи порожній список.
В значити клас ПОЛІГОН (багатокутник). Клас має містити методи для зображення полігону, визначення його периметру, тощо. Створити похідний клас – ТРИКУТНИК з методом визначення точки перетину медіан.GorbachenkoVasyl написав:Запитання до aol
- Код: Виділити все
Визначити клас ОДНОЗВЯЗНИЙ СПИСОК. Реалізувати методи для включення та виключення елементу у список, а також методи пошуку елементу по заданому ключу та визначення, чи порожній список.
Запитання:
Яка ідея однозв'язного списку. І як його треба робити. Мені потрібна ідея.
GorbachenkoVasyl написав:
- Код: Виділити все
В значити клас ПОЛІГОН (багатокутник). Клас має містити методи для зображення полігону, визначення його периметру, тощо. Створити похідний клас – ТРИКУТНИК з методом визначення точки перетину медіан.
Запитання:
Як малювати в DevCPP, бажано з прикладами.
Завчасно дякую!
Повернутись до Питання по домашці
Зараз переглядають цей форум: Немає зареєстрованих користувачів і 4 гостей