2017-04-23 6 views
0

숫자를 입력하면 숫자가 계산되는 기능이 있습니다. 이것은 프로그램의 시작 부분에서 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; 
    } 
    } 
} 
+1

변수를 대문자로 표기하는 것은 약간 불규칙합니다. C++에서는 전통적으로 클래스 용으로 예약되었습니다. 이것은'Timer'가 클래스 인 것처럼 코드를 읽게하지만, 그렇지 않습니다. – tadman

+1

"그것은 그것들을 카운트합니다." 이해할 수 없는. 당신이 의미하는 것을 분명하게 말하기에 충분한 작품을 사용하십시오. – philipxy

+0

그것은 나를 위해 작동합니다. – Neil

답변

1

:

void countbysec(int Seconds);

당신은 앞으로 기능을 선언하고 있습니다.

error: use of undeclared identifier 'countbysec'

그것은 확인 입력하고 당신이 만드는 지점에서 호출 코드를 생성 할 수 있어야합니다 : 컴파일러, 그렇지 않으면 당신은 볼 수 당신이 그것을 호출하기 전에 함수의 선언을 볼 필요 호출.

파일에서 main() 아래의 코드 블록을 위로 이동하여 코드 블록을 한 단계로 선언하고 정의 할 수 있습니다. 이것은 일반적인 C/C++ 동작입니다.

0

먼저 clock은 원하는대로 할 수있는 올바른 도구가 아닙니다. 프로세스에서 사용 된 CPU 시간의 근사치를 반환합니다. 근사치에는 몇 개의 경고음이 울려 야합니다. 다음으로 시간 CPU 시간은 벽 시간과 같지 않으므로 프로그램이 10 초 동안 진행되는 동안 얼마나 많은 경과 시간이지나 갔는지 말할 수 있습니다.

그래서

if(clock() == counttime){ 

시간은 카운트 증분을하기 위해 정확히 counttime을해야합니다. 이걸 당기는 확률은 그리 좋지 않습니다. 너는 그걸 쏴 버릴지도 몰라. 그리고 그렇게한다면 아무 것도 계산되지 않을 것입니다. 나는

while(clock() <= Timer) 

은 아마 첫번째 여행 루프를 종료하기 때문에 당신은 마지막 순간을 얻을 가능성이,

if(clock() >= counttime){ 

다음을 권장합니다.

초를 계산하려면 something like std::this_thread::sleep_until을 찾으십시오.

  1. 가 절전
  2. 수,
  3. , 모닝콜 시간까지 깨우기 시간에 두 번째 추가 후 = 현재 시간 + 1 초

    설정 깨우기 시간,

  4. 반복 할 때까지.
관련 문제