//(c)Terminator
#include <stdio.h>
#define N 6
#define tpl_array_rev(pfx, type) \
void array_rev##pfx(type* f, type* l){\
type t;\
type* a = f, *b = l - 1;\
while(a < b){\
t = *a;\
*a = *b;\
*b = t;\
++a;\
--b;\
}\
}
#define tpl_array_print(pfx, fmt, type) \
void print_array##pfx(FILE* hout, const type* f, const type* l){\
for(; f != l; ++f){\
fprintf(hout, fmt, *f);\
fputc(' ', hout);\
}\
fputc('\n', hout);\
}
tpl_array_rev( i, int )
tpl_array_rev( d, double )
tpl_array_rev( c, char )
tpl_array_print( i, "%d" , int )
tpl_array_print( d, "%lf" , double )
tpl_array_print( c, "%c" , char )
int main( void ) {
char str[ ] = "ABCDEF" ;
int iarr[ ] = { 1 , 2 , 3 , 4 , 5 , 6 , } ;
double darr[ ] = { 0.1 , 0.2 , 0.3 , 0.4 , 0.5 , 0.6 } ;
print_arrayc( stdout, str, str + N) ;
array_revc( str, str + N) ;
print_arrayc( stdout, str, str + N) ;
print_arrayi( stdout, iarr, iarr + N) ;
array_revi( iarr, iarr + N) ;
print_arrayi( stdout, iarr, iarr + N) ;
print_arrayd( stdout, darr, darr + N) ;
array_revd( darr, darr + N) ;
print_arrayd( stdout, darr, darr + N) ;
return 0 ;
}
Ly8oYylUZXJtaW5hdG9yCiNpbmNsdWRlIDxzdGRpby5oPgojZGVmaW5lICBOICA2CgojZGVmaW5lIHRwbF9hcnJheV9yZXYocGZ4LCB0eXBlKSBcCnZvaWQgYXJyYXlfcmV2IyNwZngodHlwZSogZiwgdHlwZSogbCl7XAoJdHlwZSB0O1wKCXR5cGUqIGEgPSBmLCAqYiA9IGwgLSAxO1wKCXdoaWxlKGEgPCBiKXtcCgkJdCAgPSAqYTtcCgkJKmEgPSAqYjtcCgkJKmIgPSB0O1wKCQkrK2E7XAoJCS0tYjtcCgl9XAp9CgojZGVmaW5lIHRwbF9hcnJheV9wcmludChwZngsIGZtdCwgdHlwZSkgXAp2b2lkIHByaW50X2FycmF5IyNwZngoRklMRSogaG91dCwgY29uc3QgdHlwZSogZiwgY29uc3QgdHlwZSogbCl7XAoJZm9yKDsgZiAhPSBsOyArK2Ype1wKCQlmcHJpbnRmKGhvdXQsIGZtdCwgKmYpO1wKCQlmcHV0YygnICcsIGhvdXQpO1wKCX1cCglmcHV0YygnXG4nLCBob3V0KTtcCn0KCnRwbF9hcnJheV9yZXYoaSwgaW50KQp0cGxfYXJyYXlfcmV2KGQsIGRvdWJsZSkKdHBsX2FycmF5X3JldihjLCBjaGFyKQoKdHBsX2FycmF5X3ByaW50KGksICIlZCIsICBpbnQpCnRwbF9hcnJheV9wcmludChkLCAiJWxmIiwgZG91YmxlKQp0cGxfYXJyYXlfcHJpbnQoYywgIiVjIiwgIGNoYXIpCgoKCmludCBtYWluKHZvaWQpewoJY2hhciBzdHJbXSAgICA9ICJBQkNERUYiOwoJaW50ICBpYXJyW10gICA9IHsgMSwgMiwgMywgNCwgNSwgNiwgfTsgCglkb3VibGUgZGFycltdID0geyAwLjEsIDAuMiwgMC4zLCAwLjQsIDAuNSwgMC42IH07CgoJcHJpbnRfYXJyYXljKHN0ZG91dCwgc3RyLCBzdHIgKyBOKTsKCWFycmF5X3JldmMoc3RyLCBzdHIgKyBOKTsKCXByaW50X2FycmF5YyhzdGRvdXQsIHN0ciwgc3RyICsgTik7CglwdXRjaGFyKCdcbicpOwoKCXByaW50X2FycmF5aShzdGRvdXQsIGlhcnIsIGlhcnIgKyBOKTsKCWFycmF5X3JldmkoaWFyciwgaWFyciArIE4pOwoJcHJpbnRfYXJyYXlpKHN0ZG91dCwgaWFyciwgaWFyciArIE4pOwoJcHV0Y2hhcignXG4nKTsKCglwcmludF9hcnJheWQoc3Rkb3V0LCBkYXJyLCBkYXJyICsgTik7CglhcnJheV9yZXZkKGRhcnIsIGRhcnIgKyBOKTsKCXByaW50X2FycmF5ZChzdGRvdXQsIGRhcnIsIGRhcnIgKyBOKTsKCXJldHVybiAwOwp9Cg==