2013-02-10 1 views
0

Я выполнил первую генерирующую программу. Теперь я хочу проверить количество времени, которое требуется для всех простых чисел, и сохранить эти числа в массиве. Я написал этот код ....Генератор синхронизации в C++

#include <iostream> 
#include <ctime> 
using namespace std; 

int main() 
{ 


    int long MAX_NUM = 1000000; 
    int long MAX_NUM_ARRAY = MAX_NUM+1; 
    int long sieve_prime = 2; 
    int long sieve_prime_constant = 0; 
    int time_store = 0; 
    int *Num_Array = new int[MAX_NUM_ARRAY]; 
    std::fill_n(Num_Array, MAX_NUM_ARRAY, 3); 
    Num_Array [0] = 1; 
    Num_Array [1] = 1; 

while (time_store<=100) 
{ 
    clock_t time1,time2; 
    time1 = clock(); 
    while (sieve_prime_constant <= MAX_NUM_ARRAY) 
    { 
     if (Num_Array [sieve_prime_constant] == 1) 
     { 

      sieve_prime_constant++; 
     } 
     else 
     { 
      Num_Array [sieve_prime_constant] = 0; 
      sieve_prime=sieve_prime_constant; 
      while (sieve_prime<=MAX_NUM_ARRAY - sieve_prime_constant) 
      { 
       sieve_prime = sieve_prime + sieve_prime_constant; 
       Num_Array [sieve_prime] = 1; 
      } 
      if (sieve_prime_constant <= MAX_NUM_ARRAY) 
      { 
       sieve_prime_constant++; 
       sieve_prime = sieve_prime_constant; 
      } 
     } 
    } 
    time2 = clock(); 
    delete[] Num_Array; 
    cout << "It took " << (float(time2 - time1)/(CLOCKS_PER_SEC)) << " seconds to execute this loop." << endl; 
    cout << "This loop has already been executed " << time_store << " times." << endl; 
    float Time_Array[100]; 
    Time_Array[time_store] = (float(time2 - time1)/(CLOCKS_PER_SEC)); 
    time_store++; 
} 


return 0; 

} 

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

ответ

1

удаления вы numArray в конце первого цикла, так что вы ссылаетесь NULL, когда вы идете вокруг снова ...

Не уверен, что вы намерены делать с delete[] заявления ... но что вы предназначены делать - либо делать это где-то в другом месте, либо делать что-то еще, либо повторно инициализировать массив, либо ... вы, без сомнения, можете понять это здесь.

+0

спасибо, что работал, хотя у меня есть другие проблемы сейчас. –

+0

Хотите разработать? – Floris

+0

Да, я на самом деле сделал новое сообщение «Не найдя время премьер-генерала/ограниченного поколения», спасибо, что спросил, я бы хотел помочь! –

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

  • Нет связанных вопросов^_^