Silnia w C++ - iteracyjnie

Algorytm rozwiązywania równania liniowego


Algorytm iteracyjny obliczania funkcji silnia

#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
  unsigned int n;
  cout<<"Podaj n: ";
  cin>>n;
  unsigned int i=1, s=1;
  while(i<=n){
    s=s*i;
    i++;
  }
  cout<<n<<"! = "<<s<<endl;
  char c;
  cin>>c;
}

 

 W pierwszej linii programu dołączamy plik nagłówkowy biblioteki iostream (strumieni wejścia-wyjścia). Jest to niezbędne, gdyż w dalszej części programu będziemy chcieli mieć możliwość pisania na ekranie (cout) i wczytywania danych wejściowych z klawiatury (cin). W drugiej linii informujemy kompilator, że będziemy używali w programie nazw zdefiniowanych w przestrzeni nazw std (będą to: cincoutendl), gdybyśmy tego nie uczynili konieczne byłoby używanie dłuższego zapisu nazw kwalifikowanych (std::cinstd::coutstd::endl). W języku C++ program rozpoczyna się od wykonania funkcji main. W naszym przykładzie jest to jedyna funkcja programu. Linia 3 zawiera początek definicji funkcji main, jest to początek realizacji naszego algorytmu (blok START (1)). W kolejnej linii deklarujemy zmienną całkowitą bez znaku (liczba naturalna) n, którą za chwilę będziemy używali. W C++ zmienne można deklarować w dowolnym miejscu przed ich użyciem, dlatego nie deklarujemy tutaj od razu zmiennych i oraz s.

  Linie od 5 do 6 realizują operację wejścia/wyjścia (2), w której pobierane są dane wejściowe - argument funkcji silnia.

  W linii 7 deklarujemy zmienne i oraz s, nadając im równocześnie wartości początkowe (w obu przypadkach równe 1) (3).

 Instrukcja while jest odpowiednikiem bloku wyboru (4) z naszego algorytmu. Instrukcje zawarte w liniach 9 - 10 (blok 5) będą wykonywane tak długo dopóki jest spełniony warunek w instrukcji while, czyli dopóki i jest mniejsze lub równe n Gdy stale zwiększane i stanie się większe od n przechodzimy do instrukcji za pętlą while, rozpoczynających się w linii 12, w której następuje wypisanie wyniku (6).

Instrukcje w liniach 13 - 14 nie mają żadnego związku z wykonaniem algorytmu. Służą zatrzymaniu programu do czasu wprowadzenia dowolnego znaku i naciśnięcia klawisza enter, co zapobiega natychmiastowemu zamknięciu okienka z programem.

 Nawias klamrowy } z linii 15 kończy funkcję main i zarazem działanie całego programu (blok końca algorytmu (7)).