Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 19

Функция вычисляющая N!!

06.07.2012, 10:31. Показов 2427. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача: Описать функцию Fact2(N)вещественного типа, вычисляющую двойной факториал: N!!=135...N, если N - нечетное; N!!=246...N, если N - четное (N>0 - параметр целого типа;вещественное возращаемое значение используется для того, чтобы избежать целлочисленного переполнения при больших значениях N).С помощью этой функции найти двойные факториалы пяти данных целых чисел.
//---------------------------------------------------------------------------
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
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
 
void Fact2();
int i,a,j;
function Fact(int n):real;
cout << " vvedite n "; cin >> n;
cout << " vvedite j "; cin >> j;
{
n=1
for(j=1;j<n;j++)
 {
   if((n%2==0)&(j%2==0)) n=n*j;
   if((n%2!=0)&(j%2!=0)) n=n*j;
 }
fact:=n;
}
{
cout << " vvedite 5 shelux shisel " << " " ;
for(i=1;i<n;i++)
 {
  cout << " 'znashenie factoriala',a,'=',Fact(a)";
  cin >> a;
 }
getch();
}
Программа не правильная,выдает ошибки, помогите,пожалуйста.[/CPP]
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.07.2012, 10:31
Ответы с готовыми решениями:

Функция вычисляющая (x^n)/n
помогите пожалуйста!!! Разработать метод f(n, x), которая для заданного натурального числа n и вещественного х находит значение...

Функция вычисляющая факториал
хочу создать программу с функцией. мне надо посчитать 3 заданных факториала ( я не! ввожу числа они даны) с обращением к функции в которой...

Функция, вычисляющая объем цилиндра
Доброй ночи! Помогите, пожалуйста, разобраться с задачей. Нужно найти Объем цилиндра при помощи функции. Параметрами функции должны быть...

7
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
06.07.2012, 13:41
Это не С++, а "суржик", какой-то (С+Pascal).

Вот более правильный код:

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
#include <iostream.h>
 
double Fact2(int n);
 
{
   double p=1;
   int j;
 
   for(j=1;j<n;j++)
   {
      if((n%2==0) && (j%2==0)) p=p*(double)j;
      if((n%2!=0)  && (j%2!=0)) p=p*(double)j;
   }
   return p;
}
 
void main ()
 
{
 
    int n;
 
    cout << " Enter number " << " " ;
    cin >> n;
    cout << "Fact2(" << n << ")=" << Fact2(n) << endl;
 
}
1
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 19
09.07.2012, 08:48  [ТС]
Ошибку выдает
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
09.07.2012, 08:54
Лучший ответ Сообщение было отмечено ValeryS как решение

Решение

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

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
#include <iostream.h>
 
double Fact2(int n)   // ";" убрал - наследие Паскаля
 
{
   double p=1;
   int j;
 
   for(j=1;j<=n;j++)   // "<" заменил на "<="
   {
      if((n%2==0) && (j%2==0)) p=p*(double)j;
      if((n%2!=0)  && (j%2!=0)) p=p*(double)j;
   }
   return p;
}
 
void main ()
 
{
 
    int n;
 
    cout << " Enter number " << " " ;
    cin >> n;
    cout << "Fact2(" << n << ")=" << Fact2(n) << endl;
 
}
Проверил. Работает.
1
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 19
09.07.2012, 16:44  [ТС]
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
#include <iostream.h>
 
double Fact2(int n)   
 
{
   double p=1;
   int j;
 
   for(j=1;j<=n;j++)
   {
      if((n%2==0) && (j%2==0)) p=p*(double)j;
      if((n%2!=0)  && (j%2!=0)) p=p*(double)j;
   }
   return p;
}
 
int main()
{
    int n;
 
    while (printf("enter n: ") && scanf("%d", &n)
        && n && printf("%.0f\n", Fact2(n)));
    return 0;
}
А вот так ,я думаю,больше подходит.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
09.07.2012, 17:06
Лучший ответ Сообщение было отмечено ValeryS как решение

Решение

Цитата Сообщение от Catstail Посмотреть сообщение
if((n%2==0) && (j%2==0)) p=p*(double)j;
if((n%2!=0) && (j%2!=0)) p=p*(double)j;
я дико извиняюсь... А чем разница??
p=p*(double)j;
в обоих строках
нельзя сделать проще
По крайней мере понятней алгоритм( и быстрее ветвлений нет)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
double Fact2(int n);
{
   double p=1.0;
 int j
 if(n%2)
    j=1;
 else 
    j=2;
 
for(;j<=n;j+=2)// отсчет с шагом 2 при нечетном 1 3 5 при четном 2 4 6
   {
     p=p*(double)j;
   }
   return p;
}
можно вообще так
j=2-(n%2)
при нечетном числе (n%2)=1
j=2-1=1
при нечетном числе (n%2)=0
j=2-0=2

соответственно функция выглядит так
C++
1
2
3
4
5
6
7
double Fact2(int n);
 {
   double p=1.0;
 for(int j=2-(n%2);j<=n;j+=2)// отсчет с шагом 2 при нечетном 1 3 5 при четном 2 4 6
        p=p*(double)j;
     return p;
}
1
1 / 1 / 4
Регистрация: 24.10.2014
Сообщений: 200
05.12.2015, 04:23
Catstail, а что описывается в 11 и 12 строчке?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
05.12.2015, 09:13
Цитата Сообщение от ITALIANO Посмотреть сообщение
а что описывается в 11 и 12 строчке?
а что непонятно?
Цитата Сообщение от Ivan2012 Посмотреть сообщение
if((n%2==0) && (j%2==0)) p=p*(double)j;
если n четное (n%2),остаток от деления на два равен 0, то перемножаем только четные числа
в следующей строчке соответственно наоборот
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.12.2015, 09:13
Помогаю со студенческими работами здесь

Функция вычисляющая разность дат
Помогите,пожалуйста написать программу на C++. Создать функцию, которая принимает на вход даты рождения двух людей и возвращает на...

Функция вычисляющая заданное выражение
Использовать функцию пользователя. Константы присутствующие в формуле расчета функции представить в виде параметров функции со значениями...

Функция вычисляющая сумму ряда
Кто-нибудь знает как это решается?%-) П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их...

Функция вычисляющая доход по вкладу
Написать функцию Dohod, которая вычисляет доход по вкладу. Исходными данными для функции являются: величина вклада, процентная ставка...

Функция вычисляющая площадь треугольника
помогите из Паскаля перевести в с++ П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом. ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru