Передать значение chrono::duration в функцию
Всем привет. Проблема такая, в функции число в секундах выводится коректно, но если я передам значение(duration_atk) в int main то передается не коректное число {_MyRep=1.401e-45#DEN}. Как это исправить?
#include <iostream>
#include <windows.h>
#include <math.h>
#include <chrono>
using namespace std;
void Atkin(bool massiv[], int N);
int main(chrono::duration<float> duration_atk)
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int N;
bool* massiv;
cout << endl << "Введіть число до якого робити пошук простих чисел:"<<endl;
cin >> N;
massiv = new bool[N];
Atkin(massiv, N);
cout << "int main:" << endl;
printf("Алгоритм Aткіна завершив роботу за %f\n", duration_atk.count());
}
void Atkin(bool massiv[], int N)
{
chrono::steady_clock::time_point start_atk = chrono::high_resolution_clock::now();
int sqr_lim;
int x, y; // квадраты i и j
int i, j;
int k;
sqr_lim = (int)sqrt((long double)N);
for (i = 0; i < N; ++i)
{
massiv[i] = false;
}
massiv[2] = true;
massiv[3] = true;
x = 0;
for (i = 1; i < sqr_lim; ++i) {
x += 2 * i - 1;
y = 0;
for (j = 1; j < sqr_lim; ++j) {
y += 2 * j - 1;
k = 4 * x + y;
if ((k <= N) && (k % 12 == 1 || k % 12 == 5))
{
massiv[k] = !massiv[k];
}
// n = 3 * x2 + y2;
k -= x;
if ((k <= N) && (k % 12 == 7))
{
massiv[k] = !massiv[k];
}
// n = 3 * x2 - y2;
k -= 2 * y;
if ((i > j) && (k <= N) && (k % 12 == 11))
{
massiv[k] = !massiv[k];
}
}
}
for (i = 5; i < sqr_lim; ++i) {
if (massiv[i]) {
k = i * i;
for (j = k; j < N; j += k)
{
massiv[j] = false;
}
}
}
chrono::steady_clock::time_point end_atk = chrono::high_resolution_clock::now();
chrono::duration<float>duration_atk = end_atk - start_atk;
cout << "void Atkin:";
printf("\nАлгоритм Аткіна завершив роботу за %f\n\n", duration_atk.count());
}
