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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
Блондинка_)
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 23
#1

Использование классов - C++

26.01.2011, 12:55. Просмотров 2254. Ответов 27
Метки нет (Все метки)

Класс Члены класса Методы Операторы перегрузки Исходные данные
Матрица Размерность Конструктор, Сложение (+), A=(5 1 7
матрицы, деструктор, вычитание (-), 10 -2 1
элементы метод вывода умножение (*) 2-х 0 1 2)
матрицы матрицы, матриц, умножение
метод вычисления матрицы на число (*=) B= (2 4 1
определителя 2 1 0
матрицы 7 2 1)



Результаты
С=2(A–B)(A2 + B)
Найти |C|
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2011, 12:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Использование классов (C++):

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов - C++
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

Использование классов - C++
Составить программу для объявления и использования данных типа класс согласно индивидуальному заданию, Базовый (транспортное средство) ...

Использование классов - C++
Разработать заголовочный файл, содержащий описание соответствующего класса, функции и операторы. Описание функций-членов класса разместить...

Использование классов - C++
Расскажите пожалуйста на кокретных примерах как и где модно использовать классы?

Использование классов - C++
Не хочет запускаться, помогите найти ошибку #include <iostream> #define N 5 using namespace std; class electronic_store { ...

Использование классов - C++
Здравствуйте господа программисты. Помогите мне пожалуста. В Курсовой есть такое задание: "Создать телефонную книгу" Программный проект...

27
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
26.01.2011, 13:47 #16
и при этом надо ещё разрешить присваивание
C++
1
t[2]=t[1];
. А если ещё добавить декларацию
C++
1
Matrix t1;
, то надо разрешить и присваивание
C++
1
t[1]=t1[1];
, но тоже с контролем размера и исключением при несовпадении. Но при
C++
1
r=t[1];
и
C++
1
t1=t2
должны копироваться и размеры тоже.
0
Блондинка_)
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 23
26.01.2011, 13:48  [ТС] #17
А подскажите как это решить:
В целочисленный массив X(n) после каждого нечетного элемента
вставить максимальный простой элемент этого же массива. Определить
среднее арифметическое простых элементов массива до и после вставки.
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
26.01.2011, 13:50 #18
И если добавить
C++
1
Row r1;
, то должно быть разрешено присваивание
C++
1
r=r1;
, при котором тоже будет копироваться размер.

Добавлено через 2 минуты
Цитата Сообщение от Блондинка_) Посмотреть сообщение
В... массив X(n) после... вставить
А что с массивом должно произойти? Ведь у него есть количество элементов. Оно должно увеличится? Определись, чего хочешь - придёт и решение.
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
26.01.2011, 13:51 #19
taras atavin, у меня всё это есть, за исключением условия, что результат операции [] не должен иметь метода resize (которое я вообще не представляю как выполнить). Есть и присваивания всевозможные, и константная-неконстантная операция [] реализована... Все выполняется.
0
Блондинка_)
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 23
26.01.2011, 13:53  [ТС] #20
Нужно определить среднее арифметическое простых элементов массива до и после вставки!!!
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
26.01.2011, 14:02 #21
Цитата Сообщение от silent_1991 Посмотреть сообщение
taras atavin, странное задание... Как так, оператор [] возвращает объект класса, но этот объект не должен иметь метода ресайз, а сам класс должен... Очень странно. Я понимаю так: либо класс имеет публичный метод, либо он его не имеет.
Оно так. Но ведь можно иметь два класса. Не знаю, может предок с потомком, но по оператору должна возвращаться не совсем такая строка, как декларируется в качестве самостоятельного объекта. То есть, "строка" и "строка матрицы" - должно быть не одно и тоже. Но при этом надо в обе стороны поддерживать присваивание. Какой класс лучше от какого наследовать? И можно ли вообще в наследнике отключить метод предка? Не перенести в привэйт, а полностью исключить его из класса.

