Форматирование ужасное:
Код:
if (dl==0) {
if (r1>r2) printf("Second circle is embedded in the first.");
if (r2>r1) printf("First circle is embedded in the second.");
if (r1==r2) printf("Circles coincide with each other.");
} else
if (dl>(r1+r2)) printf("The circles do not interact."); else
if (dl==(r1+r2)) printf("The circles have one common point. External touch."); else
if (((r1-r2)<dl)&&(dl<(r1+r2))) printf("The circles intersect."); else
if ((dl<fabs(r1-r2)) /*&&(dl!=0)*/ &&(r1>r2)) printf("The second circle inside the first."); else
if ((dl<fabs(r1-r2)) /*&&(dl!=0)*/ &&(r2>r1)) printf("The fisrt circle inside the second."); else
if ((dl+r2)==r1) printf("The circles have one common point. Internal touch. The second circle inside the first."); else
if ((dl+r1)==r2) printf("The circles have one common point. Internal touch. The second circle inside the first.");
printf("\nAgain? ('n' - no, anykey - yes).");
Конструкцию if... else if... else лучше писать так:
Код:
if (foo1)
{
dosomething();
} else if (foo2)
{
dosomething2();
} else if (foo3)
{
dosomething3();
} else
{
dosomething4();
}
Насчет расстановки скобок не настаиваю, хотя, даже если оператор в скобках только один, их можно опустить, однако это крайне не рекомендуется делать в таких ситуациях. Запрсто можно получить логическую ошибку при вложенных if, хотя компилятор все откомпилирует правильно, например так:
Код:
if (...)
if (...) foo();
else if (...) bar();
else (...) foo();
Попробуйте найти эту ошибку, особенно если отформатировано неверно. Так что скобки все-таки расставьте.
Далее - else от if не отделяют новой строкой - нечитабельно абсолютно.
Далее - у Вас конструкция заканчивается на else if, это допустимо, однако, если никакое условие не сработает, программа ничего не выведет. Логичнее было бы закончить так:
Код:
...
else
{
printf "\nSomething go wrong here";
}
И еще Вы не учли рекомендации использовать double, хотя тут это непринципиально.
-- Вт сен 15, 2009 13:21:36 --Почему не переделали конструкцию
Код:
if (dl==(r1+r2)) printf("The circles have one common point. External touch.");
аналогично с этой:
Код:
if (fabs(dl-(r1+r2))<EPS) printf("The circles have one common point. Internal touch. The second circle inside the first.");
?
P.S. В педагогических целях (будущим изучающим язык) было неплохо вместо редактирования первого сообщения, публиковать измененный код в новом сообщении. А то вся первая страница уже сейчас стала неактуально, непонятно что обсуждали.