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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2012, 14:20   #1
millepetrozza
Пользователь
 
Регистрация: 22.09.2012
Сообщений: 33
По умолчанию Вычисление факториала

Нужно простым способом вычислить факториал(не используя формулу Стирлинга, естественно). Программа запускается, но независимо от введённых данных, "a" почему-то обращается в нуль, и дальше программа работает неправильно.

Код:
#include "stdafx.h"
#include "conio.h"

int main()
{
	int a,n,b;
	printf ("Enter number\n");
	scanf ("%d", &a);
		if (a=0)
		{b=1;
		printf("!%d = %d", a,b);}
		else
		{n=1;b=a;
			for (n; n<a; n++)
			{ b=b*(a-n);}
		printf ("!%d = %d", a,b);
		}
getwch();
}
И вот какие непонятки:
1)Что же в коде не верно?
2)Можно ли сделать шаг больше или меньше единицы? Например: 3, 1/2 и т.д.
3)Реально ли вывести результат следующим образом без пробелов или, как в примере, без нижних подчёркиваний: !{Введённое число a}_=_{Результат вычисления факториала из a}?
4)Позволяет ли цикл for указывать "повторение, пока значение переменной не станет равно определённому числу", т.е. как написать (и можно ли) for (a=0; a=10; a++)?
millepetrozza вне форума Ответить с цитированием
Старый 23.09.2012, 14:49   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,718
По умолчанию

Код:
if (a=0)
Это не сравнение.

Цитата:
2)Можно ли сделать шаг больше или меньше единицы?
Т.е. вы даже не читали или не слушали про цикл фор, что не знаете его основных возможностей? А n++ вы написали только, потому что так где-то было написано?
p51x вне форума Ответить с цитированием
Старый 23.09.2012, 15:12   #3
millepetrozza
Пользователь
 
Регистрация: 22.09.2012
Сообщений: 33
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Т.е. вы даже не читали или не слушали про цикл фор, что не знаете его основных возможностей? А n++ вы написали только, потому что так где-то было написано?
У меня не было лекции по for, да и по программированию вообще. Программа предполагает, что я уже должен обладать определёнными навыками, поэтому приходится изучать только своими силами. Безусловно, я читал про цикл for, вот только к сожалению написано так всё слишком скупо(и это далеко не один учебник). А шаг в единицу написал, потому что только это и было объяснено, а не потому, что я, вместо того, чтобы сесть и самому разобраться, слизал это с примера готового кода.
millepetrozza вне форума Ответить с цитированием
Старый 23.09.2012, 15:14   #4
millepetrozza
Пользователь
 
Регистрация: 22.09.2012
Сообщений: 33
По умолчанию

Да, а про a==0 спасибо. Сам то знал, но вот что-то протупил немного.
millepetrozza вне форума Ответить с цитированием
Старый 23.09.2012, 15:20   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,718
По умолчанию

Цитата:
А шаг в единицу написал ...
Допустим это правда. А теперь подумайте, как вы со стороны выглядите, спрашивая можно ли шаг сделать 3, 1/2,..
p51x вне форума Ответить с цитированием
Старый 23.09.2012, 15:26   #6
millepetrozza
Пользователь
 
Регистрация: 22.09.2012
Сообщений: 33
По умолчанию

Как чувак, который перед тем, как написать, пересмотрел эту тему в трёх пособиях и просмотрел ни одну статью об этом в интернете. Я действительно не могу найти как это сдеалать, да и можно ли это делать вообще, иначе не задавал я бы этот вопрос, если бы смог справиться сам.
millepetrozza вне форума Ответить с цитированием
Старый 24.09.2012, 13:27   #7
monster-bonster
Пользователь
 
Аватар для monster-bonster
 
Регистрация: 27.06.2012
Сообщений: 38
По умолчанию

Цитата:
Сообщение от millepetrozza Посмотреть сообщение
Как чувак, который перед тем, как написать, пересмотрел эту тему в трёх пособиях и просмотрел ни одну статью об этом в интернете. Я действительно не могу найти как это сдеалать, да и можно ли это делать вообще, иначе не задавал я бы этот вопрос, если бы смог справиться сам.
Да что вы паритесь, вот вам решение.
Код:
int factorial(int n)
{
  int t = 1;
  while(n) {
    t *= n;
    n--;
  }
  return t
}

// или вот рекурсивный метод

int factorial(int n)
{
  if (n == 0) return 1;
  else return factorial(n)*factorial(n-1);
}
Я прикрепил книгу, изучайте по ней, это старая книга,
но очень хорошая. Удачи!
Вложения
Тип файла: zip teachyourselfC.djvu.zip (3.51 Мб, 64 просмотров)
monster-bonster вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление факториала turtles Помощь студентам 1 22.09.2011 13:38
вычисление факториала (Pascal) DsDevis Помощь студентам 8 09.12.2010 18:56
вычисление факториала в С++ mephistophel Помощь студентам 4 10.03.2010 12:43
Си, вычисление факториала ManInBlack Помощь студентам 2 07.03.2009 00:50
Вычисление факториала числа PAVEL315 Общие вопросы Delphi 17 21.03.2007 07:32