Автор Тема: Генератор последовательности страниц для распечатки книгой  (Прочитано 4901 раз)

Оффлайн keremet

  • Global Moderator
  • ROOT
  • *****
  • Сообщений: 462
  • Репутация: +237/-0
    • Просмотр профиля
    • OpenSolaris
Решил, что такая программка нам пригодится и написал ее.

#include <stdio.h>
#include <stdlib.h>

void Usage(char *prname){
   printf(   "Usage: %s <first page> <last page> <print times>\n"
      "(<last page> - <first page> + 1) mod 4 must be 0\n"
      , prname);
   exit(1);
}

int main(int argc, char **argv){
   int n,k, pt;

   if(argc!=1+3)
      Usage(*argv);
   n = atoi(argv[1]);
   k = atoi(argv[2]);
   pt = atoi(argv[3]);
   if( (k<=n) || (k<=0) ||(n<=0) || ((k-n+1) & 3) || ((pt!=1) && (pt!=2)) )
      Usage(*argv);
   if(pt==1)      
      for(;;k-=2,n+=2){
         printf("%i,%i,%i,%i", k,n,n+1,k-1);
         if(k-1>n+1+1)
            printf(",");
         else{
            printf("\n");
            break;
         }
      }
   else{ //pt==2
      int tk=k, tn=n;
      for(;;k-=2,n+=2){
         printf("%i,%i", k,n);
         if(k-1>n+1+1)
            printf(",");
         else{
            printf("\n");
            break;
         }
      }      
      for(n=tn, k=tk;;k-=2,n+=2){
         printf("%i,%i", n+1,k-1);
         if(k-1>n+1+1)
            printf(",");
         else{
            printf("\n");
            break;
         }
      }
   }
   return 0;
}

Оффлайн LiveStalker

  • Administrator
  • Специалист
  • *****
  • Сообщений: 93
  • Репутация: +66/-0
    • ICQ клиент - 315349654
    • Просмотр профиля
    • OpenSolaris
Полезная вещь, помню тоже такую писал. :D