From 916c699b909ebafff54825d512799aa55ea9a7ba Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Fri, 17 Oct 2014 22:21:17 -0400 Subject: [PATCH] Added handle_query --- .../arithmetic_progressions.c | 53 +++++++++++++++++-- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/arithmetic_progressions/arithmetic_progressions.c b/arithmetic_progressions/arithmetic_progressions.c index 7f5db5f..f29b9e9 100644 --- a/arithmetic_progressions/arithmetic_progressions.c +++ b/arithmetic_progressions/arithmetic_progressions.c @@ -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; } \ No newline at end of file