Jump to content

C++ faktoriali


peterisss
 Share

Recommended Posts

Sveiki, esmu nesen sācis apgūt c++ pamatus, vai kāds var izpalīdzēt ar faktoriāliem c++ valodā?

kur ievada divus randoma skaitļus, un aprēķina 2 skaitļu faktoriāla vērtību.

Link to comment
Share on other sites

peterisss

Sapratu domu, es māku uz papīra aprēķināt faktoriālu.. 

man ir uzdevums kurā persona ieraksta n! un m!

un tad kad aprēķina faktoriālus, tad abas summas saskaita kopā. tās summas vēl mācētu saskaitīt

Link to comment
Share on other sites

Baigais Janka

Nu, ievadi tos divus skaitļus, un aprēķini katram faktoriālu (funkciju tak Tev uz paplātes iedeva :) Un, ja vēl pats māki tos saskaitīt kopā - uzdevums jau atrisināts :)

Link to comment
Share on other sites

Baigais Janka

Vienīgi vēl piezīme - int nu nav labākais faktoriālam, kas izceļas ar dūšīgumu izmēros :) Pirmkārt, faktoriāls iraid naturāliem skaitļiem n>=1, tātad - unsigned int, kā minimums. Bet reālā dzīvē - lai paniekotos mājās, kaču kādus long long-us, __int64 utt. (kādās vidēs nu kompilē) būtu jēdzīgāk izmantot (lai pirkstus pamētātu :), bet, ja nopietnāk, ko grib rakstīt - nāksies izmantot bibliotēkas, kas ar mega gariem skaitļiem māk operēt (saglabā tos vispābā kā simbolu virkni, vai tamlīdzīgi).

  • Patīk 1
Link to comment
Share on other sites

Леший

Ja nevajag uberprecizitāti, tad vari izmantot float.

Bet šajā uzdevumā droši vien pasniedzējs no tevis gaidīs, ka tavs cikls/rekursija, kas ies no 1 līdz m, skaitļus no 1 līdz n vēl reizinās ar 2 (pieņēmot, ka m un n ir ievadītie skaitļi, un m > n):
 

a = 1;

for (i=1; i<=m, i++) {
  a *= i * (i>n ? 1 : 2);
}
  • Patīk 1
Link to comment
Share on other sites

nāksies izmantot bibliotēkas, kas ar mega gariem skaitļiem māk operēt

 

LISP māk

(defun f (n) (if (= 0 n) 1 (* n (f (- n 1)))))
(f 12345)
Labots - MarisO
Link to comment
Share on other sites

Māri, viņam C++ vajag. Droši vien augstskolā mācās, tā ka LISP pasniedzējam viņš C++ vietā nevar aiznest.

Link to comment
Share on other sites

Леший
LISP māk

Haskell māk

(sum . map (product . enumFromTo 1)) [5, 7]

bet viņam vajag c++.

Labots - Леший
Link to comment
Share on other sites

haskelī  tas ir arī šādi

let fact = (product . enumFromTo 1)

clojure automatic currying neprot

(def fact (comp (partial reduce *') (partial range 1) inc))

tāpēc šis ir labāks

(defn fact [n] (reduce *' (range 1 (inc n))))

vai

(defn fact [n] (->> n inc (range 1) (reduce *')))

vai paralēli

(defn fact-p [n] (->> n inc (range 1) (clojure.core.reducers/fold *')))
Labots - MarisO
Link to comment
Share on other sites

Леший

 

 

haskelī tas ir arī šādi

Vispār nē. Mans kods risina autora uzdevumu. Tavs vienkārši atrod faktoriālu.

Link to comment
Share on other sites

būsts māk rēķināt faktoriālus: http://www.boost.org/doc/libs/1_50_0/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_factorial.html:D

 

 

 

aprēķina 2 skaitļu faktoriāla vērtību

ko tas nozīmē? 

 

tas ir ievadi 2 skaitļus ( 3 un 5 ), bet programmai jāizrēķina (3 * 4 * 5)?

 

vai arī jāizrēķina viens (1 * 2 * 3) un otrs (1 * 2 * 3 * 4 * 5) un abi jāizvada?

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...