Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- inline int Cyfra( char znak )
- {
- return int(znak-48); // Funckcja zamieniająca znak na cyfrę
- }
- inline char Znak( int Liczba )
- {
- return char(Liczba+48); // Funkcja zamieniająca cyfrę na znak
- }
- string Dodawanie( string &L1, string &L2 )
- {
- while( L1.length() != L2.length() ) // Porównywanie długości stringów
- {
- if( L1.length() > L2.length() ) // Jeżeli któryś z nich jest mniejszy to dodajemy zera
- {
- L2 = "0" + L2;
- }
- else
- L1 = "0" + L1;
- }
- string Wynik = ""; // Wynik dodawania
- int Pomocnicza = 0; // Zmienna pomocnicza
- for(int i = L1.length()-1; i >= 0; i-- ) // Właściwa procedura dodawania
- {
- int Pom = Cyfra(L1[i]) + Cyfra(L2[i]) + Pomocnicza; // Obliczamy sumę kolejnych cyfr ciągu
- Wynik = Znak( Pom % 10 ) + Wynik; // Zapisujemy ją do zmiennej Wynik
- Pomocnicza = int(Pom/10);
- }
- if( Pomocnicza != 0 )
- Wynik = Znak( Pomocnicza ) + Wynik; // Jeżeli coś zostało, to dodajemy na początek
- return Wynik;
- }
- string Mnozenie( string STR, unsigned long long int INT)
- {
- string Wynik = "0";
- unsigned long long i ;
- for(i = 1; i; i <<= 1)
- {
- if(INT & i)
- {
- Wynik = Dodawanie(Wynik, STR);
- }
- STR = Dodawanie(STR, STR);
- }
- return Wynik;
- }
- int main()
- {
- string Silnia = "1";
- unsigned long long int X, i;
- cout << "Podaj liczbę, z której chcesz wyznaczyć silnię.\n";
- cin >> X;
- for( i = 2; i <= X; i++ ) // Obliczanie silni
- {
- Silnia = Mnozenie( Silnia, i );
- }
- cout << X <<"! = " << Silnia; // Wypisywanie wyniku
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement