2014-09-12 2 views
1

Я сделал код в CodeBlocks, что кажется, прекрасно, но когда я скомпилировать его следующим образом (в изображениях в ссылке) происходит: http://postimg.org/gallery/imbtu6ns/ Вот код:код в CodeBlocks перестает работать, когда я пытаюсь скомпилировать

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
int main(){ 
int x,num[x],n,small,big; 
    printf("Type how many numbers you will use: "); 
    scanf("%d",&n); 
    for (x=0;x<n;x++){ 
     printf("Type a number: "); 
     scanf("%d",&num[x]); 
    } 
    big=num[0]; 
    small=num[0]; 
    for (x=0;x<n;x++){ 
     if (num[x]<small){ 
      menor=num[x]; 
     } 
     if (num[x]>big){ 
      maior=num[x]; 
     } 
    } 
    printf("Maior: %d\n",big); 
    printf("Menor: %d\n",small); 
    system("pause"); 
    return 0; 
} 

Его код для чтения n номеров от пользователя, а затем распечатать меньшее и большее число. Я думаю, что в коде нет проблем. Что это за ошибка? Я пробовал делать то, что написано здесь: Windows popup: X.exe has stopped working (Code::Blocks), но он не работал.

+0

@ user3121023 Спасибо, это было действительно простое решение, похоже, его работы теперь будет выполнять его иногда и проверить, если это действительно было идеальным решением. – Cepphei

+0

@ user3121023 Это C++-функция не C. Возможно, C99 добавил эту функцию, но затем вы скомпилировали флаг c99. –

+0

@ user3121023 Да, это действительно идеальное, но простое решение, спасибо большое! Я бы отметил как ответ, но вы разместили его как комментарий! – Cepphei

ответ

1

Используйте фиксированное число при объявлении массива или использовании технологии выделения памяти.

Изменить эту строку:

int x,num[x],n,small,big; 

Для

int x,num[10],n,small,big; 

Вот код с техникой выделения памяти. Наверное, вы пытаетесь сделать что-то подобное.

Код:

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
int main(){ 
int x,*num,n,small,big; 
    printf("Type how many numbers you will use: "); 
    scanf("%d",&n); 
    num = (int*)malloc(n*sizeof(int)); 
    for (x=0;x<n;x++){ 
     printf("Type a number: "); 
     scanf("%d",num+x); 
    } 
    big=*(num+0); 
    small=*(num+0); 
    for (x=0;x<n;x++){ 
     if (*(num+x)<small){ 
      small=*(num+x); 
     } 
     if (*(num+x)>big){ 
      big=*(num+x); 
     } 
    } 
    free(num); 
    printf("Maior: %d\n",big); 
    printf("Menor: %d\n",small); 
    return 0; 
} 
+0

Пожалуйста, помогите мне понять, что создание вектора var как num [10] не будет ограничивать вектор размер 10? Спасибо за ответ. – Cepphei

+0

Да, это будет ограничено размером 10. Проверьте здесь, как распределить динамическую память. Http://www.programiz.com/c-programming/c-dynamic-memory-allocation –

+0

x инициализируется командой for, но даже если Я инициализирую его в объявлении var, я все равно получаю сообщение об ошибке, а не в момент компиляции, но через некоторое время после выполнения кода. – Cepphei

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