diff --git a/homework07/seqit.c b/homework07/seqit.c index 4842f3f..418ca61 100644 --- a/homework07/seqit.c +++ b/homework07/seqit.c @@ -16,18 +16,58 @@ void usage(int status) { } List *generate_sequence(ssize_t first, ssize_t increment, ssize_t last) { - // TODO - return NULL; + List* sequence = list_create(); + + ssize_t current = first; + if (increment > 0) { + while (current <= last) { + list_append(sequence, (Value){.number = current}); + current += increment; + } + } else { + while (current >= last) { + list_append(sequence, (Value){.number = current}); + current += increment; + } + } + + return sequence; } /* Main Execution */ int main(int argc, char *argv[]) { // TODO: Parse command line arguments + ssize_t first = 1, increment = 1, last = 1; // Set initial values + + switch (argc) { + case 2: + last = atoll(argv[1]); + break; + case 3: + first = atoll(argv[1]); + last = atoll(argv[2]); + break; + case 4: + first = atoll(argv[1]); + increment = atoll(argv[2]); + last = atoll(argv[3]); + break; + default: + usage(EXIT_FAILURE); + } // TODO: Generate sequence + List *sequence = generate_sequence(first, increment, last); // TODO: Print out sequence + while (sequence->size > 0) { + Value v = list_pop(sequence, 0); + printf("%ld\n", v.number); + } + + // Delete the list + list_delete(sequence, false); return EXIT_SUCCESS; }