Files
prog-c/tp3/TP3/testprint.c
2024-10-06 15:32:20 +02:00

84 lines
1.6 KiB
C

#include "testprint.h"
void print_stacks(int h, int nb, ...) {
va_list liste;
va_start(liste, nb);
stack **tab;
int i, j, max = 1;
MALLOC(tab, nb);
for (i = 0; i < nb; i++) {
tab[i] = va_arg(liste, stack *);
CHECK_NULL(2, tab[i], "The stack", tab[i]->array,
"The array used to implement the stack");
}
// Récupération de la hauteur maximum parmi les piles.
for (i = 0; i < nb; i++)
if (tab[i]->size_stack > max)
max = tab[i]->size_stack;
for (j = h; j > max; j--) {
PRINT_BLANK;
for (i = 1; i < nb; i++) {
PRINT_BLANK;
PRINT_BLANK;
}
printf("\n");
}
// Affichage des piles.
for (j = max; j > 0; j--) {
if (tab[0]->size_stack < j)
PRINT_BLANK;
else
printf("%" xstr(MAX_SIZE_INT_STACK) "d", tab[0]->array[j - 1]);
for (i = 1; i < nb; i++) {
PRINT_BLANK;
if (tab[i]->size_stack < j)
PRINT_BLANK;
else
printf("%" xstr(MAX_SIZE_INT_STACK) "d", tab[i]->array[j - 1]);
}
printf("\n");
}
PRINT_STARS;
for (i = 1; i < nb; i++) {
PRINT_BLANK;
PRINT_STARS;
}
printf("\n");
free(tab);
va_end(liste);
}
void print_queue(const queue *p) {
printf("File:");
if (isempty_queue(p)) {
printf(" vide\n");
return;
}
int i = p->left;
if (i < p->right)
while (i < p->right) {
printf("%4d", p->array[i]);
i++;
}
else {
while (i < p->size_array) {
printf("%4d", p->array[i]);
i++;
}
i = 0;
while (i < p->right) {
printf("%4d", p->array[i]);
i++;
}
}
printf("\n");
}