powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не могу реализовать тестовое задание.
26 сообщений из 26, показаны все 2 страниц
Не могу реализовать тестовое задание.
    #39334949
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Читаю тестовое задание и не понять как в классе реализовать объект с различными типами "целое число", "вещественное число", "строка".
Само задание:
Реализовать двухсвязный список. Каждый элемент списка может содержать один объект. Объект может быть трех типов: "целое число", "вещественное число", "строка". В разных узлах одного списка может быть любой объект одного из допустимых типов. Каждый объект должен иметь возможность вывести свое содержимое на консоль. У списка должен быть метод, выводящий все элементы.
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39334957
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаешь классу 4 свойства: тип, целое значение, вещественное вещественное, строка.
При записи устанавливаешь тип в соответствии с типом записывываемого значения, значение пишешь в соответствующее свойство.
Метод Вывести() смотрит на тип и в соответствии с ним выводит требуемое.
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39334964
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
От Объекта наследуешь: объект целое число, объект вещественное число, объект строка + виртуальные функции
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39334966
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я на словах понимаю что делать не могли бы Вы привести примерный код?
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39334972
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
class object
{
	public:
		virtual void print()
		{	cout << "object" << endl; }
};

class float_object : public object
{
	public:
		void print()
		{	cout << value << endl; }
	
	private:
		float value;
};


int main() 
{
	
	object *mas[3];
	
	mas[0] = new object();
	mas[1] = new object();
	mas[2] = new float_object();
	
	for(size_t i=0;i<3;i++)
		mas[i]->print();
		
	return 0;
}

...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39334981
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему object *mas[3]; Зачем указатель?
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335005
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456,

мне надо создать не три object, а два object и один float_object.
Эти три разных объекта ( 2*object + 1*float_object ) для удобства работы пихаю в один массив.
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335011
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно было бы сделать так object mas[3][1];?
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335017
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456,

делай как Dima_T посоветовал :)
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335043
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо, если бы Dima_T не на словах описал, а реальным кодом хотя бы приблизительно.
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335079
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456Не могу реализовать тестовое задание.
son456Я на словах понимаю что делать не могли бы Вы привести примерный код?

Не можешь - ищи другую работу :)
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335107
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m_Slason456,

делай как Dima_T посоветовал :)
Если посмотреть темы ТС, там сплошное "Не могу, помогите за меня...."
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335132
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему-то никто не посоветовал использовать union для выпендрёжа
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335175
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZПочему-то никто не посоветовал использовать union для выпендрёжа
потому что ещё не выбрана реализация строки
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335187
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZПочему-то никто не посоветовал использовать union для выпендрёжа

Потому что задача - не на union, а на проектирование иерархии объектов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335195
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456Хорошо, если бы Dima_T не на словах описал, а реальным кодом хотя бы приблизительно.
Чего там описывать? Я тебе самый примитивный способ решения описал.
Слова в код почти один в один превращаются.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
class multi_type {
  int type = 0;
  int val_int = 0;
  float val_float = 0;
public:
  void set(int v) {
     val_int = v;
     type = 1;
  }

  void set(float v) {
     val_float = v;
     type = 2;
  }

  void print() {
   switch(type) {
     case 0:
        cout << "X3";
        break;
     case 1:
        cout << val_int;
        break;
     case 2:
        cout << val_float;
        break;
   }
  }
}

...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335289
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПотому что задача - не на union, а на проектирование иерархии объектов.
где иерархия?
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335320
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилгде иерархия?
ListItem от которого наследуются IntListItem, FloatListItem и StringListItem.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335407
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилNekZПочему-то никто не посоветовал использовать union для выпендрёжа
потому что ещё не выбрана реализация строки
char * или string * не годятся?
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335762
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажите, а если вводить с клавиатуры то как определить что мы ввели (какой тип имею ввиду)? Интересует дальнейшая реализация кода m_Sla?
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335774
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456Скажите, а если вводить с клавиатуры то как определить что мы ввели (какой тип имею ввиду)?
регулярные выражения помогут
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335822
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вы не могли б привести пример. Хоть как это будет выглядеть.
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335837
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456А вы не могли б привести пример. Хоть как это будет выглядеть.
Код: php
1.
2.
3.
4.
5.
6.
7.
if ( /^\d+\./\d+$ ) {
   print "float";
} elseif ( /^\d+$/ ) {
   print "int";
} else {
   print "string"'
}
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335854
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456Само задание:
Реализовать двухсвязный список. Каждый элемент списка может содержать один объект. Объект может быть трех типов: "целое число", "вещественное число", "строка". В разных узлах одного списка может быть любой объект одного из допустимых типов. Каждый объект должен иметь возможность вывести свое содержимое на консоль. У списка должен быть метод, выводящий все элементы.Если делать в объектно-ориентированном стиле (с виртуальными методами), то можно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
#include <assert.h>
#include <stdio.h>
#include <string>

