为什么我的功能不算数?

时间:2017-04-23 01:59:00

标签: c++ clock

我有一个功能,如果你插入一个数字,它会计算出来。只有在程序开始时调用函数意味着它与clock()有关,它才会这样做。我将clock()添加到其余的变量中,但函数不计算。特别是在if语句中。

#include <stdio.h>

#include <string>
#include <iostream>
#include <stdlib.h>
#include <windows.h>
#include "math.h"
#include <time.h>
#include <ctime>
#include <cstdlib>
#include <mmsystem.h>

void countbysec(int Seconds);
using namespace std;

int main(){
int secondsinput;

cout<<"Type how many seconds to cout \n";
cin>>secondsinput;

countbysec(secondsinput);

return 0;
}

void countbysec(int Seconds){
    clock_t Timer;
    Timer = clock() + Seconds * CLOCKS_PER_SEC ;

    clock_t counttime = clock() + (Timer / Seconds);
    clock_t secondcount = 0;

    while(clock() <= Timer){

    if(clock() == counttime){
    counttime = counttime + CLOCKS_PER_SEC;
    secondcount = secondcount + 1;

    cout<<secondcount<<endl;
    }
    }
}

2 个答案:

答案 0 :(得分:1)

您没有使用此行调用该函数:

void countbysec(int Seconds);

你正在声明这个功能。编译器需要先查看函数的声明,然后再调用它,否则你会看到:

error: use of undeclared identifier 'countbysec'

它需要能够在您拨打电话时输入检查并生成呼叫代码。

您可以通过将代码块从main()下方移动到文件中的上方来一步声明和定义函数。这是正常的C / C ++行为。

答案 1 :(得分:0)

首先,clock不适合做你想要的样子。它返回过程使用了多少CPU时间的近似值。近似应该有一些警钟响起。接下来,时间CPU时间与挂号时间不同,所以谁可以说当程序运行到10秒时经过了多少时间。

所以

if(clock() == counttime){

时间必须完全counttime才能进行计数递增。把它拉下来的几率并不太好。你可能会射过它。如果你这样做,什么都不算数。我推荐

if(clock() >= counttime){

接下来,你不太可能获得最后一秒,因为

while(clock() <= Timer)

可能先行并退出循环。

如果您想计算秒数,请查看something like std::this_thread::sleep_until

设置唤醒时间=当前时间+ 1秒,然后

  1. 睡到醒来,
  2. 数,
  3. 在唤醒时间上添加一秒,
  4. 重复完成。