Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Центр помощи > [C++] Описание функции |
Автор: Tsunameh 9.5.2007, 12:06 |
Доброго времени суток ! Возникла вот такая задачка ; просьба написать код таким образом , чтобы можно было разобраться самостоятельно с книжкой ) тоесть наиболее простая запись , просто чтобы работало ) Итак: Описать функцию F(n,m) = (n!*m!)/(n*m)! , n,m >=0. При этом необходимо определить функцию , вычисляющую факториал. Заранее спасибо ) |
Автор: zkv 9.5.2007, 12:27 | ||
|
Автор: GIK 9.5.2007, 12:32 | ||||
В смысе она отдельна должна быть? Ну короче вот пока, если надо переделаю ![]()
Добавлено через 1 минуту и 22 секунды Упс, опоздал, решение уже есть ![]() |
Автор: keenara 9.5.2007, 12:48 | ||||
Позволю себе несколько замечаний (zkv заранее сорри). 1)Не вижу никакого смысла в двойной проверке корректности: если что-то не так, то внутренняя функция Fuct все равно скажет об ошибке и еще и передаст наружу сигнал сбоя. 2)unsigned и т.п. могут показаться сложными, а автор просил
3)Факториал - по опредлению рекурсивная процедура, поэтому вычислять ее при помощи рекурсии сам Джа велел. Поэтому предлагаю свой, более простой вариант.
|
Автор: GIK 9.5.2007, 13:02 | ||
Согласен с Вами, а кто такой Джа, простите? ![]() |
Автор: Tsunameh 9.5.2007, 13:19 |
Спасибо огромное и бальшущий вам риспект ) приду еще )) |
Автор: keenara 9.5.2007, 13:30 |
Захады дарагой! мы тут как раз на ваших задачках прокачиваемся ![]() |
Автор: keenara 9.5.2007, 14:14 | ||||||||||
Некоторые особо одаренные товарищи из числа авторов тем в этом разделе не в состоянии собрать прогу из готовых функций ![]()
В любом случае если косячок с аргументом будет то функция самого факториала нас все равно носом в это дело тыкнет
Ну если смотреть с философской точки зрения... усложнение кода, падение производительности, а главное - лишний геморрой при вычерчивании блок-схемы ![]()
я тоже, но многие писаются при виде этих "страшных" слов ![]()
Это что же такое туда надо засунуть чтобы стек переполнить? ![]() |
Автор: zkv 9.5.2007, 14:24 |
keenara, есть некоторые принципы, которых я придерживаюсь (по возможности не применять рекурсию, проверять ошибки где только можно - производительность перетопчется, особенно в таком контексте ![]() ![]() |
Автор: keenara 9.5.2007, 14:31 | ||||
Очень правильные принципы на самом деле, я тоже в СЕРЬЕЗНЫХ задачах их придерживаюсь, но в данном контексте... Ты пойми, я ж не из принципа все это говорю, а из сочуствия к кренделям которым все это дело придется защищать злобным преподам ![]()
Гы, тогда по логике нужно еще и добавить проверку корректности ввода в том плане чтобы туда буквы не вводили ![]() ![]() |
Автор: Rockie 9.5.2007, 18:36 | ||||
![]()
Добавлено через 3 минуты и 58 секунд еще на http://ru.wikipedia.org/wiki/Факториал:
|
Автор: keenara 9.5.2007, 18:45 |
Хе, я тоже тернарный оператор люблю, он красивый и почему-то в основном программерами незаслуженно забыт ![]() |
Автор: GIK 10.5.2007, 13:01 | ||
Если уж говорить о загружанности компа, и о прочих подобных вещах, то ему можно немого помочь:
|
Автор: zkv 10.5.2007, 13:13 |
не перемудрил? ![]() |
Автор: Rockie 10.5.2007, 13:21 | ||
keenara 1) Тернарный оператор это стандартный прием. Другое дело что к примеру мне он не нравится по причине нечитабельности. Равно как мне не нравится switch, мне понятнее if-else, if-else.. Впрочем это субъектив. 2) Если писать что-то для себя, то хоть
Но если ваш код смотрит кто-то другой, "нестандартные приемы" неуместны. GIK, не знал, что факториал единицы равен трем. |
Автор: dizzy1984 10.5.2007, 13:29 | ||
наВернА гИк ХаТел эТА?
но пАможит илИ наврИдИт - сПорныЙ вАпрос |
Автор: keenara 10.5.2007, 13:56 | ||||
Стандартный - понятие относительное. Именно этот прием очень многие не используют
С этим поспорю. Когда я пишу программы для всяких "Центров помощи", то естественно стараюсь сделать программу как можно проще и нагляднее, пусть даже в ущерб качеству. Но когда я пишу более серьезные вещи, СМОТРЕТЬ код (а не просто юзать) будут достаточно опытные кодеры, которые все эти нестандартные приемы выучили когда я еще погремушки в детсаду дебаггила ![]() А на всякий случай все равно все непонятные места документирую. Пара комментов и все станет ясно. |
Автор: Rockie 10.5.2007, 14:04 | ||
dizzy1984, навредит, так как этот вариант не подсчитает 0!
Откуда они знают эти приемы, если они нестандартные? Мы кажется про-разному понимаем это слово ![]() |
Автор: GIK 10.5.2007, 14:06 | ||
Точно, перемудрил ![]()
Добавлено через 1 минуту Вроде больше некуда урезать ![]() |
Автор: zkv 10.5.2007, 14:15 | ||
по вашему получается, что профессионалы пишут код так, что потом его никто без поллитры не разберет? ![]() GIK, (ехидно улыбаясь ![]() |
Автор: GIK 10.5.2007, 14:22 | ||
|
Автор: keenara 10.5.2007, 15:13 |
Это мы спьяну пишем не думая, а потом слова назад по-быстрому берём. Эсперанто прикопался к одной из прог (типа ошибку) заметил, но понял что не прав и заменил пост на 44 Я по ошибке прогу не в тот топик запостила и заменила на 11. Это все из-за того что невозможно полностью удалить пост. Вот и приходится его заменять откровенным флудом чтобы его кильнули |
Автор: Anikmar 10.5.2007, 15:34 | ||
![]() Ну только у компьютерщиков существует такой сленг. Ни в одной специальности я больше такого не видел. ![]() Одна фраза "кильнуть пост". Всем понятно, но ведь это термин водный. Как можно перевернуть пост вверх ногами?! Это я так, прикалываюсь. ![]() |
Автор: Tsunameh 13.5.2007, 14:16 |
Возникла проблема .. ни один из вышеперечисленных кодов не хочет правильно работать на билдере. Если можно , напишите код так , чтобы работал на билдере , тк мы в этой среде работаем ... *( |
Автор: zkv 13.5.2007, 14:22 |
Tsunameh, я плохо знаком с билдером, но во-первых, приложение должно быть консольным, во-вторых, показывайте что именно пишите, и что не получается (вместе с кодом ошибки, и номером строки в коде). |
Автор: Tsunameh 13.5.2007, 14:37 | ||||
компилятор не нашел ошибки , но при запуске программы пишет Undefined symbol _main in module c0.ASM в окне компилятора.
|
Автор: zkv 13.5.2007, 14:52 | ||
и кто такой код вам приводил? ![]() Вот, вероятно, то, что вы хотели изобразить:
|
Автор: Tsunameh 13.5.2007, 14:54 |
Я сам себе его наприводил следуя указаниям выше )) видимо неудачно, буду проверять вашу версию. Добавлено через 5 минут и 35 секунд Вопрос : что означает ran1*=i; ? Конкретнее "*=" непонятно ) |
Автор: zkv 13.5.2007, 15:07 | ||||
|
Автор: Tsunameh 13.5.2007, 15:33 | ||||
Вот бы вроде тот код который мне нужен:
Но опять же пишет Undefined symbol _main in module c0.ASM ... (((
|
Автор: zkv 13.5.2007, 16:11 |
Tsunameh, грубо говоря, в программе обязательно должна быть функция int main", она является точкой входа в приложение, те с нее начинается выполнение. |
Автор: Tsunameh 13.5.2007, 16:14 |
Все , саму суть программы описал , теперь нужно понять как вызывать выполнение программы с помощью функции.. ) |
Автор: dizzy1984 14.5.2007, 05:30 | ||
Вам много раз об этом сказали, но вы, почему-то, оказались глухи к гласу разума. Любая программа на c/с++ обязана начинаться только с функции main. Вот пример
простейшей программы |
Автор: zkv 14.5.2007, 08:15 | ||
это приближенно, точку входа даже задавать можно (Linker->Entry point), но я еще ни разу не пользовался. ![]() |