Я писал на скорую руку :) А вот точки менять местами не обязательно. Меня интересует тока факт большого радиуса при этом точка остается с теми же координатами) Я помню, что эта задача проходила все тесты на каком-то сайте :)
Допускается наличие в тексте программы одной синтаксической ошибки: пропущен или неверно указан знак пунктуации, неверно написано или пропущено зарезервированное слово языка программирования, не описана или неверно описана переменная, применяется операция, не допустимая для соответсвующего типа данных(ели одна и таже ошибка встречается несколько раз, то это считается за одну ошибку). Это из официального критерия.
Мне С4 этого года понравилась больше. Она заставляет немного подумать над оптимизацией. По мне это интереснее чем парсить строку (хотя конечно надо проверять как технические, так и алгоритмические знания ученика).
<pre> int main() { const double pi = 3,1415926535; double x1, y1, x2, y2, r1, r2, beta, sum; cin>>x1>>y1>>r1; cin>>x2>>y2>>r2; double d = sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); if (r2 > r2) { double t = r1; r1 = r2; r2 = t; } if (d + r1 <= r2) sum = pe*r1*r1; else if (d>=r1+r2) sum = 0; else { double x = (r2*r2 - r1*r1 + d*d)/ (2*d); double y = d-x; double h = sqrt(r2*r2 - x*x); double alpha = 2*atan(h/x); if (y == 0) beta = pi; else if (y < 0) beta = 2*(atan(h/y) + pi); else beta = 2*atan(h/y); sum = 0,5*r2*r2*(alpha - sin(aplha)) + 0,5*r1*r1*(beta - sin(beta)); } cout<<sum; return 0; } </pre>