可变函数-升序

问题描述

一个升序函数(int n,char type,...),接收n个值,严格升序返回1,否则返回0。type字符表示值的类型并且可以是 'd' - 你,'in' - 双倍。 这是我的尝试,但我有点卡住了。

class Tasks {
    constructor() {
        try {
          this.initPromise = db.schema.createTable('tasks',table => {
                table.increments('id');
                table.string('task',128)
                    .notNullable();
                table.boolean('completed');
                table.timestamp('created_at').defaultTo(knex.fn.Now());
            }).then();
        } catch(err) {
            console.error(err);
        }
    }
}

解决方法

int asc(int n,char tip,...)
{
    va_list va;
    va_start(va,tip);  
    int result = 1;
    union 
    {
        int i;
        double d;
    }val1,val2;
    if (n >= 2)
    {
        for(int i = 0; i < n-1; i++)
        {
            switch(tip)
            {
                case 'i':
                    if(!i) {val1.i = va_arg(va,int);}
                    val2.i = va_arg(va,int);
                    if( val1.i > val2.i)
                        {result = 0; goto function_return;}
                    val1.i = val2.i;
                    break;
                case 'd':
                    if(!i) {val1.d = va_arg(va,double);}
                    val2.d = va_arg(va,double);
                    if( val1.d > val2.d)
                        {result = 0; goto function_return;}
                    val1.d = val2.d;
                    break;
                default:
                    break;
            }
        }
    }
    function_return:
    va_end(va);
    return result;

}
int main(int argc,char const *argv[])
{
    printf("%d\n",asc(4,'d',-1.0,7.0,9.0,0.0));
    return 0;
}