#include #define STR 40 #define MAX 110 int stranky[MAX]; int pole16[STR] = {16,1,2,15,14,3,4,13,12,5,6,11,10,7,8,9}; int pole12[STR] = {12,1,2,11,10,3,4,9,8,5,6,7}; int pole8[STR] = {8,1,2,7,6,3,4,5}; int pole4[STR] = {4,1,2,3}; int i,j,kolikrat, stran, zbytek, sheet, vypis, front; int main (void) { scanf(" %d", &stran); while (stran) { for (i = 0; i < MAX; i++) stranky[i] = 0; printf("Printing order for %d pages.\n", stran); kolikrat = stran / 16; for (i = 0; i < kolikrat; i++) for (j = 0; j < 16; j++) stranky[i*16+j] = pole16[j] + 16*i; zbytek = stran % 16; if (zbytek > 12) for (j = 0; j < 16; j++) stranky[i*16+j] = (pole16[j] + 16*i <= stran ? pole16[j] + 16*i : 0); else if (zbytek > 8) for (j = 0; j < 12; j++) stranky[i*16+j] = (pole12[j] + 16*i <= stran ? pole12[j] + 16*i : 0); else if (zbytek > 4) for (j = 0; j < 8; j++) stranky[i*16+j] = (pole8[j] + 16*i <= stran ? pole8[j] + 16*i : 0); else for (j = 0; j < 4; j++) stranky[i*16+j] = (pole4[j] + 16*i <= stran ? pole4[j] + 16*i : 0); vypis = 0; sheet = 1; front = 1; while (stranky[vypis] || stranky[vypis+1]) { if (stranky[vypis] && stranky[vypis+1]) printf("Sheet %d, %s: %d, %d\n", sheet, (front) ? "front": "back", stranky[vypis], stranky[vypis+1]); else if (stranky[vypis]) printf("Sheet %d, %s: %d, Blank\n", sheet, (front) ? "front": "back", stranky[vypis]); else printf("Sheet %d, %s: Blank, %d\n", sheet, (front) ? "front": "back", stranky[vypis+1]); sheet++; vypis +=2; front = !front; } // vypis // for (i = 0; i < stran + 16; i++) printf("%d ", stranky[i]); printf("\n"); scanf("%d", &stran); } return 0; }