Browse Source

Added handle_query

main
Titouan Rigoudy 11 years ago
parent
commit
916c699b90
1 changed files with 49 additions and 4 deletions
  1. +49
    -4
      arithmetic_progressions/arithmetic_progressions.c

+ 49
- 4
arithmetic_progressions/arithmetic_progressions.c View File

@ -41,9 +41,6 @@ size_t read_ints(char *str, int **ints) {
}
int read_adp(int n, int (*adp)[3]) {
if (n < 1) {
return 1;
}
char buf[BUF_SIZE];
int *ints;
size_t ints_len;
@ -58,21 +55,55 @@ int read_adp(int n, int (*adp)[3]) {
adp[i][0] = ints[0];
adp[i][1] = ints[1];
adp[i][2] = ints[2];
free(ints);
}
return 0;
}
int min_const_diff(int n, int (*adp)[3], int i, int j) {
return 0;
}
int add_powers(int n, int (*adp)[3], int i, int j, int v) {
return 0;
}
int handle_query(char *str, int n, int (*adp)[3]) {
int *ints;
int ints_len = read_ints(str, &ints);
if (ints_len < 1) {
return 1;
}
int query_type = ints[0];
if (query_type == 0) {
if (ints_len != 3) {
return 1;
}
return min_const_diff(n, adp, ints[1], ints[2]);
}
if (query_type == 1) {
if (ints_len != 4) {
return 1;
}
return add_powers(n, adp, ints[1], ints[2], ints[3]);
}
return 1;
}
int main(int argc, char **argv) {
char buf[BUF_SIZE];
fgets(buf, BUF_SIZE, stdin);
char *end;
int n = strtol(buf, &end, 10);
if (!isspace(*end)) {
if (!isspace(*end) || n < 1) {
return 0;
}
int (*adp)[3] = malloc(3 * n * sizeof **adp);
if (adp == NULL) {
return 0;
}
int err = read_adp(n, adp);
if (err) {
return 0;
@ -82,5 +113,19 @@ int main(int argc, char **argv) {
printf("%d %d %d\n", adp[i][0], adp[i][1], adp[i][2]);
}
fgets(buf, BUF_SIZE, stdin);
int q = strtol(buf, &end, 10);
if (!isspace(*end)) {
return 0;
}
for (i = 0; i < q; i++) {
fgets(buf, BUF_SIZE, stdin);
err = handle_query(buf, n, adp);
if (err) {
return 0;
}
}
return 0;
}

Loading…
Cancel
Save