Програмування

Re: Програмування

Повідомлення Староста » 18 травня 2011, 18:56

Бажано до вихідних, щоб був час опрацювати)))))
Семестр 1. Група 4 => Семестр 2. Група 1. = Карпович Вікторія
Староста
 
Повідомлень: 41
З нами з: 22 вересня 2010, 12:20

ПРОГРАМУВАННЯ

Повідомлення МАКС » 19 травня 2011, 17:01

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

Re: ПРОГРАМУВАННЯ

Повідомлення Василь » 19 травня 2011, 17:16

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

Я уже написал... на ноуте лежит ))
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Re: Програмування

Повідомлення aol » 19 травня 2011, 17:40

Староста написав:Визначити клас, який реалізує бінарне дерево. Передбачити метод включення та виключення елементу із дерева та пошуку елементу по заданому ключу.

Код: Виділити все
#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;
}



http://ru.wikipedia.org/wiki/%D0%94%D0% ... 0%BA%D0%B0
Ссылка для того, чтобы разобраться в классе
Сам класс достаточно сложен для первого курса, поэтому и выложил вам решение, но разобратсья нужно самостоятельно!!! (ну и соответсвенно дописать комментарии
В качестве ключа используется переменная типа unsigned long int, очень часто такой класс с помощью шаблонов реализуется под любой тип ключа.
aol
 
Повідомлень: 9
З нами з: 19 травня 2011, 15:04

help

Повідомлення Sanya Pinchuk » 19 травня 2011, 21:31

Вася, поможи мені з програмуванням (це треба зробити до 24.05.2011 року включно). Головне - не забудь про коментарі, бо мені буде недобре
треба:
1)
створити клас, який би зберігав в собі тиск,(там коротше треба щоб типу вводиш тиск у барах, а програма виводить його у атмосфепах, чи мегапаскалях залежно від цифри у світчі, а потім результат операції / * - + цього тиску на тиск 123 мегапаскалів ) у барах, паскалях, чи атмосферах (це через "світч") і перевантажити додавання, віднімання, множення та ділення, булівські більше та менше довідка: 1 Бар=0.1 МПа=1 атмосфера.
2)
шифратор-дешифратор з допомогою файлу-ключа і введення з клавіатури ^(xor)
чи щось таке в усякому разі я так зрозумів
3)створити шаблон функції, яка б повертала найближче до середнього значення елементу масиву (так, щоб розміри масиву можна було міняти)
4)створити клас квіти і похідні від нього класи троянди, ромашки та гвоздики(мають бути функції "тивалість життя", "вартість", "час життя", "час росту", і прибутковість) /*ото він загнув - таке мені дати*/ і ці функції мають бути успадковані (хоча б 2-3)
5)і порадь мені толкову книжку по програмуванню!!!!!
6)коли доробиш то скинь мені якийсь спамчик на ел.пошту будь ласка
Sanya Pinchuk
 
Повідомлень: 4
З нами з: 09 грудня 2010, 20:33

Re: ПРОГРАМУВАННЯ

Повідомлення aol » 19 травня 2011, 21:53

5) http://cplusplus.com http://lib.ru/CPPHB/cpptut.txt
4) головне завдання показати спадкування та поліморфізм. не обов'язково саме такі функції.
aol
 
Повідомлень: 9
З нами з: 19 травня 2011, 15:04

Re: ПРОГРАМУВАННЯ

Повідомлення МАКС » 21 травня 2011, 18:29

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

Я уже написал... на ноуте лежит ))


СПАСИБ)) чекаю..
МАКС
 
Повідомлень: 44
З нами з: 12 квітня 2011, 19:03
Звідки: Прилуки

Re: ПРОГРАМУВАННЯ

Повідомлення GorbachenkoVasyl » 22 травня 2011, 12:50

Запитання до aol

Код: Виділити все
Визначити клас ОДНОЗВЯЗНИЙ СПИСОК. Реалізувати методи для включення та виключення елементу у список, а також методи пошуку елементу по заданому ключу та визначення, чи порожній список.

Запитання:
Яка ідея однозв'язного списку. І як його треба робити. Мені потрібна ідея.

Код: Виділити все
В значити клас ПОЛІГОН (багатокутник). Клас має містити методи для зображення полігону, визначення його периметру, тощо. Створити похідний клас – ТРИКУТНИК з методом визначення точки перетину медіан.

Запитання:
Як малювати в DevCPP, бажано з прикладами.

Завчасно дякую!
GorbachenkoVasyl
Site Admin
 
Повідомлень: 150
З нами з: 16 вересня 2010, 19:59

Re: ПРОГРАМУВАННЯ

Повідомлення МАКС » 22 травня 2011, 13:00

Спасибі))
МАКС
 
Повідомлень: 44
З нами з: 12 квітня 2011, 19:03
Звідки: Прилуки

Re: ПРОГРАМУВАННЯ

Повідомлення aol » 23 травня 2011, 17:32

GorbachenkoVasyl написав:Запитання до aol

Код: Виділити все
Визначити клас ОДНОЗВЯЗНИЙ СПИСОК. Реалізувати методи для включення та виключення елементу у список, а також методи пошуку елементу по заданому ключу та визначення, чи порожній список.

Запитання:
Яка ідея однозв'язного списку. І як його треба робити. Мені потрібна ідея.


http://en.wikipedia.org/wiki/Linked_list

нажаль російською або українською мовою немає, а в англійскій навіть приклади (здаєтсья на паскалі)

GorbachenkoVasyl написав:
Код: Виділити все
В значити клас ПОЛІГОН (багатокутник). Клас має містити методи для зображення полігону, визначення його периметру, тощо. Створити похідний клас – ТРИКУТНИК з методом визначення точки перетину медіан.

Запитання:
Як малювати в DevCPP, бажано з прикладами.

Завчасно дякую!


Як шаблон створіть windows appilcation у DevCPP а не console application
Трошки пізніше допишу (але можливо завтра, зараз не багато часу)
aol
 
Повідомлень: 9
З нами з: 19 травня 2011, 15:04

Поперед.Далі

Повернутись до Питання по домашці

Хто зараз онлайн

Зараз переглядають цей форум: Немає зареєстрованих користувачів і 1 гість