Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Создание Массива Объектов класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Слово перевётрыш http://www.cyberforum.ru/cpp-beginners/thread360697.html
// // Переделать программу что бы она считала не коол-во перевёртышей а кол-во не перевёртышей. //--------------------------------------------------------------------------- //Дан массив...
C++ Двунаправленный кольцевой список Ребята, спасайте. Очень много дают информации, всё не успеваю освоить. Потихоньку стараюсь наверстать, но срочно необходимо решить 2 задания: 1. Пусть L обозначает кольцевой двунаправленный ... http://www.cyberforum.ru/cpp-beginners/thread360694.html
C++ Помогите найти ошибки. С++. ООП
Собственно Задание: 1. В соответствии с вариантом заданий 1 создать класс, в котором определяются закрытые свойства и открытые методы для следующих операций над объектами: • Конструктор по...
Массивы строк и функция strcpy C++
#include<iostream> #include<cstring> #include<cctype> using namespace std; int mystrcpy( char *stl ,char *str); int main() {
C++ Умножение матрицы неизвестного размера http://www.cyberforum.ru/cpp-beginners/thread360669.html
задание такоэ нужно ввести размерность 2 матриц с клавиатуры а потом их перемножить... но проблема в том что не знаю как записать динамичный массив... подскжите пожалуста...я толька знаю что нужно...
C++ Перевести программу с языка Паскаль на С++ Требуется перевести программу задания С4 из ЕГЭ 2012 с языка Паскаль\Бейсик на язык С++. Задание представлено на странице 23 под пунктом С4, а подробное решение с кодом и описанием на странице 33. подробнее

Показать сообщение отдельно
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
05.10.2011, 15:46
Главная проблема -- в декомпозиции. Сущности выделены не очень корректно.

Например, почему класс Goods назван во множественном числе? Зачем в классе Goods есть метод search? Что он ищет внутри одного объекта? Получается не логично -- товар ищет сам себя в списке.

C++
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
#include <iostream>
#include <cstring>
#include <ctime>
#include <cstdlib>
 
class Good {
 public:
  Good() : year_(0), name_(NULL) {}
  Good(int year, const char *name)
   : year_(year),
   name_(strcpy(new char[strlen(name) + 1], name)) {}
  void setYear(int year) { year_ = year; }
  int getYear() const { return year_; }
  void setName(const char *name) {
    delete name_;
    name_ = strcpy(new char[strlen(name) + 1], name);
  }
  const char *getName() const { return name_; }
  virtual ~Good() {
    delete [] name_;
  }
  friend std::ostream &operator<<(std::ostream &stream,
    const Good &good) {
    return stream << "Name: " << good.getName() << std::endl
      << "Year: " << good.getYear() << std::endl;
  }
 private:
  int year_;
  char *name_;
};
 
char *randomSymbols(size_t n, char *buffer) {
  buffer[n] = '\0';
  for (size_t i = 0; i < n; ++i)
    buffer[i] = 'a' + rand() % ('z' - 'a' + 1);
  buffer[0] += 'A' - 'a';
  return buffer;
};
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  size_t goodsCount = rand() % 5 + 15;
  Good *goods = new Good[goodsCount];
 
  char buffer[11];
  for (size_t i = 0; i < goodsCount; ++i) {
    goods[i].setName(randomSymbols(9, buffer));
    goods[i].setYear(rand() % 7 + 2005);
    std::cout << goods[i];
  }
 
  // поиск товара по году:
  int year = rand() % 6 + 2009;
  std::cout << std::endl << "Searching for good with year " << year
    << std::endl;
 
  for (size_t i = 0; i < goodsCount; ++i)
    if (goods[i].getYear() == year)
      std::cout << goods[i];
 
  delete [] goods;
  return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru