2013-12-06 2 views
-2

Im, пишущий эту небольшую программу для игры в лотерею.«Ошибка проверки времени выполнения # 2: поврежден стек чисел«

Итак, я получил код, чтобы ввести 6 цифр и небольшую функцию для генерации моих случайных чисел, но как только Ive ввел мои 6 чисел и проверил тест на моей функции генерации rand, я получаю сообщение об ошибке «Проверка времени выполнения Сбой № 2: Обнуление столбца переменной «числа» было повреждено ».

Не могли бы вы сказать, что я делаю неправильно? Im абсолютно clueless

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

void Generate(int *a){ 
    int i; 
    for(i=0; i<= 5;i++){ 
     a[i] = (1 + (unsigned int)rand()%42); 
    } 
} 

main(){ 
    int Numbers[5]; 
    int Lotto[5]; 
    int i,n; 

    for(i = 0; i<=5;i++){ 
     printf("enter your %de number: ", i+1); 
     scanf("%d", &Numbers[i]); 
    } 
    srand(time(NULL)); 
    for(n=0; n<6;n++){ 
     Generate(&Lotto[n]); 
     if(n<1){ 
      printf("%d",Lotto[n]); 
     }else{ 
      printf("%5d",Lotto[n]); 
     } 
    } 
} 
+1

Не могли бы вы исправить отступы? – godel9

+1

'int Numbers [5]; int Lotto [5]; размер массива - ** 5 **. 'for (i = 0; i <= 5; i ++) {' over index – BLUEPIXY

+0

Если размер массива больше, он все равно дает мне ошибку – TheAlPaca02

ответ

0

Ваше состояние не соответствует действительности.

  for(i = 0; i<=5;i++){ 

Он должен быть

  for(i = 0; i<5;i++){ 

как массив Numbers имеет память только для 5 целых чисел. Такая же проблема с другим циклом с массивом lotto и функцией Generate() с доступом указателя a. Все они вызывают ошибку доступа за пределы, которая равна undefined в C. Или измените размер массива соответственно, если вы хотите иметь в нем 6 целых чисел. Помните, что индексы массива начинаются с 0 и идут до n-1 для массива размером n.

0

В C массивы индексируются от 0. Вы заявили оба ваших массивы размера 5.

Изменения

for(n=0; n<6;n++){...} 

в

for(n=0; n<5;n++){...} 

иначе поведение вашей программы неопределенный

1

изменение

int Numbers[5]; 
int Lotto[5]; 

for(n=0; n<6;n++){ 
    Generate(&Lotto[n]); 

до

int Numbers[6]; 
int Lotto[6]; 

Generate(&Lotto[0]); 
for(n=0; n<6;n++){ 
Смежные вопросы