float a,b,c,S,P; do { printf("\n Введите три стороны треугольника "); cin>>a>>b>>c; } while((a<0) && (b<0) && (c<0));
if ((a==b) && (a==c)) { P=a+b+c; S=(1/2.0)*a*b*(sqrt(3)/2.0); cout<< "Периметр треугольника : " << P <<endl; cout<< "Площадь треугольника :" << S <<endl; } else cout<< "Треугольник не равносторонний" <<endl;
getche(); }
Объясняю: у тебя else было "смещено" (misplaced), потому что по правилам синтаксиса else относится к последнему if, НЕ содержащему ветку else, а у тебя if состоит из одной строки... Чтобы выполнять в if несколько строк - используй фигурные скобки...
Что касается ошибки вычисления корня, то тут проблема в том, что C++ это не Паскаль, где если только есть деление, то результат по-любому будет вещественным. Здесь надо ПРИВОДИТЬ результат к вещественному типу (что я и сделал)...
А зачем, кстати, ты смешал С и С++? Пользуйся cout вместо printf...
Автор: klem4 30.03.2006 19:50
+ У тебя синтаксическая ошибка
getche(); вместо getch();
Ну и тут :
Код
while((a<0) && (b<0) && (c<0));
Должно быть ИЛИ, а не И + неравенства должны быть не строгими, представляешь себе треугольник со стороной = 0 ?
Автор: volvo 30.03.2006 20:09
klem4, getche() такая же функция языка, как и getch(), только дающая Эхо на экран. Почему ты вдруг решил, что это ошибка? Может это у тебя ошибка, что ты getch() используешь?
Автор: Merlin 30.03.2006 20:16
to klem4 and volvo :
Спасибо за быструю помощь
Автор: klem4 30.03.2006 20:26
Цитата(volvo @ 30.03.2006 17:09)
klem4, getche() такая же функция языка, как и getch(), только дающая Эхо на экран. Почему ты вдруг решил, что это ошибка? Может это у тебя ошибка, что ты getch() используешь?
Хм. Просто во первых про getch(); я знал раньше и использовал, а на getche(); компилер ругнулся (как мне судя по всему показалось)... Сейчас перепроверил, все нормально, видимо я машинально исправил, решив что там ошибка, виноват.