Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нахождение факториала 
:(
    Опции темы
alexdndz
Дата 20.10.2009, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 20.10.2009

Репутация: нет
Всего: нет



Необходимо реализовать класс нахождения факториала. Код есть, помогите найти ошибку
Код

#include <iostream.h>
#include <conio.h>
#include <math.h>
class fact
{
private: int a;
public: fact() {a=1;}
fact (int da) {a=da;}
void set (int da) {a=da;}
long int factorial (void);
}
long int fact :: factorial (void)
       {long int s(1);
        for (int i=1;i<=a;i++) s*=i;
        return s;}
int main () {
fact F(7);
cout<<"faktorial F="<<F.factorial();
}

PM MAIL   Вверх
baldina
Дата 20.10.2009, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



после определения класса должна быть точка с запятой.

....если отформатировать код, читать его станет легче...
PM MAIL   Вверх
alexdndz
Дата 20.10.2009, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 20.10.2009

Репутация: нет
Всего: нет



Цитата(baldina @ 20.10.2009,  23:38)
после определения класса должна быть точка с запятой.

....если отформатировать код, читать его станет легче...

спасибо большое! всё работает!
PM MAIL   Вверх
DrHex
Дата 20.10.2009, 23:51 (ссылка)   | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 2.5.2009

Репутация: нет
Всего: нет



капец.........
--------------------
google.com и это все.
PM MAIL   Вверх
xvr
Дата 21.10.2009, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Жуть, скоро для умножения на 2 класс понадобится  smile 
Код

template<int v>
struct Factorial {
 enum {value = Factorial<v-1>::value*v};
};

template<>
struct Factorial<0> {
 enum {value = 1};
};

cout << Factorial<5>::value << endl;
  smile 

PM MAIL   Вверх
bsa
Дата 21.10.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



xvr, бедный мозг топикстертера...  smile 
PM   Вверх
xvr
Дата 22.10.2009, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(bsa @ 21.10.2009,  12:11)
xvr, бедный мозг топикстертера...  smile

Пусть тренирует  smile К тому же это короче, чем он написал  smile 

PM MAIL   Вверх
kemiisto
Дата 22.10.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Цитата(xvr @  22.10.2009,  15:17 Найти цитируемый пост)
К тому же это короче, чем он написал

Ну да. Только за использование рекурсивной реализации любого алгоритма, представляющего случай хвостовой рекурсии, надо бить по рукам. smile  А у ТСа, в этом плане, всё было правильно... 

Зато шаблоны... Ну, ну...  smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
xvr
Дата 22.10.2009, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(kemiisto @ 22.10.2009,  15:01)
Ну да. Только за использование рекурсивной реализации любого алгоритма, представляющего случай хвостовой рекурсии, надо бить по рукам. smile

Рекомендую посмотреть внимательнее - это вычисление факториала НА ЭТАПЕ КОМПИЛЯЦИИ.  smile  Без рекурсии это не делается  smile 
Цитата

  А у ТСа, в этом плане, всё было правильно... 
Класс с функцией правильней, чем константа?  smile 


PM MAIL   Вверх
kemiisto
Дата 22.10.2009, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Цитата(xvr @  22.10.2009,  21:38 Найти цитируемый пост)
Рекомендую посмотреть внимательнее - это вычисление факториала НА ЭТАПЕ КОМПИЛЯЦИИ.  

Я понял. Хотя как сказать понял... smile А это будет работать с произвольным числом, вводимым, скажем, с клавиатуры?

Цитата(xvr @  22.10.2009,  21:38 Найти цитируемый пост)
Класс с функцией правильней, чем константа?

Хм... Константа? То есть для любого числа значение факториала будет посчитано при компиляции!? smile Это как? 

Это сообщение отредактировал(а) kemiisto - 22.10.2009, 20:50


--------------------
PM MAIL WWW GTalk Jabber   Вверх
mes
Дата 22.10.2009, 20:54 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(kemiisto @  22.10.2009,  19:45 Найти цитируемый пост)
 А это будет работать с произвольным числом, вводимым, скажем, с клавиатуры?

нет..

Цитата(kemiisto @  22.10.2009,  19:45 Найти цитируемый пост)
Хм... Константа? То есть для любого числа значение факториала будет посчитано при компиляции!? smile Это как? 

это одна из сильных сторон шаблонов С++ - возможность описания расчета констант этапа компиляции.


--------------------
PM MAIL WWW   Вверх
IKM2007
Дата 22.10.2009, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: 3
Всего: 40



Цитата(kemiisto @  22.10.2009,  20:45 Найти цитируемый пост)
 А это будет работать с произвольным числом, вводимым, скажем, с клавиатуры?

Нет, считывается на этапе компиляции, то есть компилятор только для этого отдельного случая генерирует код. Это метапрограммирование.
Цитата(kemiisto @  22.10.2009,  20:45 Найти цитируемый пост)
Хм... Константа? То есть для любого числа значение факториала будет посчитано при компиляции!? smile Это как?

так


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
kemiisto
Дата 22.10.2009, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Цитата(IKM2007 @  22.10.2009,  21:57 Найти цитируемый пост)
Нет, считывается на этапе компиляции, то есть компилятор только для этого отдельного случая генерирует код. 

Тогда это не решение задания, а просты "понты". smile Просто ещё раз подтверждает мысль, о том, что такое обобщённое программирование и как часто оно нужно в реальных задачах...

Цитата(IKM2007 @  22.10.2009,  21:57 Найти цитируемый пост)
Это метапрограммирование.

Строчкой выше написано, что это на самом деле было. smile 

Цитата(IKM2007 @  22.10.2009,  21:57 Найти цитируемый пост)
так 

Ну я как-то так себе и представлял...


--------------------
PM MAIL WWW GTalk Jabber   Вверх
bsa
Дата 22.10.2009, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



kemiisto, в данном случае это скорее всего не нужно. Но бывают задачи, когда факториал нужно считать от константы известной на этапе компиляции (например, задающей точность вычислений какой-нибудь функции через ряд Тейлора).
PM   Вверх
kemiisto
Дата 23.10.2009, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Цитата(bsa @  22.10.2009,  22:56 Найти цитируемый пост)
Но бывают задачи, когда факториал нужно считать от константы известной на этапе компиляции (например, задающей точность вычислений какой-нибудь функции через ряд Тейлора). 

Вот тут надо использовать константы. Причём явно. Взять и загнать в массивчик, скажем, отсюда. Там хоть и 20 чисел, но и глубина рекурсии редко бывает большой. smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0691 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.