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

Треугольник

07.10.2010, 16:44. Показов 2654. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Составьте программу для выполнения следующих заданий:
1. Ввести с клавиатуры длины отрезков a, b и c.
2. Проверить, могут ли быть эти отрезки сторонами треугольника, и вывести соответствующее сообщение.
3. Используя формулу Герона и теоремы синусов и косинусов, вычислить периметр и площадь треугольника, высоты ha, hb и hc, медианы ma, mb и mc и биссектрисы la, lb и lc треугольника.
4. Вывести результаты вычислений с комментариями на экран дисплея.
5. Используя датчик случайных чисел, получить координаты вершин треугольника x1, y1, x2, y2, x3, y3, принадлежащие отрезку [-5,5].
6. Не используя формулы Герона и теоремы косинусов, вычислить периметр, площадь и медианы треугольника.
7. Вычислить длины наибольшей и наименьшей сторон треугольника.
8. Вывести с комментариями результаты вычислений (координаты вершин, периметр, площадь и медианы, длины наименьшей и наибольшей сторон треугольника) на экран дисплея.
9. Напечатать длины сторон в порядке возрастания.

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
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "math.h"
int a,b,c;
int ha,hb,hc;
int ma,mb,mc;
int la,lb,lc;
int x1,x2,x3;
int z1,z2,z3;
double p, s;
int _tmain(int argc, _TCHAR* argv[])
{
    printf("Введите длину отрезка a\n");
    scanf("%d", &a);
    printf("Вы ввели число %d, спасибо!\n", a);
    printf("Введите длину отрезка b\n");
    scanf("%d", &b);
    printf("Вы ввели число %d, спасибо!\n", b);
    printf("Введите длину отрезка c\n");
    scanf("%d", &c);
    printf("Вы ввели число %d, спасибо!\n", c);
 {
    if (a+b<c) printf("Треугольник получился\n");
    else if (a+b>c) printf("Не треугольник попробуйте заново\n");
        p=a+b+c;
        printf("Периметр равен: %d\n", p);
    return 0;
    
 }
}
Во первых не складывает не целые числа(
Во вторых ищет периметр, но не правильно(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2010, 16:44
Ответы с готовыми решениями:

Создать базовый класс Треугольник с 2 наследниками: Равносторонний треугольник, Прямоугольный треугольник
Задание звучит так: Нужно создать базовый класс Треугольник с двумя наследующими его классами - ...

Класс треугольник с произвольным классом - равнобедренный треугольник
Создать класс треугольник, члены класса - длины 3-х сторон. Предусмотреть в классе методы проверки...

Построить треугольник Паскаля. Используя треугольник Паскаля, вычислить 𝑘−ое число Фиббоначчи. Нумерация чисел Фиббона
#include &lt;iostream&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;Russian&quot;); ...

Создать абстрактный класс "Треугольник" и производный - "Равнобедренный треугольник"
Задание Создать абстрактный класс треугольник. Предусмотреть в классе методы проверки...

16
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
07.10.2010, 17:16 2
Для того, чтобы складывало не целые числа, нужно огласить их как float(double), a вас они int!!!!

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
float a,b,c;
...
scanf("%f", &a);
.....
scanf("%f", &a);
....
scanf("%f", &a);
1
1 / 1 / 0
Регистрация: 03.06.2010
Сообщений: 61
07.10.2010, 17:17  [ТС] 3
Спасибо) А далее что?
0
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
07.10.2010, 17:18 4
Складывает?
0
1 / 1 / 0
Регистрация: 03.06.2010
Сообщений: 61
07.10.2010, 17:20  [ТС] 5
Складывает разобрался)
0
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
07.10.2010, 17:27 6
А, еще

C++
1
float p;
0
1 / 1 / 0
Регистрация: 03.06.2010
Сообщений: 61
07.10.2010, 17:43  [ТС] 7
До этого уже допер)

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
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "math.h"
float a,b,c;
int ha,hb,hc;
int ma,mb,mc;
int la,lb,lc;
int x1,x2,x3;
int z1,z2,z3;
float p, s, pp;
int _tmain(int argc, _TCHAR* argv[])
{
    printf("Введите длину отрезка* a\n");
    scanf("%f", &a);
    printf("Вы ввели число %8.2f, спасибо!\n", a);
    printf("Введите длину отрезка* b\n");
    scanf("%f", &b);
    printf("Вы ввели число %8.2f, спасибо!\n", b);
    printf("Введите длину отрезка* c\n");
    scanf("%f", &c);
    printf("Вы ввели число %8.2f, спасибо!\n", c);
     if (a+b<c) printf("’Треугольник получился\n");
    else if (a+b>c) printf("Не треугольнник попробуйдете заново\n");
     p=a+b+c;
     printf("Периметр равен: %f\n", p);
     pp=(a+b+c)/2;
     printf("Полупериметр равен: %f\n", pp);
}
Добавлено через 13 минут
Так добавил
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
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "math.h"
float a,b,c;
int ha,hb,hc;
int ma,mb,mc;
int la,lb,lc;
int x1,x2,x3;
int z1,z2,z3;
float p, pp,s;
 
int _tmain(int argc, _TCHAR* argv[])
{
    printf("Введите длину отрезка* a\n");
    scanf("%f", &a);
    printf("Вы ввели число %8.2f, спасибо!\n", a);
    printf("Введите длину отрезка* b\n");
    scanf("%f", &b);
    printf("Вы ввели число %8.2f, спасибо!\n", b);
    printf("Введите длину отрезка* c\n");
    scanf("%f", &c);
    printf("Вы ввели число %8.2f, спасибо!\n", c);
     if (a+b<c) printf("’Треугольник получился\n");
    else if (a+b>c) printf("Не треугольнник попробуйдете заново\n");
     p=a+b+c;
     printf("Периметр равен: %f\n", p);
     pp=(a+b+c)/2;
     printf("Полупериметр равен: %f\n", pp);
     s=sqrt(pp*((pp-a)*(pp-b)*(pp-c)));
     printf("Площадь равна: %f\n", s);
     }
И площадь не считает(
0
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
07.10.2010, 18:02 8
Почему, у меня считает!!! Какие стороны вводите?
0
1 / 1 / 0
Регистрация: 03.06.2010
Сообщений: 61
07.10.2010, 18:03  [ТС] 9
4 5 12 А на чём вы проверяли? Я пишу на Visual Studio 2010)
0
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
07.10.2010, 18:08 10
Потому что, под sqrt получается отрицательное число!!!

Добавлено через 39 секунд
Введите например, 4,5,6!!!
0
1 / 1 / 0
Регистрация: 03.06.2010
Сообщений: 61
07.10.2010, 18:10  [ТС] 11
Но тогда это уже не треугольник) Т.к (a+b>c) - не треугольник)
0
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
07.10.2010, 18:18 12
Откуда вы взяли, что (a+b>c) - не триугольник?
0
1 / 1 / 0
Регистрация: 03.06.2010
Сообщений: 61
07.10.2010, 18:19  [ТС] 13
А как тогда определить Проверить, могут ли быть эти отрезки сторонами треугольника, и вывести соответствующее сообщение.
0
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
07.10.2010, 18:35 14
Даже незнаю, надо смотреть свойства треугольников!!!
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
08.10.2010, 09:03 15
Цитата Сообщение от alemor Посмотреть сообщение
А как тогда определить Проверить, могут ли быть эти отрезки сторонами треугольника, и вывести соответствующее сообщение.
Выяснить существует ли треугольник с длинами сторон a,b,c
0
1 / 1 / 0
Регистрация: 03.06.2010
Сообщений: 61
10.10.2010, 15:03  [ТС] 16
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include "StdAfx.h"
#include "stdio.h"
#include "ctype.h"
#include "math.h"
#include "cstdlib"
 
 
 
 
int main()
{
  printf("Лаболаторная работа номер 1\n");
  begin:printf("Выберите действие:\n   1 - Часть 1;\n   2 - Часть 2;\n   X - Выход\n");
  char key;
  key=getc(stdin);
  fflush(stdin);
  key=toupper(key);
  switch (key)
  {
     case '1':
     {
        float a,b,c;
        printf("Введите A: ");
        a=getc(stdin);
        fflush(stdin);
        printf("Введите B: ");
        b=getc(stdin);
        fflush(stdin);
        printf("Введите C: ");
        c=getc(stdin);
        fflush(stdin);
        if (a+b>=c || a+c>=b || b+c>=a) printf("Треугольник получился\n");
        else if (a+b<=c || a+c<=b || b+c<=a) printf("Не треугольник попробуйдете заново\n");
        float p=a+b+c;
        printf("Периметр: %3.3f\n",p);
        p/=2;
        float s=sqrt(p*(p-a)*(p-b)*(p-c));
        printf("Площадь: %3.3f\n",s);
        float h=2*s/a; 
        float asin=h/b;
        float acos=sqrt(1-asin*asin);
        float a2sin=sqrt(0.5*(1+acos));
        float m=h/a2sin;
        float bs=2*s/a2sin/(a+b);
        printf("Высота, медиана, биссектрисса A: %3.3f, %3.3f, %3.3f\n",h,m,bs);
        h=2*s/b;
        asin=h/c;
        acos=sqrt(1-asin*asin);
        a2sin=sqrt(0.5*(1+acos));
        m=h/a2sin;
        bs=2*s/a2sin/(c+b);
        printf("Высота, медиана, биссектрисса B: %3.3f, %3.3f, %3.3f\n",h,m,bs);
        h=2*s/a;
        asin=h/c;
        acos=sqrt(1-asin*asin);
        a2sin=sqrt(0.5*(1+acos));
        m=h/a2sin;
        bs=2*s/a2sin/(a+c);
        printf("Высота, медиана, биссектрисса C: %3.3f, %3.3f, %3.3f\n",h,m,bs);
        break; 
     }
     case '2':
         {
             float x1=10*rand()/RAND_MAX-5;
             float x2=10*rand()/RAND_MAX-5;
             float x3=10*rand()/RAND_MAX-5;
             float y1=10*rand()/RAND_MAX-5;
             float y2=10*rand()/RAND_MAX-5;
             float y3=10*rand()/RAND_MAX-5;
             float a=sqrt(pow(x2-x1,2)+pow(y2-y1,2));
             float b=sqrt(pow(x3-x1,2)+pow(y3-y1,2));
             float c=sqrt(pow(x3-x2,2)+pow(y3-y2,2));
             float p=a+b+c;
             printf("Периметр: %3.3f\n",p);
             
         break;
         }
     case 'X':goto end;break;
     default:goto begin;break;
  }
  getc(stdin);
  end:return 0;
}
Осталось только найти площадь не используя формулы Герона и теоремы косинусов, вычислить медианы треугольника
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
10.10.2010, 15:27 17
alemor, введите
a = 0, b = 0, c = -1. Отличный треугольник


Зачем изобретать велосипед, если в той теме, на которую я бросил линк, все есть
0
10.10.2010, 15:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2010, 15:27
Помогаю со студенческими работами здесь

Треугольник
помогите!

Треугольник
имеется класс: Треугольник даны его координаты вершин (координаты точек) выполнить операции: 1)...

Треугольник)
Даны произвольные числа a, b, c. Если нельзя построить треугольник с такими длинами сторон, то...

Треугольник в С++
Добрый день! Я уже обращался к Вам (https://www.cyberforum.ru/cpp-beginners/thread1158188.html) по...


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

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