• 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

Object Storage Arubacloud
+2 głosów
251 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 (270,170 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 230 wizyt
pytanie zadane 7 lutego 2016 w C i C++ przez dartespl Użytkownik (830 p.)
0 głosów
1 odpowiedź 145 wizyt
+1 głos
2 odpowiedzi 2,980 wizyt
pytanie zadane 1 maja 2015 w SQL, bazy danych przez ArturB Mądrala (6,060 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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!

...