求差集的实际开发应用代码

 

求差集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;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值