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

Porównywanie czasów z Odcinka 13go C++/ Rekurencje

Cloud VPS
+2 głosów
304 wizyt
pytanie zadane 11 maja 2015 w C i C++ przez aksameet Nowicjusz (240 p.)

Witam,

Nie znajduję w odpowiedziach pod filmikiem na yt, ani tu na forum pomysłu na to, jak napisać program PORÓWNUJĄCY czas na obliczenie dwóch różnych algorytmów (iteracyjne/rekurencyjne), zamiast tego pełno wypisująch kolejno obliczenia jedno pod drugim.

Jest jakiś sposób, żeby nie tyle wypisywać dany algorytm, a następnie jego czas i tak jeden za drugim, co jest zadaniem prostym, tylko napisać program który zestawi dwa czasy i wypisze np. który algorytm zajął mniej?

Próbowałem już nadawać obliczeniom czasu inne zmienne, typu czas1, czas2, start1, start2, stop1, stop2 i porównywać te dane, ale to nie działa..


#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <time.h>

using namespace std;

clock_t start, stop, start1, stop1;
double czas, czas1;


long double potega(int p, int w) //funkcja na potęgowanie rekurencyjne
{
    if (w==0) return 1;
    else return p*potega(p,w-1);
}


int o=24, v=124;  //zmienne potęgowania iteracyjnego
long double wynik=1;


int main()
{  


    start=clock();
    cout <<"-Potega: "<<endl<< potega(24,124) << endl; //rekurencja z potegowania
    stop=clock();
    czas=(double)(stop-start)/CLOCKS_PER_SEC;
    cout<<"---Czas operacji  : "<<czas<<endl<< endl;

            start=clock();
            cout<<"'-Potega iteracyjna: "<<endl;
            while (v>0)
            {
                wynik=wynik*o;
                v--;
            }
            cout<<wynik<<endl;
            stop=clock();
            czas=(double) (stop-start)/CLOCKS_PER_SEC;
            cout<<"---Czas operacji ' :"<<czas<<endl<<endl;

    system("pause");
    return 0;
}

2 odpowiedzi

+1 głos
odpowiedź 11 maja 2015 przez aksameet Nowicjusz (240 p.)

dobra mam, chodziło o coś takiego

 

 start=clock();
    cout <<"2-Potega: "<<endl<< potega(2444,124) << endl; //rekurencja z potegowania
    stop=clock();
    czas=(double)(stop-start)/CLOCKS_PER_SEC;
    cout<<"---Czas operacji 2: "<<czas<<endl<< endl;

            start=clock();
            cout<<"2'-Potega iteracyjna: "<<endl;
            while (v>0)
            {
                wynik=wynik*o;
                v--;
            }
            cout<<wynik<<endl;
            stop=clock();
            czas1=(double) (stop-start)/CLOCKS_PER_SEC;
            cout<<"---Czas operacji 2': "<<czas1<<endl<<endl;

                czas3=czas-czas1;
                czas4=czas1-czas;
                if (czas>czas1)
                {
                    cout<<"Wiecej czasu zajmuje Rekurencja, o :"<<czas3<<endl<<endl;
                }
                else cout<<"Więcej czasu zajmuje Iteracja, o :"<<czas4<<endl<<endl;

 

Dzięki za prawie pomoc ;)

0 głosów
odpowiedź 11 maja 2015 przez Wiciorny Ekspert (281,450 p.)
Nie wiem czy o to Ci dokładnie chodzi... ale generalnie z kodu który napisałeś, program wypisze czas operacji, Jednej ( iteracyjnej ) oraz czas operacji  Rekurencyjnej...

Więc masz 2 czasy? Żeby je porównać musisz zestawić je ze sobą tak, czyli użyć innej funkcji, lub napisać to w programie dodając nowe zmienne, chyba, ze coś źłe zrozumiałem ?
komentarz 11 maja 2015 przez aksameet Nowicjusz (240 p.)
To zaproponuj jak zestawić ze sobą te dwa czasy.

Podobne pytania

0 głosów
4 odpowiedzi 355 wizyt
pytanie zadane 7 lutego 2016 w C i C++ przez dartespl Użytkownik (830 p.)
0 głosów
1 odpowiedź 197 wizyt
+1 głos
2 odpowiedzi 3,613 wizyt
pytanie zadane 1 maja 2015 w SQL, bazy danych przez ArturB Mądrala (6,060 p.)

93,460 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,837 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

Kursy INF.02 i INF.03
...