Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Определить: равносторонний ли треугольник

Автор: Merlin 30.03.2006 19:08

Задание :

Если треугольник равносторонний, то посчитать его площадь и периметр.



#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
void main()
{
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*a*b*(sqrt(3)/2);
cout<< "Периметр треугольника : " << P <<endl;
cout<< "Площадь треугольника :" << S <<endl;
else cout<< "Треугольник не равносторонний" <<endl;

getche();
}




Объясните пожалйста :

1. Как сделать чтобы заработало "else"
2. Как посчитать Площадь, какая то ошибка возникает при подсчёте корня.

Автор: volvo 30.03.2006 19:33

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
void main() {

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 :

Спасибо за быструю помощь good.gif

Автор: klem4 30.03.2006 20:26

Цитата(volvo @ 30.03.2006 17:09) *

klem4, getche() такая же функция языка, как и getch(), только дающая Эхо на экран. Почему ты вдруг решил, что это ошибка? Может это у тебя ошибка, что ты getch() используешь?


Хм. Просто во первых про getch(); я знал раньше и использовал, а на getche(); компилер ругнулся (как мне судя по всему показалось)... Сейчас перепроверил, все нормально, видимо я машинально исправил, решив что там ошибка, виноват.