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

Jak zliczać zdarzenia w danym przedziale czasu?

Object Storage Arubacloud
0 głosów
141 wizyt
pytanie zadane 7 lipca 2019 w C i C++ przez Sokon Nowicjusz (200 p.)
Witam.

Mam w programie funkcję która wykonuje się od kilkunastu do kilkudziesięciu razy w ciągu minuty i za każdym razem zwraca jakąś wartość liczbową.

Potrzebuję na bieżąco wyświetlać sumę tych wartości z ostatniej minuty.

Jak to ugryźć??
komentarz 7 lipca 2019 przez DragonCoder Nałogowiec (36,500 p.)
If w timerze?

1 odpowiedź

0 głosów
odpowiedź 7 lipca 2019 przez Michałełe Nałogowiec (25,600 p.)
edycja 7 lipca 2019 przez Michałełe

Witam

Możesz użyć biblioteki chrono.

Przykładowo :

#include <iostream>
#include <chrono>

using namespace std;

int funkcja(){
   // Twoja definicja
}

int main(){

	// Pobieramy obecny czas systemowy
	auto start = std::chrono::system_clock::now();
	// Zmienna która będzie liczyć sumę z wywołań funkcji
        int c{};
        // Zmienna d  będzie przechowywać obecny czas w ms ( używać będziemy typu double) 
        double d{}, last{};

	while (true) {
                 // Dodajemy do licznika wartości
                c += funkcja();
                 // Pobieramy czas po raz kolejny
		auto end = std::chrono::system_clock::now();
                 // Zmienna przechowuje wartość ile czasu minęło od pierwszego pobrania czasu do teraz
		std::chrono::duration<double> diff = end - start;
	
		d = diff.count();

                // Jeśli obecnie pobrany czas odjąć czas poprzedni jest większy lub   równy jeden to znaczy że minęła sekunda
		if ( d - last >= 1) {
			cout << "Czas:" << ' ' << d;
			last = d;
			d = 0;	
			cout << c << '\n';
			c = 0;
		}

	}

	return 0;
}

Jakby coś było niezrozumiałe to napisz, chętnie pomoge :)

komentarz 7 lipca 2019 przez Sokon Nowicjusz (200 p.)
Dzięki za zainteresowanie i odpowiedź.

Jednak zdaje się (jeśli się mylę to mnie popraw), że powyższy kod obliczy i wyświetli wartość z ostatniej minuty i na tym koniec.

A ja potrzebuję to tak: (przykład)

o godzinie 14:00:00 ma wyświetlić wartość zliczoną pomiędzy 13.59:00 a 13:59:59

o godzinie 14:00:01 ma wyświetlić wartość zliczoną pomiędzy 13:59:01 a 14:00:00

o godzinie 14:00:02 ma wyświetlić wartość zliczoną pomiędzy 13:59:02 a 14:00:01

Czyli co sekundę działania programu ma wyświetlić wartość wyliczoną z ostatnich 60 sekund i tak przez cały czas działania programu...
komentarz 7 lipca 2019 przez Michałełe Nałogowiec (25,600 p.)
Powyższy program wyświetla wynik dodawania wartości z funkcji dla 1 sekundy. Wystarczy w if'ie zmienić warunek ( w naszym przypadku będzie to 59).
komentarz 7 lipca 2019 przez Sokon Nowicjusz (200 p.)

@Michałełe, chyba nieprecyzyjnie opisałem problem...

pewna funkcja jest wywoływana w nieregularnych odstępach czasu.  Między innymi zwraca jakąś wartość liczbową, którą dodaje do tablicy X.

I teraz w tej tablicy X chcę mieć tylko liczby dodane w ciągu ostatnich 60 sekund.  Wszystkie dodane wcześniej mają z niej zniknąć...

Podobne pytania

0 głosów
1 odpowiedź 117 wizyt
+1 głos
1 odpowiedź 205 wizyt
pytanie zadane 8 marca 2022 w C i C++ przez XDBX Użytkownik (640 p.)
0 głosów
0 odpowiedzi 70 wizyt

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

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

...