Помощь - Поиск - Пользователи - Календарь
Полная версия: Определить: равносторонний ли треугольник
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Merlin
Задание :

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



#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
#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
+ У тебя синтаксическая ошибка

getche(); вместо getch();

Ну и тут :

Код
while((a<0) && (b<0) && (c<0));


Должно быть ИЛИ, а не И + неравенства должны быть не строгими, представляешь себе треугольник со стороной = 0 ?
volvo
klem4, getche() такая же функция языка, как и getch(), только дающая Эхо на экран. Почему ты вдруг решил, что это ошибка? Может это у тебя ошибка, что ты getch() используешь?
Merlin
to klem4 and volvo :

Спасибо за быструю помощь good.gif
klem4
Цитата(volvo @ 30.03.2006 17:09) *

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


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