• Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.

Mala pomos ako moze :-)

  • Ја почнал/а темата
  • #1

''TcM>>

Intern
6 јануари 2008
961
39
Zadazava e epten ednostavna (pocetna) ali dobrro jas sum pocetnik :p... Nego problemot mi e vo toa sto ne znam zosto ne moze da mi najde faktoriel za koj bilo broj, mi naoga samo do brojot 16 za ponatamu mi dava 0 ....
Eve ja sto sum pisal:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int fact=1;
int n=0;
printf("Vnesi broj:");
scanf("%d", &n);
int i;
for(i=1; i<=n; i++)
fact=fact*i;
printf("\nFaktorielot od brojot %d e: %d\n",n,fact);
system("PAUSE");
return 0;
}
 
  • Ја почнал/а темата
  • #3

''TcM>>

Intern
6 јануари 2008
961
39
kako mislis...
Probav vaka:
long fact=1L;
long n=0L;

Ama dzabe pak mi dava isti rezultati...
 

Object

Intern
18 септември 2007
75
0
Код:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
[B]long long unsigned int fact=1;[/B]
int n=0;
printf("Vnesi broj:");
scanf("%d", &n);
int i;
for(i=1; i<=n; i++)
fact=fact*i;
printf("nFaktorielot od brojot %d e: [B]%llu[/B]",n,fact);
system("PAUSE");
return 0;
}
 
  • Ја почнал/а темата
  • #5

''TcM>>

Intern
6 јануари 2008
961
39
Aha da, vaka se prodolzuva uste malce, odnosno do 33 sea racuna.. Izglea poveke od toa ne ni moze da racuna... :p
 

gOJDO

Epic
23 јануари 2008
9,765
14,889
сред село
gOJDO's setup  
Processor & Cooler
Intel со вентилатор
Motherboard
Asus
Storage
полн
PSU
ЕВН Снабдување
RAM
алуминиумски
Video card
Super VGA
Case
closed
Mouse
хрчак домашен
Keyboard
механичка
Audio
сардисаунд
Monitor
телевизор у боја
OS
Windows
смени ги сите int со long;
кога имаш int во производот "fact=fact*i" компајлерот сите ги есапи ко int.
или можеш тоа да го решиш вака: fact = fact * (long)i;
BTW, Basic style на пишвање е "fact = fact * (long)i", a C style на пишување е "fact *= (long)i" :)
 

minimoog

Intern
14 јули 2007
317
16
Код:
double pi = 3.14;
double e = 2.72;
double nfact = sqrt(2.0 * pi * n) * pow(n / e, n);
Дава приближно факториел.
 

loverboy

Intern
6 февруари 2008
147
11
Иако изгледа едноставно да се пресмета факториел од КОЈ И ДА БИЛО БРОЈ
сепак тоа не е баш едноставна работа.
Броевите од integer тип можат да примаат вредности до кај 32,000. Рамисли што би се случило ако треба да се смести поголем број? Значи во integer само може да се сместат броеви кои се околу 10! (точно немам пресметано), а ако се користи longint ќе се зголеми rang-от, но сепак нема да можат да се сместат сите броеви и во овој случај. Еве да земеме еден пример:
20!=2,432,902,008,176,640,000
значи ова нема да може никаде да се смести во променлива.
Ама затоа постојат алгоритми кои работат со големи броеви.
Ова се таканаречени BigNum
http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic
значи нема да работиме само со една променлива туку броевите ќе ги претставуваме со цифри кои ќе ги сместиме во низа.
Потоа ќе дефинираме функција за собирање и множење на број со број (но внимавај, броеви кои се сместени во низа). Значи проблемот со пресметување на факториел од големи броеви се сведува на работа со броеви сместени во низа. На пример бројот 6373672 ќе го сместиме во низа a:
a[1]=6 a[2]=3 a[3]=7 a[4]=3 a[5]=6 a[6]=7 a[8]=2
Не е нешто компицирана но пресметување на факториел од произволен број не е ни баш некоја едноставна работа :tainstven:
на овој компјутер немам некои source кодови да ти покажам како се прави тоа, ама ако ти треба пиши пак. Поздрав!!! :bye1:
 

Нови мислења

Последни Теми

Статистика

Теми
43,595
Мислења
824,251
Членови
28,088
Најнов член
JonTurk
На врв Дно