求差集1357加入后排序
#include <stdio.h>
#include <io.h>
#include <direct.h>
#include <string.h>
#include <easyx/graphics.h>
struct namelist {
int num = -1;
char name[300] = "";
};
int main() {
namelist** namelistv1;
char name[100];
namelistv1 = new namelist*[4];
for (int i = 0; i < 4; i++) {
namelistv1[i] = new namelist[10];
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 10; j++) {
namelistv1[i][j].num = 0;
strcpy(namelistv1[i][j].name, "");
}
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 10; j++) {
namelistv1[i][j].num = j;
sprintf(name, "%diivv", j);
strcpy(namelistv1[i][j].name, name);
}
}
namelist** namelistv2;
namelistv2 = new namelist*[4];
for (int i = 0; i < 4; i++) {
namelistv2[i] = new namelist[30];
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 30; j++) {
namelistv2[i][j].num = j * 2;
sprintf(name, "%diivv", j * 2);
strcpy(namelistv2[i][j].name, name);
}
}
namelist** namelistv3;
namelistv3 = new namelist*[4];
for (int i = 0; i < 4; i++) {
namelistv3[i] = new namelist[10];
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 10; j++) {
namelistv3[i][j].num = -1;
strcpy(namelistv3[i][j].name, "");
}
}
int j = 0;
int k = 0;
int chose = -2;
for (int i = 0; i < 10; i++) {
chose = strcmp(namelistv1[0][i].name, namelistv2[0][j].name);
if (chose == 0) {
j++;
} else {
if (chose == 1) {
while (strcmp(namelistv1[0][i].name, namelistv2[0][j].name) > 0 && j < 10) { // 因为每次namelistv1是一个一个数,namelistv1小于namelistv2就是多出来一个
j++;
}
if (j == 10) {
break;
}
if (strcmp(namelistv1[0][i].name, namelistv2[0][j].name) == 0) {
j++;
} else if (strcmp(namelistv1[0][i].name, namelistv2[0][j].name) < 0) {
namelistv3[0][k].num = namelistv1[0][i].num;
strcpy(namelistv3[0][k].name, namelistv1[0][i].name);
k++;
continue;
}
} else if (chose == -1) {
namelistv3[0][k].num = namelistv1[0][i].num;
strcpy(namelistv3[0][k].name, namelistv1[0][i].name);
k++;
continue;
}
}
}
for (int i = 0; i < 10; i++) {
if (namelistv3[0][i].num != -1) {
printf("%s %d\n", namelistv3[0][i].name, namelistv3[0][i].num);
}
}
k = 0;
for (int i = 0; i < 15; i++) {
if (i > 10 && k < 10) {
namelistv2[0][i] = namelistv3[0][k];
k++;
}
}
for (int i = 0; i < 15; i++) {
if (namelistv2[0][i].num != -1) {
printf("%s %d\n", namelistv2[0][i].name, namelistv2[0][i].num);
}
}
namelist tmp;
int index = 0;
for (int i = 0; i < 30; i++) {
index = i;
if (strcmp(namelistv2[0][i].name, "") != 0) {
} else {
break;
}
for (int j = i + 1; j < 30; j++) {
if (strcmp(namelistv2[0][j].name, "") != 0) {
} else {
break;
}
if (strcmp(namelistv2[0][index].name, namelistv2[0][j].name) > 0) {
index = j;
}
}
tmp = namelistv2[0][i];
namelistv2[0][i] = namelistv2[0][index];
namelistv2[0][index] = tmp;
// printf("排序%d\n",index);
}
for (int i = 0; i < 30; i++) {
if (namelistv2[0][i].num != -1) {
printf("排序完毕 %s\t%d\n", namelistv2[0][i].name, namelistv2[0][i].num);
}
}
return 0;
}