Добавлено через 6 минут
И если оператор возвращает объект, можно ли класс этого объекта объявить в привэйте? То есть
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Matix
{
 private:
 Row *data;
 unsigned int cols;
 unsigned int rows;
 class RowOfMatrix
 {
   ....
 }
 public:
 RowOfMatrix & operator [](int index)
 {
  return (RowOfMatrix)(data[index]);
 }
 ...
};
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
26.01.2011, 14:26 #22
Логично было бы, конечно, наследовать класс RowOfMatrix от Row, ведь строка матрицы - это частный случай строки.
На счёт исключить - не знаю, честно говоря. Может действительно в приват его запихнуть и без реализации оставить.
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
27.01.2011, 06:41 #23
Цитата Сообщение от silent_1991 Посмотреть сообщение
Может действительно в приват его запихнуть и без реализации оставить.
А для этого метод предка обязательно должен быть виртуальным? И если в предке уже есть
C++
1
2
3
4
Row & Row::opeartor = (Row &x)
{
 ...
}
, то это уже гарантирует работу данного оператора с правым операндом, тип которого - потомок? И надо ли указывать в предке, что этот оператор виртуальный, чтоб перекрыть его в потомке (в предке при несовпадении размеров надо менять размер левого операнда, а в потомке в той же ситуации бросать исключение)?

Добавлено через 1 минуту
И если оператор возвращает объект, можно ли класс этого объекта объявить в привэйте? То есть допустимо ли
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Matix
{
 private:
 Row *data;
 unsigned int cols;
 unsigned int rows;
 class RowOfMatrix
 {
   ....
 }
 public:
 RowOfMatrix & operator [](int index)
 {
  return (RowOfMatrix)(data[index]);
 }
 ...
};
?
0
Сабина Сафронов
0 / 0 / 0
Регистрация: 22.12.2010
Сообщений: 6
27.01.2011, 07:00 #24
Кристофер, что-то я тут ничего не могу понять что тебе тут написали, это 3 варианта решения одной задачи?
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
27.01.2011, 08:49 #25
taras atavin, нет, по-моему виртуальным быть не обязан. Просто вы объявляете его в предке в паблике, а в потомке скрываете его в привате.
На счёт объявления класса в привате - не уверен, лучше объявите его за пределами и сделайте композицию. А с другой стороны, почему бы вам не проверить это?)))
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
27.01.2011, 09:04 #26
Цитата Сообщение от silent_1991 Посмотреть сообщение
делайте композицию.
А что это такое?
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
27.01.2011, 09:17 #27
Это когда элементами одного класса являются экземпляры другого. Но я уже понял, что вам тут не композиция нужна, а нужно просто, чтобы метод одного класса возвращал экземпляр другого. Просто не мучайтесь и объявите этот класс отдельно, а не внутри другого класса.
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
27.01.2011, 09:23 #28
А смысл его снаружи объявлять? В результате же можно будет вне Matrix создавать объекты класса RowOfMatrix. Я же хотел ещё запретить создавать вне Matrix даже указатели на RowOfMatrix. Хотя, это уже не обязательно.

Добавлено через 3 минуты
Цитата Сообщение от silent_1991 Посмотреть сообщение
Это когда элементами одного класса являются экземпляры другого.
Понятно. В принципе, с таким подходом я знаком, даже использовал чаще наследования, но для других задач и самого слова не знал. И в данном случае, композиция тоже имеет место:
C++
1
2
3
4
5
class Matrix
{
 private:
  Row *data;
 ...
0
27.01.2011, 09:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2011, 09:23
Привет! Вот еще темы с ответами:

Использование классов Worda - C++
Необходимо подключить библиотеку Ворда и использовать ее классы и методы. Не знаю как описать класс. Спасибо

Использование классов (sha1) - C++
В sha1.h /* sha1.h */ #ifndef SHA1_H #define SHA1_H #include <stdint.h> #ifdef __cplusplus extern "C" { ...

Использование наследования классов - C++
День добрый, форум! Вот такой вопрос: Есть родительский класс A, у него 2 потомка, B и C. Внутри другого класса F я создаю объект...

Использование функциональных классов - C++
Помогите решить задачу: Создать список из строк длиной не более 100 символов. Из всех подряд идущих строк с одинаковым количеством...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.