天天看点

直播

//
// Created by jihuayu on 2020/2/12.
//
#include<stdio.h>
#include<malloc.h>
#include<string.h>

const char *base_num[11] = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"};
#define NUM_LENGTH (11)

typedef struct Var {
    char *name;
    int num;
} Var;

typedef struct Line {
    char *str;
    int pos;
} Line;

typedef struct VM {
    Var **vars;
} VM;

//从位置pos开始比较base是不是和str一样
int cmp(const char *base, const char *str, int pos) {
    for (int i = 0; i < strlen(str); ++i) {
        if (base[pos + i] != str[i] || (i + pos >= strlen(base))) {
            return 0;
        }
    }
    return 1;
}

int cn_to_num1(Line *line) {
    for (int i = 0; i < NUM_LENGTH; i++) {
        if (cmp(line->str, base_num[i], line->pos)) {
            line->pos += strlen(base_num[i]);
            return i;
        }
    }
    return -1;
}

int cn_to_num(Line *line) {
    int a1 = cn_to_num1(line);
    int a2 = cn_to_num1(line);
    if (a2 == -1) {
        return a1;
    }
    int a3 = cn_to_num1(line);
    if (a3 == -1) {
        if (a1 == 10 & a2 == 10) {
            return -1;
        }
        if (a2 == 10) {
            return a1 * 10;
        }
        if (a1 == 10) {
            return 10 + a2;
        }
    }
    if (a2 == 10) {
        return a1 * 10 + a3;
    }
    return -1;
}

char *num_to_cn(int num) {
    return "";
}

void print(char *name) {
    printf("%s", "");
}

Var *create_var(char *name, int num) {
    Var *var = (Var *) malloc(sizeof(Var));
    var->name = name;
    var->num = num;
    return var;
}

void add(VM *vm, char *name, int num) {

}


void desc(VM *vm, char *name, int num) {

}