#include <stdlib.h>
#include <windows.h>
#define LEN 100
typedef struct
{
float a[LEN],b[LEN],c[LEN];
int length_A,length_B,length_C;
}Seqlist;
void menu(Seqlist &L);
void creat(Seqlist &L)//创建
{
int n,i,j;
do
{
system("cls");
puts("1:A 组创建\n\n2:B 组创建\n\n0:返回菜单\n\n");
printf("请选择操作:");
scanf("%d",&n);
system("cls");
if(n==1)
{
printf("请输入要创建元素的个数:");
scanf("%d",&j);
L.length_A=0;
for(i=0;i<j;i++)
{
printf("请输入第%d个元素:",i+1);
if(scanf("%f",&L.a[i])!=0)
L.length_A++;
}
}
else if(n==2)
{
printf("请输入要创建元素的个数:");
scanf("%d",&j);
L.length_B=0;
for(i=0;i<j;i++)
{
printf("请输入第%d个元素:",i+1);
scanf("%f",&L.b[i]);
L.length_B++;
}
}
else if(n==0)
{
Sleep(1000);
menu(L);
}
else
{
puts("选择错误,请重新选择");
Sleep(1000);
}
}while(1);
}
void showA(Seqlist &L)//打印A
{
int i;
printf("A组元素为:");
for(i=0;i<L.length_A;i++)
printf("%.1f\t",L.a[i]);
putchar('\n');
}
void showB(Seqlist &L)//打印B
{
int i;
printf("B组元素为:");
for(i=0;i<L.length_B;i++)
printf("%.1f\t",L.b[i]);
putchar('\n');
}
void showC(Seqlist &L)//打印C
{
int i;
printf("C组元素为:");
for(i=0;i<L.length_C;i++)
printf("%.1f\t",L.c[i]);
putchar('\n');
}
void show(Seqlist &L)//打印
{
int n;
do
{
system("cls");
showA(L);
showB(L);
showC(L);
printf("按0返回菜单\n");
scanf("%d",&n);
if(n==0)
{
Sleep(1000);
system("cls");
menu(L);
}
}while(n!=0);
}
void insert(Seqlist &L)//插入
{
int n,i,j;
float m;
do
{
system("cls");
//先打印一次数据
//***************************
showA(L);
showB(L);
//***************************
putchar('\n');
puts("1:A 组插入\n\n2:B 组插入\n\n0:返回菜单\n\n");
printf("请选择操作:");
scanf("%d",&n);
if(n==1)
{
if(L.length_A==0)
{
printf("没有元素,不能插入,请先创建元素!");
Sleep(3000);
creat(L);
}
printf("请输入要插入的数:");
scanf("%f",&m);
do
{
printf("请选择插入在第几位:");
scanf("%d",&j);
if(j<1||j>L.length_A+1)
printf("位置错误,请重新选择位置:");
else
{
for(i=L.length_A;i>=j;i--)
L.a[i]=L.a[i-1];
L.a[j-1]=m;
L.length_A++;
break;
}
}while(1);
}
else if(n==2)
{
if(L.length_B==0)
{
printf("没有元素,不能插入,请先创建元素!");
Sleep(3000);
creat(L);
}
printf("请输入要插入的数:");
scanf("%f",&m);
do
{
printf("请选择插入在第几位:");
scanf("%d",&j);
if(j<1||j>L.length_B+1)
printf("位置错误,请重新选择位置");
else
{
for(i=L.length_B;i>=j;i--)
L.b[i]=L.b[i-1];
L.b[j-1]=m;
L.length_B++;
break;
}
}while(1);
}
else if(n==0)
{
Sleep(1000);
system("cls");
menu(L);
}
else
{
puts("选择错误,请重新选择");
Sleep(1000);
}
}while(1);
}
void del(Seqlist &L)//删除
{
int n,i,j;
do
{
system("cls");
//先打印一次数据
//***************************
showA(L);
showB(L);
showC(L);
//***************************
putchar('\n');
puts("1:A 组删除\n\n2:B 组删除\n\n0:返回菜单\n\n");
printf("请选择操作:");
scanf("%d",&n);
if(n==1)
{
do
{
if(L.length_A==0)
{
printf("没有元素,不能删除,请先创建元素!");
Sleep(3000);
creat(L);
}
printf("删除第几个位置的数");
scanf("%d",&j);
if(j<1||j>L.length_A+1)
printf("位置错误,请重新选择位置");
else
{
for(i=j;i<L.length_A;i++)
L.a[i-1]=L.a[i];
L.length_A--;
break;
}
}while(1);
}
else if(n==2)
{
do
{
if(L.length_A==0)
{
printf("没有元素,不能插入,请先创建元素!");
Sleep(3000);
creat(L);
}
printf("删除第几个位置的数");
scanf("%d",&j);
if(j<1||j>L.length_B+1)
printf("位置错误,请重新选择位置");
else
{
for(i=j;i<L.length_B;i++)
L.b[i-1]=L.b[i];
L.length_B--;
break;
}
}while(1);
}
else if(n==0)
{
Sleep(1000);
system("cls");
menu(L);
}
else
{
puts("选择错误,请重新选择");
Sleep(1000);
}
}while(1);
}
void gather(Seqlist &L)//合并
{
system("cls");
int i,j,flag=0;
L.length_C=0;
if(L.length_A==0&&L.length_B==0)
{
printf("没有元素,合并失败!\n");
Sleep(1500);
printf("请先创建元素");
Sleep(3000);
creat(L);
}
for(i=0;i<L.length_A;i++)
{
if(i==0)
{
L.c[i]=L.a[i];
L.length_C++;
}
else
{
for(j=0;j<L.length_C;j++)
{
if(L.c[j]!=L.a[i])
flag=1;
else
{
flag=0;
break;
}
}
if(flag==1)
{
L.c[L.length_C]=L.a[i];
L.length_C++;
}
}
}
for(i=0;i<L.length_B;i++)
{
for(j=0;j<L.length_C;j++)
{
if(L.c[j]!=L.b[i])
flag=1;
else
{
flag=0;
break;
}
}
if(flag==1)
{
L.c[L.length_C]=L.b[i];
L.length_C++;
}
}
printf("合并数据成功\n");
Sleep(1000);
printf("即将返回菜单...\n");
Sleep(1500);
system("cls");
}
void arrangeA(Seqlist &L)//排序A
{
int i,j;
float temp;
if(L.length_A==0)
{
printf("没有元素,不能排序,请先创建元素!");
Sleep(3000);
creat(L);
}
for(i=0;i<L.length_A;i++)
{
for(j=1;j<L.length_A-i;j++)
{
if(L.a[j-1]>L.a[j])
{
temp=L.a[j-1];
L.a[j-1]=L.a[j];
L.a[j]=temp;
}
}
}
}
void arrangeB(Seqlist &L)//排序B
{
int i,j;
float temp;
if(L.length_B==0)
{
printf("没有元素,不能排序,请先创建元素!");
Sleep(3000);
creat(L);
}
for(i=0;i<L.length_B;i++)
{
for(j=1;j<L.length_B-i;j++)
{
if(L.b[j-1]>L.b[j])
{
temp=L.b[j-1];
L.b[j-1]=L.b[j];
L.b[j]=temp;
}
}
}
}
void arrangeC(Seqlist &L)//排序C
{
int i,j;
float temp;
if(L.length_C==0)
{
printf("没有元素,不能排序,请先创建元素!");
Sleep(3000);
creat(L);
}
for(i=0;i<L.length_C;i++)
{
for(j=1;j<L.length_C-i;j++)
{
if(L.c[j-1]>L.c[j])
{
temp=L.c[j-1];
L.c[j-1]=L.c[j];
L.c[j]=temp;
}
}
}
}
void arrange(Seqlist &L)//排序
{
int n;
do
{
system("cls");
puts("1:A 组排序\t2:B 组排序\n\n3:C 组排序\t0:返回菜单\n\n");
printf("请选择操作:");
scanf("%d",&n);
if(n==1)
{
arrangeA(L);
printf("排序成功");
Sleep(1000);
}
else if(n==2)
{
arrangeB(L);
printf("排序成功");
Sleep(1000);
}
else if(n==3)
{
arrangeC(L);
printf("排序成功");
Sleep(1000);
}
else if(n==0)
{
Sleep(1000);
system("cls");
menu(L);
}
else
{
puts("选择错误,请重新选择");
Sleep(1000);
}
}while(1);
}
void menu(Seqlist &L)//菜单
{
int n;
system("cls");
do
{
puts("1:创建元素\t2:查看元素\n3:插入元素\t4:删除元素\n5:合并元素\t6:排序元素\n");
puts("请选择:");
scanf("%d",&n);
if(n==1||n==2||n==3||n==4||n==5||n==6)
{
switch(n)
{
case 1:creat(L);break;
case 2:show(L);break;
case 3:insert(L);break;
case 4:del(L);break;
case 5:gather(L);break;
case 6:arrange(L);break;
default:break;
}
}
else
{
puts("选择错误,请重新选择");
Sleep(1500);
system("cls");
}
}while(1);
}
int main()//主函数
{
Seqlist L;
L.length_C=0;
menu(L);
return 0;
}
|