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

Пример с помощью класса - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Orion6767
2 / 2 / 0
Регистрация: 26.10.2010
Сообщений: 67
13.02.2012, 22:07     Пример с помощью класса #1
Решить следующий пример с помощью класса:

Пример с помощью класса

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
#include <iostream.h>
#include <math.h>
class my
{
double b;
int i;
public:
void f1(double x,double y,double z)
{ 
b=(abs((pow (x,y/x)-pow(sqrt (y/x),3))+(y-x)*((cos(y)-z/(y-x))/(1+pow((y-x*x),2));
}
void f2(void)
{
cout<<"b="<<b<<endl;
}
}
main()
{
double x = 1.825e2;
double y = 18.225;
double z = -3.298e-2;
my fun1;
fun1.f1(x,y,z);
fun1.f2();
cout<<endl;
}
Ругается на 10 строчку
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
13.02.2012, 22:38     Пример с помощью класса #2
Цитата Сообщение от Orion6767 Посмотреть сообщение
Ругается на 10 строчку
Со скобками намудрили.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6160 / 2889 / 282
Регистрация: 04.12.2011
Сообщений: 7,689
Записей в блоге: 3
13.02.2012, 22:39     Пример с помощью класса #3
Цитата Сообщение от Orion6767 Посмотреть сообщение
my fun1;
my fun1=new my();//?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
13.02.2012, 22:41     Пример с помощью класса #4
Цитата Сообщение от IGPIGP Посмотреть сообщение
my fun1=new my();//?
Не понял
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6160 / 2889 / 282
Регистрация: 04.12.2011
Сообщений: 7,689
Записей в блоге: 3
13.02.2012, 22:47     Пример с помощью класса #5
Цитата Сообщение от Orion6767 Посмотреть сообщение
my fun1;
вроде объявление...
Разве не нужно формально вызвать конструктор по умолчанию?
Чем в таком разе объявление отличается от определения?
Не настаиваю, просто не пробовал так
Orion6767
2 / 2 / 0
Регистрация: 26.10.2010
Сообщений: 67
13.02.2012, 23:03  [ТС]     Пример с помощью класса #6
Думаю не столь это важно, препод ничего не скажет) Я щяс вставил пример из другого вариант, и всё норм, и ответы совпадают. Проблема записи примера.

Добавлено через 7 минут
Исправил)

Воть рабочий код:

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
#include <iostream.h>
#include <math.h>
 
class my
{
float b;
int i;
public:
void f1 (double x, double y, double z)
{ 
b = fabs ( pow(x,y/x) - pow((y/x),1.0/3.0) ) + (y-x) * ( (cos(y)-(z/(y-x)) )/(1 + pow(y-x, 2)));
}
void f2(void)
{
cout<<"b="<<b<<endl;
}
}
 
main()
{
double x = 1.825*pow(10,2);
double y = 18.225;
double z = -3.298*pow(10,-2);
my fun1;
fun1.f1(x,y,z);
fun1.f2();
cout<<endl;
}
И ответы совпадают. Правда по условию ответ - 1.2131 (округлённый), а у меня не округлённый - 1.21308. Ну то лан.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6160 / 2889 / 282
Регистрация: 04.12.2011
Сообщений: 7,689
Записей в блоге: 3
13.02.2012, 23:07     Пример с помощью класса #7
Цитата Сообщение от soon Посмотреть сообщение
Не понял
Чисто функциональный класс не требует инстантиализации?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
14.02.2012, 07:56     Пример с помощью класса #8
Цитата Сообщение от IGPIGP Посмотреть сообщение
my fun1=new my();
Если я вас правильно понял, то:
Это С++. Не С#, не Java. Здесь переменные классов - не ссылочные типы, а типы значений. Они выделяются на стеке и уничтожаются по выходе из своей области видимости. Поэтому строка
C++
1
my fun1 = new my();
будет содержать синтаксическую ошибку, поскольку оператор new возвращает указатель типа my на выделенную область памяти, а в классе нет implicit конструктора, принимающего такой указатель.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6160 / 2889 / 282
Регистрация: 04.12.2011
Сообщений: 7,689
Записей в блоге: 3
14.02.2012, 15:09     Пример с помощью класса #9
Цитата Сообщение от silent_1991 Посмотреть сообщение
в классе нет implicit конструктора, принимающего такой указатель
Чистый С++ - пока лес для меня. Я думал, что если пользовательский конструктор не определен, то предоставляется по умолчанию и, в этом случае, в частности, не принимает, а возвращает указатель оператору new коим и вызывается... Членами my являются методы, тоже, вроде ссылочные переменные похожие на массивы но Rvalue в отличие от них... Другое дело, что под них не нужно выделять дополнительную память при создании нового объекта.
Констатирую, что у меня в голове - каша. Нужно читать.
Спасибо
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
14.02.2012, 23:38     Пример с помощью класса #10
Цитата Сообщение от IGPIGP Посмотреть сообщение
если пользовательский конструктор не определен, то предоставляется по умолчанию
Совершенно верно.

Цитата Сообщение от IGPIGP Посмотреть сообщение
не принимает, а возвращает указатель оператору new коим и вызывается
Нет, он просто-напросто как-то манипулирует с памятью, заботливо выделенной компилятором. Повторяю, оператор new из другой оперы.

Цитата Сообщение от IGPIGP Посмотреть сообщение
Членами my являются методы, тоже, вроде ссылочные переменные похожие на массивы но Rvalue в отличие от них
Эээ... Методы - ссылочные переменные, похожие на массивы?

Цитата Сообщение от IGPIGP Посмотреть сообщение
Нужно читать
Поддерживаю.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6160 / 2889 / 282
Регистрация: 04.12.2011
Сообщений: 7,689
Записей в блоге: 3
14.02.2012, 23:56     Пример с помощью класса #11
Цитата Сообщение от silent_1991 Посмотреть сообщение
Методы - ссылочные переменные, похожие на массивы?
Совершенно верно. То есть вызов (обращение) осуществляется по адресу, а подставляется тип возврата, если не void.
Массивы - тоже ссылки (указатели преобразуемые неявно), а возврат - тип значения. Вроде похоже. Хранятся в разных сегментах и отличий хватает конечно...
Понятно, что методы определенные в классе - inline (как пожелание но не гарантия)...
В целом, что я могу о различиях объявления встроенных и пользовательских типов, да ещё в языке с который знаком поверхностно... -Читать, читать, читать
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
15.02.2012, 00:19     Пример с помощью класса #12
Цитата Сообщение от IGPIGP Посмотреть сообщение
То есть вызов (обращение) осуществляется по адресу, а подставляется тип возврата, если не void.
Это не делает методы ссылочными переменными, похожими на массивы. Методы вообще нельзя назвать переменными. Методы - это методы. Массивы - это массивы. Указатели - это указатели.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
15.02.2012, 00:46     Пример с помощью класса #13
Цитата Сообщение от IGPIGP Посмотреть сообщение
Совершенно верно. То есть вызов (обращение) осуществляется по адресу, а подставляется тип возврата, если не void.
Массивы - тоже ссылки (указатели преобразуемые неявно), а возврат - тип значения. Вроде похоже. Хранятся в разных сегментах и отличий хватает конечно...
Понятно, что методы определенные в классе - inline (как пожелание но не гарантия)...
В целом, что я могу о различиях объявления встроенных и пользовательских типов, да ещё в языке с который знаком поверхностно... -Читать, читать, читать
Это вы про какой язык говорите? C#/Java?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2012, 11:47     Пример с помощью класса
Еще ссылки по теме:

C++ Пример класса со статическим членом
C++ Нужен пример класса
Нужен пример неизменяемого класса и класса от которого нельзя наследоваться C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
15.02.2012, 11:47     Пример с помощью класса #14
Chelioss, в них методы тоже не являются объектами. Рефлексия позволяет получить объект, отражающий определённый метод, но это уже совсем из другой оперы.
Yandex
Объявления
15.02.2012, 11:47     Пример с помощью класса
Ответ Создать тему
Опции темы

Текущее время: 08:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru