IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Определить: равносторонний ли треугольник, C++
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 114
Пол: Мужской
Реальное имя: Ден

Репутация: -  0  +


Задание :

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



#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. Как посчитать Площадь, какая то ошибка возникает при подсчёте корня.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






#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...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


+ У тебя синтаксическая ошибка

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

Ну и тут :

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


Должно быть ИЛИ, а не И + неравенства должны быть не строгими, представляешь себе треугольник со стороной = 0 ?

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






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


Пионер
**

Группа: Пользователи
Сообщений: 114
Пол: Мужской
Реальное имя: Ден

Репутация: -  0  +


to klem4 and volvo :

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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


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

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


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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 21:41
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name