帮别人改的DS课设7

简介: #include #include #include #include #define OK 1#define OVERFLOW -1#define ERROR 0typedef int Status; int boyscount=0,girlsc...

#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define OK 1
#define OVERFLOW -1
#define ERROR 0
typedef int Status;

int boyscount=0,girlscount=0;    //全局变量
int Lcm(int ,int );            //求最小公倍数(lease common multiple)
//-------循环队列-队列的顺序存储结构----
//#define MAXQSIZE 100
typedef int QElemType;
typedef struct {
     QElemType *base;
     int   front;
     int   rear;
}SqQueue;
//---循环队列的基本算法--------
Status InitQueue(SqQueue &Q,int &MAXQSIZE){
    //构造一个空队列
   Q.base=(QElemType *)malloc((MAXQSIZE+1) *sizeof(QElemType));
   if(!Q.base)exit(OVERFLOW);
   Q.front=Q.rear=0;
   return OK;
}
int Queuelength(SqQueue Q,int MAXQSIZE){
    //返回Q的元素个数,即队列长度
   return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
Status EnQueue (SqQueue &Q,QElemType e,int MAXQSIZE){
    //入队列,插入元素e为Q的新的队尾元素
    if((Q.rear+1)%(MAXQSIZE+1)==Q.front) return ERROR;    //队列满
        Q.base[Q.rear]=e;
        Q.rear=(Q.rear+1)%(MAXQSIZE+1);
   return OK;
}
Status DeQueue(SqQueue &Q,QElemType &e,int MAXQSIZE){
    //若队列不空,则删除Q的对头元素,用e返回其值,并返回OK
    //否则返回ERROR
   if(Q.front==Q.rear)  return ERROR;
   e=Q.base[Q.front];
   Q.front=(Q.front+1)%(MAXQSIZE);
   return OK;
}

void Init(SqQueue &Boys,SqQueue &Girls){
    printf("/n『初始化』");        //标题
    printf("/n请输入男女生人数,空格分隔:");
    scanf("%d%d",&boyscount,&girlscount);
    InitQueue(Boys,boyscount);
    for(int i=0;i<boyscount;i++){
        EnQueue (Boys,i+1,boyscount);    //给男生编号123...
    }//for
    InitQueue(Girls,girlscount);
    for(i=0;i<girlscount;i++){
        EnQueue (Girls,i+1,girlscount);    //给女生编号
    }//for
    printf("初始化完毕/n");
}//Init

void Match(SqQueue Boys,SqQueue Girls){
    printf("/n『输出每曲配对情况』");
 if(boyscount==0){
        printf("/n   请先初始化!/n");
        return;
    }//if

    int n;
    printf("/n请输入曲目数:");
    scanf("%d",&n);
    int Id_boy,Id_girl;
    printf("/n曲目 男        女/n");
    for(int i=1;i<=n;i++){
        DeQueue(Boys,Id_boy,boyscount);
        DeQueue(Girls,Id_girl,girlscount);
        printf("%3d %3d <---> %3d/n",i,Id_boy,Id_girl);
        //输出每曲配对情况
    }//for
}//Match

void AntiMatch(SqQueue Boys,SqQueue Girls){
    printf("/n『求满足条件的曲目』");
    if(boyscount==0){
        printf("/n   请先初始化!/n");
        return;
    }//if
int x,y;
    printf(  "/n请输入男女编号,空格分隔:");
    scanf("%d%d",&x,&y);
    int Id_boy,Id_girl;
    for(int i=1;i<=Lcm(boyscount,girlscount);i++){
        DeQueue(Boys,Id_boy,boyscount);
        DeQueue(Girls,Id_girl,girlscount);
        if((Id_boy==x)&&(Id_girl==y)) break;
    }//for
    if((Id_boy==x)&&(Id_girl==y)){
        printf("两人会在第%d曲和第%d曲搭配./n",i,i+Lcm(boyscount,girlscount));
        return;
    }//if
        printf("抱歉,你输入的两人不可能搭配!/n");
}//AntiMatch
int Lcm(int m,int n){//求最小公倍数(lease common multiple)
    int temp,p,r;
    if(n<m){
        temp=n;
        n=m;
        m=temp;    //把大数放在n中,小数放在m中
    }//if
    p=n*m;
    while(m!=0)
    {
        r=n%m;
        n=m;
        m=r;
    }//while
    return p/n;
}//Lcm

//#include "Students.h"
void main(){
    SqQueue Boys,Girls;
    system("title 学生搭配问题");    //标题
    system("color 17");
    //设置背景/字体颜色,1为背景,7为前景,其值可随便设,系统默认为07
Begin:
    printf("/n");
    printf(" ╔════════╗/n");
    printf(" ║  学生搭配问题  ║/n");
    printf(" ╚════════╝/n");
    printf("  1.初始化/n");
    printf("  2.输出每曲配对情况/n");
    printf("  3.求满足条件的曲目/n");
    printf("  4.退出/n");
    char choice;
    switch(choice=getch()){
        case '1': Init(Boys,Girls);break;    //初始化
        case '2': Match(Boys,Girls);break;    //输出每曲配对情况
        case '3': AntiMatch(Boys,Girls);break;    //求满足条件的曲目
        case '4': return;        //退出
    }//switch
goto Begin;
}//main

目录
相关文章
|
网络协议 Linux 网络安全
干货|不出网上线CS的各种姿势(二)
干货|不出网上线CS的各种姿势
629 0
|
网络协议 安全 Linux
不出网上线CS的各种姿势
不出网上线CS的各种姿势
1051 0
|
网络协议 安全 测试技术
干货|不出网上线CS的各种姿势(一)
干货|不出网上线CS的各种姿势
494 0
|
网络协议 安全
干货|不出网上线CS的各种姿势(三)
干货|不出网上线CS的各种姿势
381 0
蓝桥杯之单片机学习(十七)——DS1302的基本应用
蓝桥杯之单片机学习(十七)——DS1302的基本应用
569 0
蓝桥杯之单片机学习(十七)——DS1302的基本应用
|
编解码 数据处理
蓝桥杯之单片机学习(十五)——DS18B20的基本应用
蓝桥杯之单片机学习(十五)——DS18B20的基本应用
390 0
蓝桥杯之单片机学习(十五)——DS18B20的基本应用
|
芯片
蓝桥杯DS1302驱动代码
蓝桥杯DS1302驱动代码
138 0
|
传感器 存储 编解码
复习单片机:温度检测 DS18B20(内含:1 DS18B20 介绍+2 硬件设计+3 软件设计+4 实验现象)
复习单片机:温度检测 DS18B20(内含:1 DS18B20 介绍+2 硬件设计+3 软件设计+4 实验现象)
336 0
复习单片机:温度检测 DS18B20(内含:1 DS18B20 介绍+2 硬件设计+3 软件设计+4 实验现象)
复习单片机:温度计DS18B20代码部分(内含代码部分详解+示意图)
复习单片机:温度计DS18B20代码部分(内含代码部分详解+示意图)
947 0
复习单片机:温度计DS18B20代码部分(内含代码部分详解+示意图)

热门文章

最新文章