Я изучаю, как использовать аргументы командной строки, чтобы получить число, чтобы определить, сколько элементов в массиве для организации. Генератор случайных чисел должен принимать номер пользователя и генерировать много случайных чисел, а затем сортировать их с помощью сортировки пузырьков. Но число не может быть меньше 2 или более 10000. Я продолжаю получать ошибку сегментации (ядро сбрасывается), или я могу ввести любое число (включая число меньше 2 или более 10000), и он ничего не делает. Я уверен, что это первая часть кода, которая неверна, а не подпрограммы и определения, но я не знаю, как ее исправить.Создание пользовательского ввода массивов для сортировки пузырьков?
#include <stdio.h>
int randu(void);
void bubble(int *, int);
void swap(int *, int *);
int main(int argc, char *argv[]) {
int num1;
if (argc<2) {
printf("Number must be between 2 and 10000.\n");
printf("Enter a number to sort.\n");
scanf("%d", &num1);
}
if (argc>10000) {
printf("Number must be between 2 and 10000.\n");
printf("Enter a number to sort.\n");
scanf("%d", &num1);
}
sscanf(argv[1], "%d", &num1);
int main(void) {
int x[num1], i;
for(i=0;i<num1;i++)
x[i]=randu();
printf("Here are %d numbers\n", num1);
for (i=0;i<num1;i++)
printf("%d\n",x[i]);
}
}
int randu(void) {
static int seed=17;
seed=(25179*seed+13849)%65536;
return seed;
}
void bubble(int a[], int num1){
int i,j;
for (i=0;i<num1-1;i++)
for(j=num1-1;i<j;j--)
if(a[j-1]>a[j])
swap(&a[j-1],&a[j]);
}
void swap(int *a, int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
У вас есть вложенная 'главный()' ... тпру ? –
Я сомневаюсь, что ваш код может скомпилировать ... У вас есть функция «main», одна вложенная в другую ... – LPs
Очень сложно увидеть из-за отступов. – Sean83