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(); }
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); }
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); }