Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define PR1(z) printf("i=%03d ", z );
- #define PRn printf("\n");
- #define PR2(x, n, y) for (i=1; i<n; i++) printf(x, y[i]);
- int rek2(int), przes2(int), sort2(int), a[9]={0,63,35,15,48,15,27,17,63};
- main()
- { int n=9, (*fptr)(int);
- fptr = rek2; printf("Wynik dzialania rek2 = %d\n", (*fptr)(n));
- fptr = przes2; printf(" => Wynik = %d\n", (*fptr)( 2*n+2>>2 ));
- fptr = sort2;
- printf("Co to za obiekt: int (*fptr)(float *, char)?\n"); PRn;
- printf("W wydruku zestawu 2 ma byc %d+1 linii", (*fptr)(n+1>>1)&0xa);
- }
- int rek2(int n)
- { printf ("Wywolanie rek2 z argumentem (%d)\n", n);
- if ( n<=0 ) return n&15;
- else return ( rek2 ( n - 5 >> 1 ) + n | 7); }
- int przes2 (int m)
- { int *ptr, i, n = 1;
- ptr=(int *) malloc(m*sizeof(int)<<1); *(ptr+n++) = m;
- {int i, j, m;
- for ( j=7, i=5, m=i&j; j>i; j--) { *(ptr + n++) = m + 1 >> 1;
- { int i, m; for ( i=4, m=j^i; i<j-1; i++) *(ptr+n++) = --m;}
- ptr[n++] = m^3; } ptr[n++] = m/2-i; } ptr[n++] = m<<1;
- PR2("%d", 2*m+1, ptr); return ( 4 - m >> 2 );
- }
- int sort2(int n)
- { int i, j, k, l, p, x;
- PR1(1); PR2("%3o ",n,a); PRn; l = 2; p = k = n - 1;
- do { for(j=p; j>=l; j--)
- if ( a[j-1] > a[j] ) { x=a[j-1]; a[j-1]=a[j]; a[j]=x; k=j;}
- l=k+1; PR1(l); PR2("%3x ", n, a); PRn;
- for (j=l; j<=p; j++)
- if ( a[j-1] > a[j] ) { x=a[j-1]; a[j-1]=a[j]; a[j]=x; k=j;}
- p=k-1; PR1(p); PR2("%3d ", n, a); PRn;
- } while (l<p); return(sizeof(a)/2|7); }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement