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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2013, 23:22   #1
Alekzinder
Пользователь
 
Регистрация: 05.05.2012
Сообщений: 24
По умолчанию Классы и массивы объектов

Помогите пожалуйста, хотя бы с первым
1.Построить класс для работы с односвязным списком. Элементы списка – действительные числа. Создать два упорядоченных по возрастанию списка, слить их в один (также упорядоченный по возрастанию), построив новый список.
2.Класс "Прямоугольник" с данными верхняя левая и правая нижняя точки.
Объявить класс по приведенному ниже заданию в соответствии с номером варианта и определить для него конструктор по умолчанию, конструктор инициализации и конструктор преобразования.
Определить функции-члены класса для ввода и вывода членов-данных внутри объявления класса.
Составить программу, которая определяет четыре объекта класса и выводит их на экран. Первый объект должен инициализироваться по умолчанию, второй использовать конструктор инициализации, третий - преобразование типа своего параметра к типу своего класса, а четвертый - функцию ввода данных.
Выполнить программу и проверить соответствие заданных и полученных данных.
Определить функции ввода и вывода вне объявления класса и повторить выполнение программы.
Объявить функции ввода и вывода как "друзей" класса с параметром - объектом класса, передаваемым по значению. Изменить определение этих функций и повторить выполнение программы.
Объявить функции ввода и вывода как "друзей" класса с параметром - объектом класса, передаваемым по ссылке. Изменить определение этих функций и повторить выполнение программы.
Alekzinder вне форума Ответить с цитированием
Старый 28.10.2013, 17:11   #2
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Цитата:
1.Построить класс для работы с односвязным списком. Элементы списка – действительные числа. Создать два упорядоченных по возрастанию списка, слить их в один (также упорядоченный по возрастанию), построив новый список.

Код:
#include <ostream>




template<typename T>
class tlist {

     struct node {
         T     data;
         node* next;
     };

private:
     node* head;
     node* tail;
public:
     tlist(void): head(NULL), tail(NULL){}
     ~tlist() {
          this->clear();
     }
public:

     // добавление в хвост
     void add(const T& data) {
          node* n = new node();
          n->data = data;
          n->next = NULL; 
          if(head == NULL)
               head = tail = n;
          else {
               tail->next = n;
               tail       = n;
         }
     }

     // слияние
     void merge(const tlist& l1, const tlist& l2) {
          this->clear();
          const node* p1 = l1.head, *p2 = l2.head;

          while((p1 != NULL) || (p2 != NULL)) {
               if(p1 != NULL) {
                     if((p2 == NULL) || (p1->data <= p2->data)) {
                           this->add(p1->data);
                           p1 = p1->next;
                     }
               }

               if(p2 != NULL) {
                     if((p1 == NULL) || (p2->data <= p1->data)) {
                           this->add(p2->data);
                           p2 = p2->next;
                     }
               }
          }
    }

    // печать
    void print(std::ostream& hout) {
         for(const node* p = head; p != NULL; p = p->next)
               hout << p->data << ' ';
         hout << std::endl;
    }

    // чистка
    void clear(void) {
         node* tmp;
         while(head != NULL) {
               tmp  = head;
               head = head->next;
               delete tmp;
         }
         tail = NULL;
    }
};





int main(void){
      tlist<float> l1, l2, l3;

      for(int i = 0; i < 10; i++) {
          l1.add((float)i*2.0f);
          l2.add((float)i*2.0f + 1.0f);
      }
      l1.print(std::cout);
      l2.print(std::cout);

      l3.merge(l1, l2);
      l3.print(std::cout);
      return 0;
}
http://codepad.org/NpLBsdYO
Nuklon вне форума Ответить с цитированием
Старый 28.10.2013, 18:51   #3
Alekzinder
Пользователь
 
Регистрация: 05.05.2012
Сообщений: 24
По умолчанию

Спасибо большое!
Alekzinder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
классы объектов fkty Помощь студентам 55 08.10.2013 11:40
массивы объектов SAMOUCHKA Общие вопросы по Java, Java SE, Kotlin 3 04.08.2013 23:37
Движение объектов используя классы ryashya Паскаль, Turbo Pascal, PascalABC.NET 0 29.09.2011 00:07
Классы, объекты,поля объектов Mr_skiner Общие вопросы Delphi 9 10.03.2011 23:07
Чем отличаются классы от объектов в Delphi? JY_ Помощь студентам 1 25.01.2009 18:57