Сортировка введенных целых чисел в нечетные и четные массивы - PullRequest
2 голосов
/ 28 мая 2019

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

Это мой код, я не понимаю свою ошибку.

int x[]= {};
int i=0; 
int d=0;
int j=0;
int even[12]={};
int odd[12]={};

printf("Enter amount of numbers: ");  // asking user for amount of numbers
    scanf("%d", &d);

for (j=0; j<d; j++){
    printf("Enter number %d: ", i+1); // scanning input into 'x' array
        scanf("%d", x[i]);
}
printf("Even numbers: ");
for (i=0; i<d; i++) {
    if (x[i] % 2 == 0) {              // sorting into even array
        even[i]=x[i]; 
        printf("%d \n", even[i]);
    }
}
    printf("\n Odd numbers: ");
for (i=0; i<d;i++){
    if (x[i] % 2 != 0) {              // sorting into odd array
        odd[i]=x[i];
        printf("%d \n", odd[i]);
    }
}

Это сообщение об ошибке продолжает появляться:

$ ./main
Enter amount of numbers: 4
Enter number 1: 6
Segmentation fault (core dumped)

1 Ответ

1 голос
/ 28 мая 2019

int x[]= {}; не работает, потому что не содержит элементов. Но инициализация его с помощью {} в C все равно не работает, вместо этого сделайте следующее:

int x[24] = {0}; // first element explicitely set to 0, the rest default-initialized to 0

Вам также нужно поставить {0} для even и odd. Если он компилируется для вас с помощью {}, то, возможно, вы компилируете его как программу на C ++, или, возможно, ваш компилятор все равно его переносит (но это не сработает на каждом компиляторе C).

scanf нужен адрес int, поэтому вместо scanf("%d", x[i]); вам нужен scanf("%d", &x[i]);. Но i - неправильный итератор для этого цикла for (j = 0; j < d; j++). Вместо этого сделайте это:

for (j = 0; j < d; j++) {
    printf("Enter number %d: ", j + 1); // scanning input into 'x' array
    scanf("%d", &x[j]);
}

Также обратите внимание, что при этом половина массива останется на 0. Например, если я ввел значения от 1 до 6, тогда odd содержит значения 1 0 3 0 5 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...