コード例 #1
0
ファイル: relation.c プロジェクト: bandilab/bandicoot
static void test_summary()
{
    int int_zero = 0, int_minus_one = -1;
    double real_plus_one = 1.0, real_zero = 0.0, real_minus_decimal = -0.99;
    long long long_minus_one = -1, long_zero = 0;

    char *names[] = {"employees", 
                     "min_age", "max_age", "avg_age", "add_age",
                     "min_salary", "max_salary", "avg_salary", "add_salary",
                     "min_birth", "max_birth", "avg_birth", "add_birth"};
    Type types[] =  {Int,
                     Int, Int, Real, Int,
                     Real, Real, Real, Real,
                     Long, Long, Real, Long};

    Rel *r = load("summary_emp");
    int pos1, pos2, pos3;
    Type tp1, tp2, tp3;
    head_attr(r->head, "age", &pos1, &tp1);
    head_attr(r->head, "salary", &pos2, &tp2);
    head_attr(r->head, "birth", &pos3, &tp3);
    Sum *sums[] = {sum_cnt(),
                   /* age calcs */
                   sum_min(pos1, tp1, val_new_int(&int_minus_one)),
                   sum_max(pos1, tp1, val_new_int(&int_minus_one)),
                   sum_avg(pos1, tp1, val_new_real(&real_plus_one)),
                   sum_add(pos1, tp1, val_new_int(&int_minus_one)),
                   /* salary calcs */
                   sum_min(pos2, tp2, val_new_real(&real_zero)),
                   sum_max(pos2, tp2, val_new_real(&real_zero)),
                   sum_avg(pos2, tp2, val_new_real(&real_zero)),
                   sum_add(pos2, tp2, val_new_real(&real_zero)),
                   /* birth calcs */
                   sum_min(pos3, tp3, val_new_long(&long_minus_one)),
                   sum_max(pos3, tp3, val_new_long(&long_zero)),
                   sum_avg(pos3, tp3, val_new_real(&real_minus_decimal)),
                   sum_add(pos3, tp3, val_new_long(&long_zero))
                   };

    Rel *sum = rel_sum(r, load("summary_dep"), names, types, sums, 13);
    if (!equal(sum, "summary_res_1"))
        fail();

    char *unary_names[] = {"min_age", "max_age", "min_salary",
                           "max_salary", "count", "add_salary"};
    Type unary_types[] = {Int, Int, Real, Real, Int, Real};

    r = load("summary_emp");
    Sum *unary_sums[] = {sum_min(pos1, tp1, val_new_int(&int_zero)),
                         sum_max(pos1, tp1, val_new_int(&int_zero)),
                         sum_min(pos2, tp2, val_new_real(&real_zero)),
                         sum_max(pos2, tp2, val_new_real(&real_zero)),
                         sum_cnt(),
                         sum_add(pos2, tp2, val_new_real(&real_zero))};

    sum = rel_sum_unary(r, unary_names, unary_types, unary_sums, 6);
    if (!equal(sum, "summary_res_2"))
        fail();
}
コード例 #2
0
ファイル: summary.c プロジェクト: bandilab/bandicoot
static void test_max(Tuple *tuples[])
{
    Sum *s_int = sum_max(0, Int, val_new_int(&res.defi));
    Sum *s_real = sum_max(1, Real, val_new_real(&res.defd));
    Sum *s_long = sum_max(2, Long, val_new_long(&res.defl));

    calc(tuples, s_int, s_real, s_long);

    if (res.max_int != val_int(sum_value(s_int)))
        fail();
    if (res.max_real != val_real(sum_value(s_real)))
        fail();
    if (res.max_long != val_long(sum_value(s_long)))
        fail();

    test_defs(s_int, s_real, s_long);

    mem_free(s_int);
    mem_free(s_real);
    mem_free(s_long);
}
コード例 #3
0
ファイル: lista2.17.c プロジェクト: jucimarjr/pca
int main()
{
    int n, vet[MAX], i, sum;

    printf("Digite a quantidade de termos: \n");
    scanf("%d", &n); //Verifica quantidade de termos
    printf("Digite os %d termos: \n", n);
    for(i=0;i<n; i++) //Leitura do vetor
    {
        printf("Digite o termo[%d]: ", i+1);
        scanf("%d", &vet[i]);
    }
    sum = sum_max(vet,n);//Chamada a funcao
    printf("A soma maxima do segmento eh: %d \n", sum);
}