Sa se calculeze n!=1*2*3*…*n (factorialul lui n), pentru un n natural citit de la tastatura
Analiza Programului
n! inseamna inmultirea tuturor numerelor naturale de la 1 pana la n.
Aceasta inseamna ca trebuie parcurse toate valorile de la 1 la n si trebuiesc inmultite. Pentru aceasta este potrivita instructiunea for cu limitele 1 si n. La fiecare pas a lui for o valoare i din intervalul [1,n] va fi inmultita la fact.
Variabila fact este initializata cu 1 si la final, in urma inmultirilor repetate va contine voaloarea factorialului lui n. Deoarece factorialul are o crestere foarte rapida, variabila fact a fost declarata de tip long.
Rezolvarea problemei in C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _9 { class Program { static void Main(string[] args) { short n, i; long fact = 1; Console.Write("n = "); n = short.Parse(Console.ReadLine()); for (i = 1; i <= n; i++) fact *= i; Console.WriteLine("{0}! = {1}", n, fact); Console.ReadLine(); } } }
Rezolvarea problemei in C++
//the header conio, which include library functions for performing "console input and output" #include <conio.h> //the header iostream, which supports the C++ I/O system #include <iostream> //tells the compiler to use the std namespace using namespace std; //begin program execution int main() { int userNumber; short factorial = 1; cout<<"Introduceti numarul care se va calcula factorial:"<<endl; cin>>userNumber; //first solution for(int i=1; i<=userNumber; i++) { factorial *= i; } //second solution //FactorialMethod(userNumber); cout<<"Numarul "<<userNumber<<"are factorialul: "<<factorial<<endl; //terminates main and return value to the calling process return 0; } //recursive function int FactorialMethod(int n) { if(n==0) return 0; return n * FactorialMethod(n-1); }
Category: Uncategorized
Alpha13 says:
Pentru ce limbaj este folosit acest program,sunt in clasa a 9a,invat C++,iar singura parte stiuta de mine este cea cu for.
Stiam cum se face calculeaza,dar nu stiam ca este nevoie de alte instructiuni :)
zeltera says:
limbajul folosit in rezolvarea acestor exercitii este c# (diferit de c++). Ai la fiecare exercitiu o scurta explicatie referitate la cum se rezolva -asta ar trebui sa te ajute sa rezolvi usor respectivul exercitiu in orice alt limbaj.
marius says:
O alta rezolvare consta in crearea unei functii recursive:
private static int Factorial(int n)
{
if (n == 0) return 1;
return n * Factorial(n – 1);
}
Vlad Caltan says:
nu am inteles de loc!!!!