操作系统FIFO算法

来源:互联网 发布:求淘宝好的国产手办店 编辑:程序博客网 时间:2024/06/03 16:49

FIFO C语言动画的形式打印,在打印之前确保你的黑窗口屏幕的缓冲区宽度够大,请手动设置

右键黑窗口 属性 布局 屏幕缓冲区大小 缓冲区宽度设置大于200,驻留区默认为4,随机数字为12个,随机大小自己设置

PS:作品太菜,仅供参考

#include<stdio.h>#include<string.h>#include<process.h>#include<windows.h>#include<time.h>#define MAX 12#define FIND 1#define UNFIND 0/** 辅助函数   可以无视 */void goxy(int x,int y){    COORD pos;    pos.X = x;    pos.Y = y;    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}/** 辅助函数   可以无视*/void color(int x){    switch(x)    {    case 0:        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);        break;    case 1:        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);        break;    case 2:        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);        break;    case 3:        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE | FOREGROUND_GREEN);        break;    case 4:        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE | BACKGROUND_INTENSITY);        break;    case 5:        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED  | BACKGROUND_INTENSITY);        break;    case 6:        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN| BACKGROUND_INTENSITY);        break;    case 7:        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE | FOREGROUND_GREEN | BACKGROUND_INTENSITY);        break;    }}int checkdata[MAX];int zhuliu[4];int wrap = 0;/** 在驻留区中搜索 */int zhuliu_search(int temp,int x){    int i;    for(i=0; i<4; i++)    {        if(temp == zhuliu[i])  // 如果找到就返回 FIND        {            if(i)            {                color(0);                goxy(x*7+3,i*4+2);                printf("%d",zhuliu[i-1]);            }            color(5);            goxy(x*7+3,i*4+6);            printf("%d",temp);            color(0);            Sleep(500);            return FIND;        }        else if(zhuliu[i] >= 0)        {            if(i)            {                color(0);                goxy(x*7+3,i*4+2);                printf("%d",zhuliu[i-1]);            }            color(4);            goxy(x*7+3,i*4+6);            printf("%d",zhuliu[i]);            color(0);            Sleep(500);        }        else        {            if(i && zhuliu[i-1] >=0 )            {                color(0);                goxy(x*7+3,i*4+2);                printf("%d",zhuliu[i-1]);            }        }    }    if( zhuliu[i-1] >=0 )            {                color(0);                goxy(x*7+3,i*4+2);                printf("%d",zhuliu[i-1]);            }    Sleep(1000);    color(0);    return UNFIND;}void hide(){    CONSOLE_CURSOR_INFO cci = {1,0};    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cci);}int main(){    hide();    int i,j;    srand(time(NULL));    for(i=0; i<MAX; i++)    {        checkdata[i] = rand()%6+1;    }    color(0);    for(i=0; i<MAX; i++)    {        goxy(i*7+3+!i,2);        printf("%d",checkdata[i]);    }    goxy(0,4);    printf("+");    for( i = 0 ; i < 4 ; i ++)    {        zhuliu[i] = -1;        goxy(0,i*4+5);        printf("|");        goxy(0,i*4+6);        printf("|");        goxy(0,i*4+7);        printf("|");        goxy(0,i*4+8);        printf("+");    }    for(i=0; i<MAX; i++)    {        goxy(i*7+1,4);        printf("------+");        for(j=0; j<4; j++)        {            goxy((i+1)*7,j*4+5);            printf("|");            goxy((i+1)*7,j*4+6);            printf("|");            goxy((i+1)*7,j*4+7);            printf("|");            goxy(i*7+1,j*4+8);            printf("------+");        }        for(j=0; j<4; j++)        {            goxy(i*7+3,j*4+6);            if(zhuliu[j] >= 0)printf("%d",zhuliu[j]);        }        int flag = zhuliu_search(checkdata[i],i);        if( flag == UNFIND )        {            zhuliu[wrap++] = checkdata[i];            if(wrap >= 4)wrap %= 4;        }        if(!flag)            for(j=0; j<4; j++)            {                if(zhuliu[j] == checkdata[i])                {                    goxy(i*7+3,j*4+6);                    color(6);                    printf("%d",checkdata[i]),color(0);                }            }        goxy(i*7+4,22);        if(flag == UNFIND)printf("X");        Sleep(1000);    }    goxy(0,25);return 0;}


阅读全文
0 0
原创粉丝点击