#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;
}
|