adsl club

Справочник

Форум

Программы

Фильмы

Ресурсы

Файлообмен

Хостинг

Ростелеком
Задание по С++
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ
Автор Сообщение
ALaGaR
Гуру
Предупреждений : 1
СообщениеДобавлено: Чт 9-10-08 : 18-17    Заголовок сообщения: Задание по С++ Ответить с цитатой

народ подскажите. задали знакомой такое задание, завтро сдавать...
А она незнает как его делать..и с какой стороны начать..
Кто чем может)) Я сам в этот не шарю Very Happy ...

"Реализовать класс в соответствии с вариантом. Класс должен обеспечивать набор методов для работы с данными. Создать пеpегpужаемые констpуктоpы, констpуктоp копирования, констpуктоp по умолчанию. Реализовать указанные классы с динамическим выделением памяти для хранения некоторых полей. Создать деструктор для освобождения памяти. Посмотреть, как вызываются конструкторы и деструкторы.
Составить демонстpационную пpогpамму. Для pеализации демонстpационной пpогpаммы использовать отдельный модуль. Пpогpамму постpоить с использованием пpоекта. Посмотpеть pаботу пpогpаммы в отладчике, обpатить внимание на пpедставление данных. Постpоить пpогpамму без отладочной инфоpмации. Обpатить внимание на pазмеp пpогpаммы. Посмотpеть, как выглядит оттpанслиpованный код.
Реализовать двунаправленный список. Для указателей на список использовать статические члены-данные. Расширить набор функций для работы со списком. Изменить демонстpационную пpогpамму.
Вариант 4.
Постpоить класс для pаботы с многочленами. Класс должен включать соответствующие поля: порядок, набор коэффициентов.
Класс должен обеспечивать пpостейшие функции для pаботы с данными классами: вычисление значения многочлена для данного параметра, вывод многочлена в удобной форме и т.д."
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
RawRalf
Эксперт
Предупреждений : 1
СообщениеДобавлено: Чт 9-10-08 : 18-29    Заголовок сообщения: Ответить с цитатой

Эммм, НГТУ, ФПМИ?
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
ALaGaR
Гуру
Предупреждений : 1
СообщениеДобавлено: Чт 9-10-08 : 18-31    Заголовок сообщения: Ответить с цитатой

RawRalf АВТФ 2-й курс
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
BuXTeR
Продвинутый форумчанин
СообщениеДобавлено: Чт 9-10-08 : 20-42    Заголовок сообщения: Ответить с цитатой

Нате вам список. Тока отлаживайте сами, я в неадеквате. dance oop
Код:
#include "stdafx.h"

// Жил-был список..
class List{
   // а в нем элементы
   class Element{
   private: // история умалчивает что там было в элементах
      int *data; // ...
   public: // но достоверно известно, что
      Element *next; // были элементы следующие
      Element *prev; // и были предыдущие
      // а еще были конструкторы:
      Element():next(NULL),prev(NULL){data=new int(0);}; // по-умолчанию
      Element(int val):next(NULL),prev(NULL){data=new int(val);}; // перегруженный
      Element (Element &e)      // и конструктор копирования
      {
         // который все плагиатил:
         data=new int(e.getData());
         next=e.next;
         prev=e.prev;
      }
      // Был еще деструктор
      ~Element(){if (data) delete data;next=prev=NULL;}
      // и всякие методы
      int getData(){return *data;}  // для получения
      void setData(int val){*data=val;} // и установки данных
   };
   public: // также ходят слухи , что
   Element *first; // был самый первый элемент
   Element *last; // и самый последний тоже.. был.
   List():first(NULL),last(NULL){} // но в пустом списке их как-бы не было..
   ~List() // а при удалении списка
   {
      Element *p=last;
      while(p)
      {
         Element *pt=p;
         p=p->prev;
         delete pt; // гасили всех
      }
      first=last=NULL; // ну и их за компанию
   }

   // и собрался честной люд
   // и решил сделать добавление в конец списка. Быть посему:
   void Add(int val) // будем добавлять элемент со значением val
   {
      Element *t=new Element(val); // поэтому создаем новый элемент
                            // с нужным содержимым
      // смотрим куда бы его пихнуть
      if(first==NULL)   // если нифига нету
      {
         first=last=t; // то он будет первым и последним в одном лице
         first->next=last->next=NULL; // а больше ничего и нету
         first->prev=last->prev=NULL;
         return; // а больше ничего и не надо
      }
      // ежели в списке уже кто-то есть
      last->next=t; // пихаем после последнего
      t->prev=last; // соответсвенно, бывший последний теперь предпоследний..
      last=t; // а последний теперича мы!
      last->next=NULL; // а дальше хоть трава не расти
   }

   // а  казнить-то тоже надо
   void Delete(int n)  // неугодных супостатов
   {
      // ищем супостатов
      Element *i = first;
      int k=0;
      while (i && k<n)
      {
         i = i->next;
         k++;
      }
      if (i) // нашли! несите топор!
      {
         if (i==first) // если это самый первый супопстат - к нему подход особый
         {
            Element *t = new Element(*first);
            first=first->next; // а его тут никогда и не было
            first->prev=NULL; // правда-правда
            delete t; // тыдыщ!
            return; // и по домам..
         }
         // та же ерунда и с супостатом последним
         if (i==last)
         {
            Element *t = new Element(*last);
            last=last->prev;
            last->next=NULL;
            delete t;
            return;
         }
         // если обычный такой супостат, ничего особенного
         i->prev->next=i->next; // выводим его из приличного общества
         i->next->prev=i->prev;
         delete i; // и тыдыщ!
      }
   }
   
   // смотрим что получилось
   void Print(int dir) // направление: dir == 0 --->>> | dir == 1 <<<---
   {
      Element *i;
      dir ? i = last: i = first; // решаем откуда будем начинать (см. dir)
      while (i) // и пока есть смысл...
      {
         printf("%d\n",i->getData()); // ...выводим данные
         if (dir)
            i=i->prev; // в направлении <<<--- туда
         else           // или
            i=i->next; // в направлении --->>> туда
      }
   }
};
void main()
{
   List *lst = new List;
   for (int i=0; i<5;i++)
      lst->Add(i);
   lst->Delete(3);
   // ну-ка, ну-ка шо там:
   lst->Print(0);
   // а ежели вот так:
   printf("-----------------\n");
   lst->Print(1);
   delete lst;
}

 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
Nikolai
Продвинутый форумчанин
СообщениеДобавлено: Чт 9-10-08 : 21-00    Заголовок сообщения: Ответить с цитатой

браво!! коменты читал из под стола! Теперь отчеты таким же способом писать буду)))
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Отправить e-mail  
ALaGaR
Гуру
Предупреждений : 1
СообщениеДобавлено: Чт 9-10-08 : 21-07    Заголовок сообщения: Ответить с цитатой

BuXTeR
Respect Respect Respect Большое спасибо спасибо!

Крут!


Под столом! Под столом! вот это пояснения)))

Я думаю тему нада в юмор))
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
Aprelle
Гуру
СообщениеДобавлено: Чт 9-10-08 : 21-07    Заголовок сообщения: Ответить с цитатой

BuXTeR
Под столом!
Respect
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Показать сообщения:   
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ Часовой пояс: GMT + 7
Страница 1 из 1

 

 
Аватары: Вкл|Выкл   ЮзерИнфо: Вкл|Выкл   Подписи: Вкл|Выкл
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы