Advertisement
Infernale

Number diamond

Oct 24th, 2018
414
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.54 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. int countDigits(int x){
  5.     int count = 0;
  6.     while(x){
  7.         x/=10;
  8.         count++;
  9.     }
  10.     return count++;
  11. }
  12. int main(){
  13.     int num,nums,numsDigs,mod,div,den,j;
  14.     while(scanf("%d",&num),num){
  15.         if(num<100){
  16.             printf("%d\n",num);
  17.             continue;
  18.         }
  19.         int digits = countDigits(num);
  20.         int split = (digits%2==0?digits/2:digits/2+1);
  21.         int space = (digits%2==0?digits-1:digits);
  22.         int bound = (digits%2==0?-1:0);
  23.         int n = (digits%2==0?0:-1);
  24.         for(int i=1;i<=split;i++){
  25.             mod = pow(10,(2*i+n));
  26.             div = pow(10,digits-(digits/2+1)) / pow(10,i-1);
  27.             nums = num/div%mod;
  28.             numsDigs = countDigits(nums);
  29.             for(j=1;j<=space-(2*(i-1));j++){
  30.                 printf(" ");
  31.             }
  32.             for(j=1;j<=2*i+n;j++){
  33.                 den = (numsDigs>1?pow(10,numsDigs-j):1);
  34.                 printf("%d ",nums/den%10);
  35.             }
  36.             printf("\n");
  37.         }
  38.         for(int i=digits-split;i>0;i--){
  39.             mod = pow(10,(2*i+n));
  40.             div = pow(10,digits-(digits/2+1)) / pow(10,i-1);
  41.             nums = num/div%mod;
  42.             numsDigs = countDigits(nums);
  43.             for(j=1;j<=space-(2*(i-1));j++){
  44.                 printf(" ");
  45.             }
  46.             for(j=1;j<=2*i+n;j++){
  47.                 den = (numsDigs>1?pow(10,numsDigs-j):1);
  48.                 printf("%d ",nums/den%10);
  49.             }
  50.             printf("\n");          
  51.         }
  52.     }
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement