Происходит переполнение стека, неясно почему???Код | #define SIZE 200000 #define SIZECYCL 199999 #define DEVIATION 256
int main(int argc, char* argv[]) { start: int pMap[SIZE]; int randomVal[SIZE]; int val = 0; int one = 1; int zero = 0; LARGE_INTEGER start, finish, freq; QueryPerformanceFrequency( &freq );
srand(time(0));
printf("-------------------------------\n"); printf("must be less than 256"); printf("\n"); printf("value = "); scanf("%d", &val); QueryPerformanceCounter( &start ); // int start = GetTickCount();
for (long i = 0; i<=SIZECYCL; i++) { //Sleep(1); randomVal[i] = rand() % DEVIATION; //printf("random value"); //printf("%d",randomVal[i]); //printf("\n"); if (val > randomVal[i]) { pMap[i] = one; //printf("pMap["); printf("%d",i); printf("]="); //printf("%d",pMap[i]); } else { pMap[i] = zero; //printf("pMap["); printf("%d",i); printf("]="); //printf("%d",pMap[i]); } } QueryPerformanceCounter( &finish ); double time = (finish.QuadPart - start.QuadPart) / (double)freq.QuadPart; printf("\n%f", time); printf(" seconds");
//int deadline = GetTickCount() - start; //printf ("\ntime=%d msec", deadline); long count = 0; //printf("\n\npMap = "); for (long j = 0; j<=SIZECYCL; j++) { //printf("%d",pMap[j]); if ( pMap[j] == 1) { count++; } } double p2tmp = (double)count/SIZE; double p2value = p2tmp * DEVIATION; printf("\n\nvalue was = "); printf("%f",p2value); printf("\n"); return 0; }
|
Добавлено через 7 минут и 10 секунд При
работает на ура, но нужно 200 000 |