• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z własnymi funkcjami i liczeniem czasu

Object Storage Arubacloud
0 głosów
454 wizyt
pytanie zadane 28 grudnia 2016 w C i C++ przez vega Użytkownik (510 p.)
#include <iostream>
#include <time.h>
#include <cstdlib>

using namespace std;

double czas, czas1;

long double fib(int n)
{
    clock_t start=clock();
    if(n==1 || n==2) return 1;
    else return fib(n-1)+fib(n-2);
    clock_t stop=clock();
    czas=(double)(stop-start)/CLOCKS_PER_SEC;
}

long double fib1(int m)
{

    double long a=1,b=1,c=0;

    clock_t start=clock();
    for(int i=0; i<m; i++)
    {
        c=a+b;
        a=b;
        b=c;
    }

    clock_t stop=clock();
    czas1=(double)(stop-start)/CLOCKS_PER_SEC;
}

int main()
{
    int n, m ;
    cout<<"Podaj ktora liczbe ciagu policzyc rekurencyjnie: ";
    cin>>n;
    cout<<fib(n)<<endl;
    cout<<"Ciag rekurencyjnie: "<<czas<<endl;

    cout<<"Podaj ktora liczbe ciagu policzyc iteracyjnie : ";
    cin>>m;
    cout<<fib1(m)<<endl;
    cout<<"Ciag iteracyjnie: "<<czas1<<endl;

    return 0;
}

 Witam! smiley

Próbowałam napisać własne funkcje, ktorę będą liczyć ciąg fibonacciego rekurencyjnie i iteracyjnie, ale w podejsciu iteracyjnym funkcja zwraca mi wartość nan. Mogłam namieszać przy zmiennych ale nie wiem co poprawiać. Prosze także o sprawdzenie czy poprawinie użyłam funkcji mierzenia czasu oraz czy moje funkcje są ogólnie dobrze napisane :)

Z góry bardzo dziękuje za pomoc smiley

 

1 odpowiedź

+1 głos
odpowiedź 28 grudnia 2016 przez Szahid Pasjonat (20,930 p.)
wybrane 28 grudnia 2016 przez vega
 
Najlepsza
Nie widzę żebyś w funkcji miał gdzieś return. Program się kompiluje ale zwraca co sam uważa. Popraw to. Ponad to wydaje mi się że w 21 linijce chciałeś napisać long double
komentarz 28 grudnia 2016 przez vega Użytkownik (510 p.)
Tylko problem w tym, że nie mam pojęcia co zwrócic w tym returnie ;/ I jeżeli umieszczam go na końcu funkcji to nie wyświetla mi sie tylko szukany wyraz ciągu, a wszystkie aż do niego ;/
1
komentarz 28 grudnia 2016 przez Szahid Pasjonat (20,930 p.)
long double fib1(int m)
{

    double long a=1,b=1,c=0;

    clock_t start=clock();
    for(int i=2; i<m; i++)  // tutaj wprowadziłem zmiane 
    {
        c=a+b;
        a=b;
        b=c;
    }

    clock_t stop=clock();
    czas1=(double)(stop-start)/CLOCKS_PER_SEC;
    return c;  // tutaj wprowadziłem zmiane 
}

 

komentarz 28 grudnia 2016 przez vega Użytkownik (510 p.)

Okej, zmieniłam ale po skompilowaniu otrzymuje takie coś jak na screenie, czyli jedna funkcja jest pomijana a czas nie jest policzony w żadnym przypadku Podrzuce Ci jeszcze w lepszej jakości http://imgur.com/a/fn68A

komentarz 28 grudnia 2016 przez Szahid Pasjonat (20,930 p.)
Kompilujesz nie ten program do krórego podałeś kod. Zamknij jeden z projektów
komentarz 28 grudnia 2016 przez vega Użytkownik (510 p.)

no to się popisałam laugh Wszystko działa, dziękuję badzo za pomoc!

komentarz 28 grudnia 2016 przez Szahid Pasjonat (20,930 p.)
Zdarza się najlepszym

Podobne pytania

0 głosów
1 odpowiedź 378 wizyt
0 głosów
1 odpowiedź 303 wizyt
pytanie zadane 10 października 2021 w C i C++ przez yato_ Początkujący (350 p.)
0 głosów
1 odpowiedź 460 wizyt
pytanie zadane 28 września 2016 w C i C++ przez Arkadiusz Sieczak Początkujący (400 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...