Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Factorial

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 :)

    April 7, 2011 at 6:33 pm
    • 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.

      April 7, 2011 at 7:26 pm
  • 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);
    }

    April 9, 2011 at 5:43 pm
  • Vlad Caltan says:

    nu am inteles de loc!!!!

    September 23, 2015 at 9:38 am

Your email address will not be published. Required fields are marked *

*