using namespace std;

class list_item_t {
public:
  virtual ~list_item_t() {}
  const list_item_t* prev() const {return _prev;}
  const list_item_t* next() const {return _next;}
  list_item_t* prev() {return _prev;}
  list_item_t* next() {return _next;}
  virtual void print() const = 0;
private:
  list_item_t* _prev = nullptr;
  list_item_t* _next = nullptr;
  friend class list_t;
};

class list_t {
public:
  // запрещаем неявное копирование
  list_t(const list_t& source) = delete; // удаляем конструктор копирования
  list_t& operator=(const list_t& source) = delete; // удаляем оператор присваивания

  list_t() {}
  ~list_t() {clear();}
  const list_item_t* first() const {return _first;}
  const list_item_t* last() const {return _last;}
  list_item_t* first() {return _first;}
  list_item_t* last() {return _last;}
  void add(list_item_t* item) {insert(item, _last, nullptr);} // добавляет в конец списка
  void insert(list_item_t* item, list_item_t* prev, list_item_t* next);
  void clear();
  void print_items() const;
private:
  list_item_t* _first = nullptr;
  list_item_t* _last = nullptr;
};

void list_t::insert(list_item_t* item, list_item_t* prev, list_item_t* next) {
  assert(item->_prev == nullptr);
  assert(item->_next == nullptr);
  item->_prev = prev;
  item->_next = next;
  if (prev != nullptr) {
    assert(prev->_next == next);
    prev->_next = item;
  } else {
    assert(_first == next);
    _first = item;
  }
  if (next != nullptr) {
    assert(next->_prev == prev);
    next->_prev = item;
  } else {
    assert(_last == prev);
    _last = item;
  }
}

void list_t::clear() {
  list_item_t* i2;
  for (list_item_t* i = _first; i != nullptr; i = i2) {
    i2 = i->_next;
    delete i;
  }
  _first = _last = nullptr;
}

void list_t::print_items() const {
  for (const list_item_t* i = _first; i != nullptr; i = i->_next) {
    i->print();
  }
}

class int_list_item_t : public list_item_t {
public:
  explicit int_list_item_t(int value) : _value(value) {}
  virtual void print() const override {printf("int %i\n", _value);}
private:
  int _value;
};

class float_list_item_t : public list_item_t {
public:
  explicit float_list_item_t(float value) : _value(value) {}
  virtual void print() const override {printf("float %f\n", _value);}
private:
  float _value;
};

class string_list_item_t : public list_item_t {
public:
  explicit string_list_item_t(const char value[]) : _value(value) {}
  virtual void print() const override {printf("string %s\n", _value.c_str());}
private:
  string _value;
};

int main() {
  list_t list;
  int_list_item_t* i1 = new int_list_item_t(1); list.add(i1);
  float_list_item_t* i3 = new float_list_item_t(0.5f); list.add(i3);
  string_list_item_t* i2 = new string_list_item_t("abc"); list.insert(i2, /*prev:*/i1, /*next:*/i3);

  assert(list.first() == i1);
  assert(list.first()->next() == i2);
  assert(list.first()->next()->next() == i3);
  assert(list.first()->next()->next()->next() == nullptr);

  list.print_items();
  return 0;
}

Вывод на консоль:
Код: sql
1.
2.
3.
int 1
string abc
float 0.500000


son456Скажите, а если вводить с клавиатурыЭто разве требуется в задании? Можно просто за-hardcode-ить элементы списка.

son456С такими советами у Вас в стране будет майдан.Вы работаете в Госдепе США?

m_Sla
Код: plaintext
1.
2.
3.
4.
5.
	object *mas[3];
	
	mas[0] = new object();
	mas[1] = new object();
	mas[2] = new float_object();

Это не список. В задании требуется список:son456Реализовать двухсвязный список.
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39335860
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр Седовm_Sla
Код: plaintext
1.
2.
3.
4.
5.
	object *mas[3];
	
	mas[0] = new object();
	mas[1] = new object();
	mas[2] = new float_object();

Это не список. В задании требуется списокя за него задание делать не собирался
...
Рейтинг: 0 / 0
Не могу реализовать тестовое задание.
    #39422900
Военком
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_kson456Не могу реализовать тестовое задание.
son456Я на словах понимаю что делать не могли бы Вы привести примерный код?

Не можешь - ищи другую работу :)

Так он и ищет работу, хотя "работает" программистом. Все его темы здесь связаны с заданиями, которые ему дает начальство. А он попутно ищет другую работу, денег видать мало платят))))
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не могу реализовать тестовое задание.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]