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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2012, 13:23   #1
Ioane
Пользователь
 
Регистрация: 18.12.2011
Сообщений: 22
По умолчанию не могу исправить код программы

Задание.Описать функцию Fact2(N) целого типа, вычисляющую значение "двойного факториала": N!! = 1*3*5*...*N, если N — нечетное, N!! = 2*4*6*...*N, если N — четное (N > 0 — параметр целого типа). С помощью этой функции вычислить двойные факториалы десяти данных чисел.
Код:
Код:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
void fact2N(int n);
int main ()
{
int n;
cout<<"input n";
cin>>n;
fact2N(n);
return 0;
}
void fact2N(int n)
{
int counter, t=1;
if ((counter%2)==0)
for (int counter=1; counter<=n; counter++)
{t*=counter;
};
cout<<t;
if ((counter%2)!=0)
for (int counter=1; counter<=n; counter++)
t*=counter;
cout<<t;
}
Программа вычисляет факториал обыкновенного числа. Что нужно исправить, чтобы было разделение между четными и нечетными?Подскажите пожалуйста

Последний раз редактировалось ACE Valery; 13.02.2012 в 18:03.
Ioane вне форума Ответить с цитированием
Старый 12.02.2012, 17:38   #2
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от Ioane Посмотреть сообщение
Задание.Описать функцию Fact2(N) целого типа, вычисляющую значение "двойного факториала": N!! = 1*3*5*...*N, если N — нечетное, N!! = 2*4*6*...*N, если N — четное (N > 0 — параметр целого типа). С помощью этой функции вычислить двойные факториалы десяти данных чисел.
Код:
void fact2N(int n)
{
int counter, t=1;
if ((counter%2)==0)
for (int counter=1; counter<=n; counter++)
{t*=counter;
};
cout<<t;
if ((counter%2)!=0)
for (int counter=1; counter<=n; counter++)
t*=counter;
cout<<t;
}
Программа вычисляет факториал обыкновенного числа. Что нужно исправить, чтобы было разделение между четными и нечетными?Подскажите пожалуйста

Я бы функцию объявил по-другому и не делал бы в ней вывод факториала, а перенес бы вывод в вызывающую функцию. Но для простоты сохраню ваш дизайн функции.

Код:
void fact2N( unsigned int n )
{
   unsigned int factorial = 1;

   unsigned int k = n / 2;
   for ( unsigned int i = 0; i < k; i++, n -= 2 )
   {
      factorial *= n;
   }

   cout << factorial;
}
Со мной можно встретиться на www.clipper.borda.ru

Последний раз редактировалось Сыроежка; 12.02.2012 в 20:00.
Сыроежка вне форума Ответить с цитированием
Старый 12.02.2012, 18:18   #3
Ioane
Пользователь
 
Регистрация: 18.12.2011
Сообщений: 22
По умолчанию

Сыроежка, огромное спасибо за помощь!
Ioane вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу составить Код для программы по условию задачи Александр_007 Помощь студентам 1 25.10.2011 11:38
Не могу исправить юрий. Microsoft Office Excel 9 06.03.2011 21:36
Не могу понять код программы MattShepard Общие вопросы C/C++ 6 17.01.2011 12:23
Исправить код DirtyBASS Помощь студентам 2 22.09.2009 10:20