Homework 07: seqit.c

This commit is contained in:
Owen Dorweiler 2025-03-29 17:05:45 -04:00
commit ebc75db9d8

View file

@ -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;
}