我正在尝试对C语言中的输入进行排序,但是我一直得到错误的答案,并且无法识别我的错误。我正在尝试使用简单的气泡排序技术。
这是我的代码:
#define SIZE 100
int main() {
char input[MAXSIZE];
int dummy[MAXSIZE];
int sequenceNumber[MAXSIZE];
int tracker=-1;
int array[MAXSIZE][MAXSIZE][MAXSIZE];
int set=-1;
int sequence=-1;
int counter=-1;
int temp=0;
while (1==1) {
if (fgets(input, MAXSIZE-1, stdin) == NULL){
printf("Invalid Input");
break;
}else {
char* s;
for (s = input; (*s != '\n') && isspace(*s); s++){
continue;
}
if (*s == '\n'){
continue;
} else if (*s == 'f'){
break;
} else if (*s == 'S'){
set++;
sequence=-1;
} else{
sscanf(input, "%d: %d, %d, %d, %d, %d", &dummy[0], &dummy[1], &dummy[2], &dummy[3], &dummy[4], &dummy[5]);
sequence++;
array[set][sequence][0]=dummy[0];
array[set][sequence][1]=dummy[1]+dummy[2]+dummy[3]+dummy[4]+dummy[5];
if (sequence==0){
tracker++;
}
sequenceNumber[tracker]=sequence+1;
}
}
}
for (int i=0;i<set; i++){
for (int j=0;j<tracker;j++){
counter++;
for (int k=0; k<sequenceNumber[counter];k++){
if (array[i][k][1]<array[i][k+1][1])
temp=array[i][k][1];
array[i][k][1]=array[i][k+1][1];
array[i][k][0]=array[i][k+1][0];
array[i][k+1][1]=temp;
}
}
}
for (int i=0; i<=set;i++){
printf("\n");
printf("SET %d\n",i+1);
for (int j=0;j<tracker;j++){
counter++;
for (int k=0; k<sequenceNumber[counter];k++){
printf("%d %d\n",array[i][k][0],array[i][k][1]);
}
}
}
return 0;
}
在输入上:
SET 1
1: 5,5,6,5
2: 3,4,5,5
3: 3,4,5,6
SET 2
1: 5,7,8,7
2: 5,5,5,6
finish
我得到:
SET 1
2 17
3 18
SET 2
代替:
SET 1
2 17
3 18
1 21
SET 2
1 27
2 21
有人可以帮我弄清楚我在做什么错。我基本上是试图对每个集合中的每个序列号以总和的升序对维度数组进行排序。任何帮助将不胜感激。谢谢。
答案 0 :(得分:-1)
在两个for循环之间设置for(let ele of form.contentViewChild.nativeElement.children){
ele.disabled = true;
}
。