现在的位置: 首页 > 综合 > 正文

C语言的弊端

2018年05月09日 ⁄ 综合 ⁄ 共 1618字 ⁄ 字号 评论关闭

#import <Foundation/Foundation.h>
typedef enum{
    Kcircle,
    KRectangle,
    KOblateSpherold
}ShapeType;
typedef enum{
    KredColor,
    KGreenColor,
    KBlueColor
}ShapeColor;
typedef struct{
    int x,y,width,height;
}ShapeRect;
typedef struct {
    ShapeType type;
    ShapeColor fillColor;
    ShapeRect bounds;
}Shape;
char *getcolor(ShapeColor colorname){
    switch (colorname) {
        case KredColor:
            return "red";
            break;
        case KGreenColor:
            return "green";
            break;
        case KBlueColor:
            return "blue";
            break;
        default:
            break;
    }
}
void DrawCircle(ShapeRect bounds,
                ShapeColor fillColor)
{
      printf("drawing a circle at (%d %d %d %d) in %s\n",bounds.x,bounds.y,bounds.width,bounds.height,  getcolor(fillColor));
}
void DrawRectang(ShapeRect bounds,
                 ShapeColor fillColor)
{
     printf("drawing a rectang at (%d %d %d %d) in %s\n",bounds.x,bounds.y,bounds.width,bounds.height,  getcolor(fillColor));
}
void DrawEgg(ShapeRect bounds,
             ShapeColor fillColor)
{
    
    printf("drawing a egg at (%d %d %d %d) in %s\n",bounds.x,bounds.y,bounds.width,bounds.height,  getcolor(fillColor));
}
void drawshapes(Shape shapes[],int count)
{
    int i;
    for(i=0;i<count;i++){
        switch (shapes[i].type) {
            case Kcircle:
                DrawCircle(shapes[i].bounds,shapes[i].fillColor);
                break;
            case KRectangle:
                DrawRectang(shapes[i].bounds,shapes[i].fillColor);
                break;
            case KOblateSpherold:
                DrawEgg(shapes[i].bounds,shapes[i].fillColor);
                break;
        }
    }
}
int main(int argc, const char * argv[])
{

    Shape shapes[3];
    ShapeRect rect0 = {0,0,10,30};
    shapes[0].type=Kcircle;
    shapes[0].fillColor=KredColor;
    shapes[0].bounds=rect0;
    ShapeRect rect1 = {30,40,50,60};
    shapes[1].type=KRectangle;
    shapes[1].fillColor=KGreenColor;
    shapes[1].bounds=rect1;
    ShapeRect rect2 = {15,18,37,29};
    shapes[2].type=KOblateSpherold;
    shapes[2].fillColor=KBlueColor;
    shapes[2].bounds=rect2;
    drawshapes(shapes, 3);
    return 0;
}

【上篇】
【下篇】

抱歉!评论已关闭.