#include <iostream>
#include <math.h>
struct Point
{
float x;
float y;
float distance( Point & p )
{
return sqrt ( ( ( p.x - x ) * ( p.x - x ) ) + ( ( p.y - y ) * ( p.y - y ) ) ) ;
}
} ;
struct Line
{
Point start;
Point end;
float length( )
{
return start.distance ( end ) ;
}
Point midpoint( )
{
return { ( start.x + end.x ) / 2 , ( start.y + end.y ) / 2 } ;
}
} ;
Line lines[ 2 ]
{
{ { 0 , 0 } , { 30 , 40 } } ,
{ { 10 , 10 } , { 20 , 20 } } ,
} ;
int main( )
{
for ( int i = 0 ; i < 2 ; i++ )
{
Line & line = lines[ i] ;
Point start = line.start ;
Point end = line.end ;
float length = line.length ( ) ;
Point midpoint = line.midpoint ( ) ;
printf ( " Length of line [ (%5.2f, %5.2f), (%5.2f, %5.2f) ] is %.2f, midpoint is (%5.2f, %5.2f)\n " ,
start.x ,
start.y ,
end.x ,
end.y ,
length,
midpoint.x ,
midpoint.y
) ;
}
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWF0aC5oPgoKCnN0cnVjdCBQb2ludAp7CglmbG9hdCB4OwoJZmxvYXQgeTsKCQoJZmxvYXQgZGlzdGFuY2UoIFBvaW50ICYgcCApCgl7CgkJcmV0dXJuIHNxcnQoICggKCBwLnggLSB4ICkgKiAoIHAueCAtIHggKSApICsgKCAoIHAueSAtIHkgKSAqICggcC55IC0geSApICkgKTsKCX0KfTsKCgpzdHJ1Y3QgTGluZQp7CglQb2ludCBzdGFydDsKCVBvaW50IGVuZDsKCQoJZmxvYXQgbGVuZ3RoKCkKCXsKCQlyZXR1cm4gc3RhcnQuZGlzdGFuY2UoIGVuZCApOwoJfQoJCglQb2ludCBtaWRwb2ludCgpCgl7CgkJcmV0dXJuIHsgKCBzdGFydC54ICsgZW5kLnggKSAvIDIsICggc3RhcnQueSArIGVuZC55ICkgLyAyIH07Cgl9Cn07CgoKCkxpbmUgbGluZXNbMl0KewoJeyB7ICAwLCAgMCB9LCB7ICAzMCwgIDQwIH0gfSwKCXsgeyAxMCwgMTAgfSwgeyAgMjAsICAyMCB9IH0sCn07CgoKaW50IG1haW4oKQp7Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCAyOyBpKysgKQoJewoJCUxpbmUgJiBsaW5lID0gbGluZXNbaV07CgkJCgkJUG9pbnQgc3RhcnQgPSBsaW5lLnN0YXJ0OwoJCVBvaW50IGVuZCA9IGxpbmUuZW5kOwoJCWZsb2F0IGxlbmd0aCA9IGxpbmUubGVuZ3RoKCk7CgkJUG9pbnQgbWlkcG9pbnQgPSBsaW5lLm1pZHBvaW50KCk7CgkJCgkJcHJpbnRmKCIgTGVuZ3RoIG9mIGxpbmUgWyAoJTUuMmYsICU1LjJmKSwgKCU1LjJmLCAlNS4yZikgXSBpcyAlLjJmLCBtaWRwb2ludCBpcyAoJTUuMmYsICU1LjJmKVxuIiwKCQkJc3RhcnQueCwKCQkJc3RhcnQueSwKCQkJZW5kLngsCgkJCWVuZC55LAoJCQlsZW5ndGgsCgkJCW1pZHBvaW50LngsCgkJCW1pZHBvaW50LnkKCQkpOwoJfQoJCglyZXR1cm4gMDsKfQ==
stdout
Length of line [ ( 0.00, 0.00), (30.00, 40.00) ] is 50.00, midpoint is (15.00, 20.00)
Length of line [ (10.00, 10.00), (20.00, 20.00) ] is 14.14, midpoint is (15.00, 15.00)