Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2012, 22:15   #21
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
говорю как жертва обучения на делфе.
Тебе просто не везло )
Я тоже могу от Foxpro языка долго плеваться в условиях ООП, но все же.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.07.2012, 22:27   #22
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Такой вот ООПэшный вариант =)

Код:
class factorial{
private:
    int n;
public:
    factorial(int a){if(a==0) n = 1; else n=a*factorial(a-1).n;};
    int Value(){return n;};
};
...
cout << factorial(5).Value();
Можно придумать интересные перегрузки операторов ++ -- = ...
Kostia вне форума Ответить с цитированием
Старый 15.07.2012, 22:28   #23
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Kostia
попробуй чисто математически подумать
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 15.07.2012, 22:36   #24
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
чисто математически подумать
Так что ли?
Код:
int i; for(i=1;;++i*i)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.07.2012, 22:41   #25
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Stilet
ну ты хотел предложить классический линейный расчет факториала? это чисто алгоритмическое решение
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 15.07.2012, 22:46   #26
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Продолжаем парад изврата =)

Код:
    int n = 5, r = 1;
    lable1:
        r *= (n--);
        if(n>1) goto lable1; else goto lable2;
    lable2:
Код:
    int m = 1;
    for(int i=5; i > 1; m *= i--){};
Код:
int r = 1;
    for(const int &x : {1,2,3,4,5}) r *= x;
    cout << r;
Kostia вне форума Ответить с цитированием
Старый 15.07.2012, 22:55   #27
_ku4er_
 
Регистрация: 15.07.2012
Сообщений: 7
По умолчанию

как то разговор уже отошел от темы... что мне делать?
_ku4er_ вне форума Ответить с цитированием
Старый 15.07.2012, 23:01   #28
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Kostia
вот третий вариант очень близкий к тому, что я имел в виду

т.е нужна последовательность от 2 до n, и все числа перемножить. необходима функция-генератор последовательности и некая редуктивная функция, которая принимает на вход оператор, который надо применить ко всем членам последовательности и собственно сама последовательность.
на схеме можно написать так:
Код:
(define (fact n)
    (apply * (iota n 1)))

(fact 6)
в guile функция iota немного нестандартная, поэтому код слегка отличается
http://ideone.com/llP7A

на питоне примерно так же, аналог apply (или reduce) там есть. но на чисто функциональном языке такой вариант приходит одним из первых

то же самое можно написать и на плюсах, iota в новом стандарте появилась, свертка была - accumulate.

Код:
uint64_t factorial(uint8_t n) 
{ 
	uint64_t p = 1; 

	if (n != 0) { 
		std::vector<uint8_t> v(n); 
		std::iota(v.begin(), v.end(), 1); 
		p = std::accumulate(v.begin(), v.end(), p, std::multiplies<uint64_t>()); 
	} 

	return p; 
}
но конкретно на плюсах это будет наверняка последний вариант, который придет в голову)

со схемой просто большему можно научиться, даже если эти знания никогда и не применять
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 15.07.2012 в 23:08.
pproger вне форума Ответить с цитированием
Старый 15.07.2012, 23:11   #29
_ku4er_
 
Регистрация: 15.07.2012
Сообщений: 7
По умолчанию

pproger думаю мне нужно не количество знаний, а их доступность новичку и польза в будущем, когда буду серьезно в этом разбираться. Из программирования я ни знаю общим счетом ничего, но хочу этим заниматься.

Так что главное для меня сейчас - изучить азы, разобраться что и как.
_ku4er_ вне форума Ответить с цитированием
Старый 15.07.2012, 23:12   #30
crazy horse
ios developer
Старожил
 
Аватар для crazy horse
 
Регистрация: 16.11.2007
Сообщений: 2,885
По умолчанию

Не слушайте всех этих извращенцев и подумайте 30 раз, прежде, чем вообще наступать на грабли программирования. Иначе, вам с ними общаться придется ближайшие лет 30-40.
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
crazy horse вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обоснование выбора языка программирования RikkiTan Помощь студентам 15 25.06.2012 11:09
Выбор языка програмирования J.Bond Помощь студентам 2 03.03.2011 23:05
Выбор языка програмирования для создания программы Mayskiykot Помощь студентам 0 13.01.2011 10:23
Обоснование выбора языка программирования Delphi bamiva Помощь студентам 9 02.06.2010 09:52
Вопрос по поводу гибкости языка С++(к профи) shurik_7866 Общие вопросы C/C++ 14 18.12.2009 09:41