algorytm.org

Implementacja w C/C++



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Ciąg Fibonacciego - Implementacja w C/C++
Ocena użytkownikóww: *****  / 7
SłabyŚwietny
Nadesłany przez Bartosz Bednarczyk, 01 lipca 2011 21:02
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

fib_3_c.cpp:
#include <iostream>
 
/*
 * Bartosz "WiedźMAC" Bednarczyk
 * Liceum Ogólnokształcące im. Władysława Broniewskiego w Strzelcach Opolskich
 * Obliczanie interacyjnie elementu ciągu fibonacciego dla dużych liczb  
 * www.algorytm.org
 */
 
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
 
std::string Dodawanie( std::string &A, std::string &B )
{     
       while( A.length() != B.length() )        // Porównywanie długości stringów
       {
              if( A.length() > B.length() )     // Jeżeli któryś z nich jest mniejszy to dodajemy zera
              {
                   B = "0" + B;
              }
              else A = "0" + A;
       }
       
       std::string Wynik = "";  // Wynik dodawania
       int Pomocnicza = 0;      // Zmienna pomocnicza
       
       for(int i = A.length()-1; i >= 0; i-- )  // Właściwa procedura dodawania
        {
               int Pom = Cyfra(A[i]) + Cyfra(B[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;
}
 
int main()
{
        std::ios_base::sync_with_stdio(false);    // Przyśpieszenie I/O
        
        std::string Fib0 = "0", Fib1 = "1", FibN;       // Elementy ciągu Fibonacciego
        
        unsigned long long int N, i;    
        
        std::cout << "Ktory element ciagu obliczyc?\n";
        std::cin >> N;
        
        if( N < 2 )
        {
                if( N == 0 ) FibN = Fib0;
                else FibN = Fib1;
        }
        else
        {
                for( i = 2; i <= N; i++ )       // Obliczanie elementu ciągu fibonacciego
                {
                        FibN = Dodawanie( Fib0, Fib1 );
                        Fib0 = Fib1;
                        Fib1 = FibN;
                }
        }
        
        std::cout << "Fib(" << N << ") = " << FibN << "\n";     // Wypisywanie wyniku
        
        return 0;
}
Komentarze
photo
0 # Tomasz Lubiński 2011-07-11 08:33
W MS Visual Studio trzeba dodać jeszcze na początku:
#include <string>
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz