Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 26.09.2013
Сообщений: 51
1

Подправить программу

31.10.2013, 01:03. Показов 1017. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста, подправить программу.

Задание следующее:
Даны действительные числа a, b, c, d. Проверить возможность построения пятиугольника, изображенного на рисунке (рисунок прилагаю) и найти его площадь.
Проверку возможности существования треугольника и вычисление его площади по трем сторонам организовать в подпрограмме.

Мой вариант программы:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#include <math.h>
 
int treug (float a, float b, float c)
{ int p=0;
if ((a+b>c) || (a+c>b) || (b+c>a))
{ p=1;
printf ("Treug. sush."); }
return p;
}
 
int plos (float a, float b, float c)
{
float p = (a+b+c)/2;
return s = sqrt(p*(p-a)*(p-b)*(p-c));
}
 
int main ()
{
printf ("Vvedite 4 chisla");
scanf ("%f %f %f %f", &a, &b, &c, &d);
float S = s (1.0, 2.0, a) + s(2.0, 2.5, b) + s (2.5, d, c);
printf ("%f", &S);
return 0;
}
Миниатюры
Подправить программу  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2013, 01:03
Ответы с готовыми решениями:

Подправить программу
помогите, пожалуйста. программа работает только когда вводятся числа по условию от 3 до 9. когда...

Подправить программу на миссивы, си++
Вопрос в тексте кода. Помогите, пожалуйста. #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include...

помогите подправить программу
Здравствуйте, есть следующее задание: С клавиатуры ввести текст, признаком конца ввода считать...

Нужно подправить программу
Нужно чтобы программа выводила сообщение &quot;такого элемента нет&quot; если указанной цифры нет в массиве....

16
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
31.10.2013, 08:44 2
Beverly, намудрили вы тут. Сделайте проверку существования треугольника, которая будет возвращать true в случае существования и false в случае невозможности существования. В main сделать условие, где будут проверяться все 3 треугольника и если все они существуют, то переходить к вычислению площади. И не забывайте код в тэги оформлять

Добавлено через 7 минут
Beverly,
C++
1
2
3
4
bool check(double a, double b, double c)
{
    return (a+b>c && b+c>a && a+c>b && a > 0 && b > 0 && c > 0);
}
Вроде все должно быть правильно
0
0 / 0 / 1
Регистрация: 26.09.2013
Сообщений: 51
31.10.2013, 10:04  [ТС] 3
Пожалуйста, напишите полностью код!
Я совсем не понимаю синтаксиса, поэтому выдает ошибки.
Спасибо.
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
31.10.2013, 10:21 4
Beverly, тогда ждите, когда я домой приду
0
0 / 0 / 1
Регистрация: 26.09.2013
Сообщений: 51
31.10.2013, 10:57  [ТС] 5
Хорошо.

Вот с помощью этого фрагмента я определяю существует ли треугольник.
C++
1
2
3
4
5
6
7
int treug (float a, float b, float c)
{ int p=0;
if ((a+b>c) || (a+c>b) || (b+c>a))
{ p=1;
printf ("Treug. sush."); }
return p;
}
Дальше, как я понимаю, мы должны составить подпрограмму (функцию) для вычисления площади треугольника...
(Находим полупериметр, находим площадь по формуле Герона)

А затем, 3 шагом, найти площадь 5-тиугольника
?
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
31.10.2013, 11:21 6
Ну да
0
0 / 0 / 1
Регистрация: 26.09.2013
Сообщений: 51
31.10.2013, 11:26  [ТС] 7
Хорошо.
Напишите вечером код, пожалуйста.
И если не сложно, с подробными комментариями.
Буду безмерно благодарна!
Еще раз спасибо.
0
148 / 114 / 21
Регистрация: 15.01.2013
Сообщений: 266
31.10.2013, 12:30 8
Раз уж у меня есть доступ к компилятору, и 10 минут свободного времени...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//Функции ввода-вывода на экран
#include <iostream>
//Математика
#include <math.h>
 
 
//Функция проверки существования треугольника
bool check_triangle(double a, double b, double c)
{
    //Проверяем наличие сторон и неравенство треугольника
    if  (a > 0  && b > 0 && c > 0
                && a + b > c
                && a + c > b
                && b + c > a)
        return true;
    return false;
}
 
//Функция, считающая площадь треугольнака по 3м сторонам по формуле Герона
double calculate_area(double a, double b, double c)
{
    return 0.25 * sqrt((a + b + c) * (b + c - a) * (a + c - b) * (a + b - c));
}
 
int main(int argc, char** argv)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    double a, b, c, d;
 
    std::cout << "Введите числа a, b, c, d: ";
    std::cin >> a >> b >> c >> d;
 
    //Проверяем существование всех трех треугольников. Если нет, то выводит ошибку и завершает работу программы.
    if(!check_triangle(1, 2, a) || !check_triangle(2, 2.5, b) || !check_triangle(d, 2.5, c))
    {
        std::cout << "Ошибка, один из треугольников не существует." << std::endl;
        system("pause");
        return -1;
    }
 
    //Считаем площадь пятиугольника
    double pentagon_area = calculate_area(1, a, 2) + calculate_area(2, 2.5, b) + calculate_area(2.5, d, c);
 
    std::cout << "Площадь пятиугольника: " << pentagon_area << std::endl;
 
    system("pause");
    return 0;
}
Математику не проверял, но если нигде не ошибся, то должно правильно считать.
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
31.10.2013, 12:32 9
Beverly, держите. Тестировал у себя, все работает. Если что непонятно, спрашивайте
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream> // для cin/cout
#include <math.h> // для sqrt
using namespace std;
 
double S(double a, double b, double c) // нахождение площади треугольника по длинам 3 сторон
{
double p = (a+b+c)/2;
return sqrt(p*(p-a)*(p-b)*(p-c));
}
 
bool check(double a, double b, double c) // проверка на корректность треугольника (возвращаем true/false)
{
    return (a+b>c && b+c>a && a+c>b && a > 0 && b > 0 && c > 0);
}
 
int main(int argc, char *argv[])
{
    double a,b,c,d; // объявляем необходимые переменные
    cout << "A:" << endl;
    cin >> a;
    cout << "B:" << endl;
    cin >> b;
    cout << "C:" << endl;
    cin >> c;
    cout << "D:" << endl;
    cin >> d;
    /* Сами вычисления */
    if (check(1.0,2.0,a) && check(2.0,2.5,b) && check(2.5,d,c)) // проверяем, все ли треугольники корректны
        cout << "S = " << (S(1.0,2.0,a)+S(2.0,2.5,b)+S(2.5,d,c)) << endl; // считаем и выводим площадь
    else cout << "Bad triangle!" << endl; // ругаем пользователя
    //system ("pause"); или что то в этом роде, что бы окно не закрывалось после выдачи результата
    return 0;
}
0
0 / 0 / 1
Регистрация: 26.09.2013
Сообщений: 51
31.10.2013, 21:35  [ТС] 10
Добавлено через 49 минут
Программа, по идее, работает.
Спасибо большое!

НО:
else cout << "Bad triangle!" << endl;
Этот фрагмент не выводится.
Программа выводит или S = (значение)
Или же:
sqrt: DOMAIN error
sqrt: DOMAIN error
sqrt: DOMAIN error

Вопрос, собственно, такой: почему программа не выводит "Bad triangle!"?
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
31.10.2013, 21:43 11
Beverly, да? сейчас на всякий случай еще раз посмотрю. Все нормально. Перепроверьте у себя, думаю, вы там опечатались
Миниатюры
Подправить программу  
0
0 / 0 / 1
Регистрация: 26.09.2013
Сообщений: 51
01.11.2013, 21:51  [ТС] 12
Не подскажите, как обеспечить в функции передачу по адресу? (int *p)
И как потом обратиться к этой функции?

Вот функция:

C++
1
2
3
4
5
6
7
8
9
void treug (float a, float b, float c, int*p)
{
p=0;
if ((a+b>c) || (b+c>a) || (c+a>b))
{
 p=1;
  printf ("Treug. sush.");
return p;
}
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
01.11.2013, 21:53 13
Beverly, что вы хотите передать?
0
0 / 0 / 1
Регистрация: 26.09.2013
Сообщений: 51
02.11.2013, 19:54  [ТС] 14
Нужно проверить существует ли треугольник, только использовать указатель (по адресу)
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
02.11.2013, 21:25 15
1) Вместо p = число; следует писать *p = число;
2) Треугольник существует, если выполняются все три условия (a+b>c), (b+c>a), (c+a>b)
C++
1
if( (a+b>c) && (b+c>a) && (c+a>b) )
// if( (a+b>c) || (b+c>a) || (c+a>b) ) // а это означает "хотя бы одно из условий"
0
0 / 0 / 1
Регистрация: 26.09.2013
Сообщений: 51
03.11.2013, 21:05  [ТС] 16
В функции, которая определяет существует ли треугольник или нет, нужно использовать указатель (на p) *p
При вызове он должен определять существует ли треугольник или нет
Помогите с кодом данного фрагмента, пожалуйста.
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
04.11.2013, 01:59 17
Beverly, вы что то новое удумали? Зачем вам получать передавать указатель p?
0
04.11.2013, 01:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2013, 01:59
Помогаю со студенческими работами здесь

Необходимо подправить программу
я написал программу: #include &lt;iostream&gt; #include &quot;liquid.h&quot; #include &quot;SpNapitki.h&quot; using...

Распределение памяти (подправить программу)
исправить: вывести на экран не номер строки с максимальным количеством положительных элементов, а...

Подправить программу, где-то ошибся)
Не выводит седловые точки #include&lt;conio.h&gt; #include&lt;stdio.h&gt; void main(void) { int i,j, a,...

(С++)Нужно немного подправить программу
Задача такова: Дан файл, содержащий сведения о телефонах абонентов. Структура записи файла: фамилия...

Подправить готовую программу, что бы использовались указатели
Язык форума - русский. Переведите! Дано натуральне парне число n (n &gt;100) і послідовність цілих...

Как подправить программу, что бы она проверяла является ли строчка полиндромом без пробелов
Где есть ошибка в программе. И как подправить программу, что бы она проверяла является ли строчка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru