#include <stdio.h>
#define SZ_Y (10)
#define SZ_X (10)
#define SZ_YX ( SZ_Y * SZ_X )
int main( void )
{
int count = 0, height = SZ_Y, width = SZ_X;
double x_g = 0.0, y_g = 0.0;
unsigned char img_src[ SZ_YX ] = { 0 };
char img_tmp[ SZ_YX + 1 ] =
//...0123456789
".........." // 0
".........." // 1
".........." // 2
"...ooooo.." // 3
"...ooooo.." // 4
"...ooxoo.." // 5
"...ooooo.." // 6
"...ooooo.." // 7
".........." // 8
"..........";// 9
for( int i = 0; i < SZ_YX; i++ )
{
if( '.' != img_tmp[ i ] )
{
img_src[ i ] = 255;
}
}
for( int y = 0; y < height; y++ )
{
for( int x = 0; x < width; x++ )
{
if( 255 == img_src[ y * width + x ] )
{
count++;
x_g += x;
y_g += y;
}
}
}
x_g /= count;
y_g /= count;
printf( "重心(x, y) = (%f, %f)\n", x_g, y_g );
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNaX1kgKDEwKQojZGVmaW5lIFNaX1ggKDEwKQojZGVmaW5lIFNaX1lYICggU1pfWSAqIFNaX1ggKQoKaW50IG1haW4oIHZvaWQgKQp7CglpbnQgY291bnQgPSAwLCBoZWlnaHQgPSBTWl9ZLCB3aWR0aCA9IFNaX1g7Cglkb3VibGUgeF9nID0gMC4wLCB5X2cgPSAwLjA7Cgl1bnNpZ25lZCBjaGFyIGltZ19zcmNbIFNaX1lYIF0gPSB7IDAgfTsKCWNoYXIgaW1nX3RtcFsgU1pfWVggKyAxIF0gPQoJLy8uLi4wMTIzNDU2Nzg5CgkJIi4uLi4uLi4uLi4iIC8vIDAKCQkiLi4uLi4uLi4uLiIgLy8gMQoJCSIuLi4uLi4uLi4uIiAvLyAyCgkJIi4uLm9vb29vLi4iIC8vIDMKCQkiLi4ub29vb28uLiIgLy8gNAoJCSIuLi5vb3hvby4uIiAvLyA1CgkJIi4uLm9vb29vLi4iIC8vIDYKCQkiLi4ub29vb28uLiIgLy8gNwoJCSIuLi4uLi4uLi4uIiAvLyA4CgkJIi4uLi4uLi4uLi4iOy8vIDkKCglmb3IoIGludCBpID0gMDsgaSA8IFNaX1lYOyBpKysgKQoJewoJCWlmKCAnLicgIT0gaW1nX3RtcFsgaSBdICkKCQl7CgkJCWltZ19zcmNbIGkgXSA9IDI1NTsKCQl9Cgl9CgoJZm9yKCBpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKyApCgl7CgkJZm9yKCBpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrICkKCQl7CgkJCWlmKCAyNTUgPT0gaW1nX3NyY1sgeSAqIHdpZHRoICsgeCBdICkKCQkJewoJCQkJY291bnQrKzsKCQkJCXhfZyArPSB4OwoJCQkJeV9nICs9IHk7CgkJCX0KCQl9Cgl9Cgl4X2cgLz0gY291bnQ7Cgl5X2cgLz0gY291bnQ7CgoJcHJpbnRmKCAi6YeN5b+DKHgsIHkpID0gKCVmLCAlZilcbiIsIHhfZywgeV9nICk7CglyZXR1cm4gMDsKfQoKCg==