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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отрицательный факториал 
:(
    Опции темы
dimmon123
Дата 13.10.2012, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня есть код, препод сказал надо сделать так чтоб считал отрицательный факториал, например -5. Подскажите что надо изменить в коде?вот код:

Код
// Лаба2.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#include "conio.h"
#include "windows.h"

long factorial (long x)
{
    if (x==0) return 1;
    if (x==1) return 1;
    else
    return x*factorial(x-1);
}

void fQE()
{
    system("cls");
    float a=0, b=0,c=0;
    printf ("Quadratic equations: \n a*(x^2)+b*x+c = 0\n\n");
    printf ("a,b,c :");
    scanf_s ("%f,%f,%f",&a,&b,&c);

    printf ("a=%f, b=%f, c=%f\n\n",a,b,c);
    if(a==0) {printf("not quadratic equations"); _getch(); return;}
    float d = b*2-4*a*c;
    if (d<0) {printf("no roots"); _getch(); return;}
    printf("x1 = %f\nx2 = %f\n",(-b +sqrt (d)/2*a),(-b -sqrt (d)/2*a));
    
    _getch();

}


void main()
{

    int nfac=0;
    long ifac=1;


    do {
        system ("cls");
        printf ("(1) - Quadratic equations\n (2) - Factorial\n (3) - Factorial (recursively)\n \n Please select: ");
        char iSelect = _getch();
        switch (iSelect)
        {
        case '1': 
            fQE();
        break;

        case '2':
            system("cls");
            printf ("Factorial.\n \n Please enter n: ");
            ifac=1;
            scanf_s("%i",&nfac);
            if (nfac >=0 )
               {
                for (int i=2;i<=nfac;i++)
                   {
                       ifac =ifac*i;
                   }
                  printf ("%i! = %i",nfac,ifac);                
                }
            else printf("n can't be less that 0!\n");
            _getch(); _getch();
        break;
        
        case '3':
            system("cls");
            printf ("Factorial (recursively).\n \n Please enter n: ");
            scanf_s("%i",&nfac);
            
            if (nfac >=0 )
               {
                  printf ("%i! = %i",nfac,factorial(nfac));                
                }
            else printf("n can't be less that 0!\n");
            _getch(); _getch();


        break;

        default: 
            printf ("\n\nBad select, try again"); 
            _getch(); _getch(); 
         break; 
        
        }
     }
     while (true);
          
}


Модератор: не забываем пользоваться кнопочкой "Код"
PM MAIL   Вверх
volatile
Дата 13.10.2012, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(dimmon123 @  13.10.2012,  19:31 Найти цитируемый пост)
препод сказал надо сделать так чтоб считал отрицательный факториал, например -5. 


Скажите преподу пусть "убъоцца ап стену".

Отрицательных факториалов не существует.
Есть гамма функция, (родственник факториала), но и она не определена для целых отрицательных чисел.

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


Новичок



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

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



Цитата(volatile @  13.10.2012,  20:28 Найти цитируемый пост)
Отрицательных факториалов не существует.

это понятно что не существует, но сказал что можно написать чтоб считал, вот и вопрос как это сделать
PM MAIL   Вверх
feodorv
Дата 13.10.2012, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(dimmon123 @  13.10.2012,  21:57 Найти цитируемый пост)
сказал что можно написать чтоб считал, вот и вопрос как это сделать 

Может, он имел в виду (-5)! = (-1) * (-2) * (-3) * (-4) * (-5)?


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
dimmon123
Дата 13.10.2012, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



скорее всего))но точно сказать не могу.но если так то что тогда в коде надо изменить?
PM MAIL   Вверх
dimmon123
Дата 14.10.2012, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



так как из вышенаписаного кода сделать так чтобы считалось (-5)! = (-1) * (-2) * (-3) * (-4) * (-5)?
PM MAIL   Вверх
volatile
Дата 14.10.2012, 23:34 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(dimmon123 @  14.10.2012,  17:16 Найти цитируемый пост)
сделать так чтобы считалось (-5)! = (-1) * (-2) * (-3) * (-4) * (-5)? 

Вот вам универсальный факторил. Сгодится как для положительных так и отрицательных (хотя это еще тот маразм)
Код

int fUck_torial (int a) {
   int res = 1;
   while (a) {
      res *= a,
      a += 2 * (a < 0) - 1;
   }
   return res;
}


PM MAIL   Вверх
kilopmer
Дата 15.10.2012, 08:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



http://ru.wikipedia.org/wiki/%D0%A4%D0%B0%...%B8%D0%B0%D0%BB
Факториал определён только для целых неотрицательных чисел.
Странный препод)
PM MAIL   Вверх
LeonidPr
Дата 15.10.2012, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

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



возможно имелось в виду -(5!)  smile

Добавлено через 47 секунд
хотя получится то же что и 
Цитата(feodorv @  13.10.2012,  21:14 Найти цитируемый пост)
Может, он имел в виду (-5)! = (-1) * (-2) * (-3) * (-4) * (-5)? 


--------------------
pkunzip.zip
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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