2015-03-18 2 views
-3

Я пытаюсь вычислить время выполнения для моего кода в миллисекундах, но когда я запустил его, нет никаких результатов, а также нет ошибки. Я не знаю, где проблема. точно, хотя, как я уже упоминал, ошибок нет. пожалуйста, помогитеЯ пытаюсь вычислить время выполнения для моего кода

вот мой кусок кода:

#include "stdafx.h" 
#include<iostream> 
#include<fstream> 
using namespace std ; 
#include<time.h> 

class sort{ 

public: 


    int read_file() 
    { 
    int x ; 
    char filename[50]; 
    ifstream numbersfile ; 
    cout<<"Please enter the file name below"<<endl<<"_______________________________________________"<<endl; 
    cin.getline(filename,50); 
    cout<<"_______________________________________________"<<endl; 
    numbersfile.open(filename); 
    if(!numbersfile.is_open()){ 
     cout<<"Failed to load requierd file"<<endl; 
    return 0 ; 
    } 
    int arr[13]; 
    int n=sizeof(arr)/sizeof(*arr); 
    cout<<"The elements supposed to be sorted are:"<<endl<<endl; 
    for(int i =0;i<13;i++){ 
     numbersfile>>arr[i]; 
     cout<<arr[i]<<" "; 
    } 
    cout<<"\n-----------------------------------------------"; 
    cout<<endl<<endl; 
    counting_sort(arr,n); 

    } 


    int counting_sort(int arr[],int size) 
     { 

    int n=size; 
    int max=arr[0]; 
    for (int i=1;i<n;i++) { 
     if (arr[i]>max) { 
      max=arr[i]; 
     } 
    } 

    int *output_array=new int[n]; 
    for (int i=0;i<n;i++) { 
     output_array[i]=0; 
    } 
    int *count=new int[max+1]; 
    for (int i=0;i<=max+1;i++) { 
     count[i]=0; 

    } 

    for (int i=0;i<n;i++){ 
     count[arr[i]]=count[arr[i]]+1; 
    } 
    for (int i=1;i<max+1;i++) { 
     count[i]=count[i]+count[i-1]; 
    } 
    for (int i=n-1;i>=1;i--) { 
     output_array[count[arr[i]]-1]=arr[i]; 
     count[arr[i]]=count[arr[i]]-1; 
    } 

    cout<<"The sorted elements are:"<<endl<<endl; 
    for (int i=0;i<n;i++) { 
     cout<<output_array[i]<<" "; 
    } 
    cout<<"\n-----------------------------------------------"<<endl; 
    return 0; 
} 




}; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    clock_t Start_Time = clock(); 
    sort s1; 
    s1.read_file(); 

    return 0; 

    cout <<"The time taken to execute this process is:\n"<< double(clock() - Start_Time)/(double)CLOCKS_PER_SEC<< " seconds." << endl; 
} 
+0

Узнайте, как использовать отладчик, затем выполните свой код, проверяя переменные, как вы это делаете. – dandan78

+6

Попробуйте выполнить печать перед возвратом из 'main'. –

+0

Что делать, если я хочу открыть файл с более чем 49 символами? Почему бы не использовать 'std :: string'? –

ответ

3

Ваше cout заявление в главный после вашего возвращения заявления. Это означает, что эта строка кода никогда не будет запущена, так как программа уже вернулась. Вы можете поменять эти две строки, и вы получите свой результат.

+0

спасибо всем, как я могу получить его в миллисекундах – user2780962

+0

миллисекунда - тысячная часть, поэтому для преобразования секунд в миллисекунды вам нужно умножить свой результат на 1000. – NathanOliver

+0

я тоже хочу помочь – user2780962

Смежные вопросы