Какие числа могут быть сторонами треугольника
А если они не равны нулю, то даже если каждая будет равна 1, они все равно смогут быть сторонами треугольника. Только если отрицательными, тут вопрос.
Я знаю только теорему о том, что сумма углов треуг. должна быть 180 градусов. А насчет длин сторон не слышал.
Регистрация: 29.09.2009
Сообщений: 9,742
в первом приближении навскидку могу сказать, что самая длинная сторона вероятного треугольника не может быть длинее суммы двух остальных сторон.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
3 отрезка могут быть сторонами треугольника, если каждый из них меньше суммарной длины 2 остальных. Если есть 3 числа — наверно, надо еще проверить, являются ли они «отрезками». Тоесть, положительная ли у них длина. Вот и все.
Регистрация: 29.09.2009
Сообщений: 9,742
во втором приближении могу сказать, что первое приближение — есть условие необходимое и достаточное по модулю. разве, что мы не будем работать с нуль-пространством шутка
. если серъезно, то в декартовой системе x,y могут быть отрицательными, но это не значит, что там треугольник нельзя построить — так что берем все величины по модулю (см. выше).
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
Форумчанин
Регистрация: 13.12.2009
Сообщений: 272
Автор, классически считается, что программисты очень умные люди, а тут незначие элементарщины из геометрии, стыдно!
По теме : Когда-то давно тоже давали такую задачу, только там еще нужно было проверить, является ли этот треугольник (условие со сторонами выполнено) отсроугольным. решается с помощью теоремы пифагора!
Если я помог вам — порадуйте меня, нажмите на весы слева
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
есть еще вариант. проверить, что точки не принадлежат одной прямой.
по координатам любюх двух точек можно найти коэфф-ты в уравнении
y = kx + b
потом взять координаты третей точки и подставить в уравнение. если равенство выполняется, значит они лежат на одной прямой. значит треугольник построить нельзя.
Форумчанин
Регистрация: 18.08.2009
Сообщений: 289
| Автор, классически считается, что программисты очень умные люди, а тут незначие элементарщины из геометрии, стыдно! |
Ну да, геометрию надо вспоминать, согласен =)
Регистрация: 06.08.2009
Сообщений: 2,992
Есть вариант — проинтегрировать координаты точек сторон, и если общий результат (т. е. площадь) получится положительным — значит есть треугольник.
А если серьёзно, то должен уточнить raxp-а (и согласиться с LeBron-ом): каждая сторона должна быть строго короче суммы других.
| Похожие темы | ||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Соединить в локальную сеть без коммутатора Win 7 и XP. Какие могут быть проблемы? | Stilet | Windows | 7 | 05.02.2010 17:31 |
| Какие проблемы могут быть с цифровой удостоверением? | ann200 | Microsoft Office Access | 2 | 07.10.2009 17:52 |
| Быть или не быть? Вот в чем вопрос! | VadEr | Свободное общение | 8 | 23.09.2009 16:16 |
| определите, сколько троек может быть использовано для построения треугольника | баста | Помощь студентам | 3 | 17.02.2009 20:34 |
Задача 9. Числа a, b, c тогда только тогда являются сторонами треугольника , когда существуют такие положительные числа x, y, z, что
Лабораторная работа № ПР3 «Программирование циклов с параметром» Цель работы: научиться использовать оператор VBA «Цикл с параметром» и вычислять с его помощью сумму и произведение. Теоретические сведения Программирование цикла с параметром Определение . Цикл — представляет собой многократно повторяющуюся последовательность операторов. Операторы повторяются конечное число раз до выполнения условия. Циклы со счетчиком используют в тех случаях, когда необходимо выполнить некоторые действия заранее определенное число раз. Циклы со счетчиком (с известным числом повторений) еще называют циклами For, или циклами For … Next. Синтаксис цикла For … Next таков: For Счетчик = Начало To Конец [Step Шаг ] Операторы [Exit For] [Операторы] Next [Счетчик] , где For – зарезервированное слово VBA, обозначающее начало цикла; Счетчик – переменная, определенная в качестве счетчика цикла, при первом выполнении циклв принимает значение Начало и каждый раз при выполнении оператора Next увеличивается на величину, заданную параметром Шаг; To – зарезервированное слово VBA, разделяющее значения Начало и Конец; Step – зарезервированное слово VBA, используемое для задания шага цикла, необязательный аргумент; Шаг – число, задающее значение, на которое увеличивается (или уменьшается) значение счетчика на каждом шаге, это число может быть отрицательным; Exit For – оператор экстренного выхода из цикла (необязательный), обычно вкладывается в оператор If…Then или Select… Case ; Next – зарезервированное слово VBA, обозначающее конец цикла. Если зарезервированное слово Step отсутствует, то значение шага равен единице.
Задача 10 (цикл с параметром). Составить программу вычисления
| суммы и произведения числовой последовательности. å n b i | и Õ n | b i , |
| i = a | i = a | |
| b i = sin ( 2 i + 0.4 ) |
Решение Этап 1. Математическая часть Дано: начало a и конец n суммирования и произведения. Найти: Sum, Pr. (!) Самостоятельно разработать алгоритм на естественном языке и составить блок-схему. Этап 2. Ввод данных в таблицу Excel В ячейку А1 вводится значение числа a , в ячейку B1 вводится значение числа n , в ячейку C1 вводится значение шага h для цикла. Этап 3. Определение переменных Вводятся: a, n, h (тип Single) . Промежуточные переменные: (счетчик цикла) i (тип Integer) , ( b i ) b (тип Single) . Выводятся (результат): Sum, Pr (тип Single). Этап 4. Написание процедуры На рабочем листе Лист1 при помощи Элементов управления создать элемент Кнопка ( СommandBatton1 ). Навести курсор мыши на Кнопку в режиме конструктора (на панели Элементы управления нажата первая кнопка (линейка с треугольником)). Вызвать контекстное меню ПКМ Выбрать пункт Свойства → закладку Alpabetic , в списке свойств выбрать Caption , справа в поле ввода удалить старое название и ввести новое название кнопки Сумма и Произведение . Навести курсор на Кнопку в режиме конструктора. Вызвать контекстное меню ПКМ. Выбрать пункт Исходный текст . Автоматически попадаем в режим редактора VBA и появляется заголовок Процедуры-События: Набирать процедуру на месте курсора: Private Sub CommandButton1_Click() Dim a, n, h, i As Integer Dim Sum, Pr, b As Single ‘Ввод данных a = Range(«A1»).Value n = Range(«B1»).Value h = Range(«C1»).Value ‘Вычисления Sum = 0 Pr = 1 For i = a To n Step h b = Sin(2 * i + 0.4) Sum = Sum + b Pr = Pr * b Next i ’Вывод результатов в ячейки B4 и B5
Range(«B4»).Value = «Сумма p13 ft126″>Range(«B5»).Value = «Произведение p113 ft126″>End Sub
| Этап 5. Выполнение | |||
| Перейти | на | рабочий | лист |
( View → Microsoft Excel или Alt+F11 ). Выйти из режима Конструктора , левой клавишей мыши (ЛКМ) нажать Кнопку . В ячейке В4 появится результат «Максимальное число = 10». Этап 6. Переименование листа Навести курсор на закладку Лист1 , правой клавишей мыши (ПКМ) вызвать контекстное меню, выбрать пункт Переименовать , удалить старое название листа и с клавиатуры набрать новое Сумма_Произведение , нажать Enter. Лабораторная работа № ПР4 «Программирование циклов с условием» Цель работы: научиться использовать оператор VBA «Цикл с условием». Теоретические сведения Программирование цикла с условием Циклы с условием применяются тогда, когда число повторений неизвестно, а некоторые действия в программе должны повторяться до тех пор, пока выполняется определенное условие или до тех пор, пока не будет выполнено определенное условие. Условием может быть любым выражением, принимающим значение True (Истина) или False (Ложь). В VBA есть два основных цикла с условием — цикл Do While . Loop и цикл Do Until . Loop . Оба они могут быть с предусловием или с постусловием. Циклы Do While | Until имеют следующий синтаксис: Цикл с предусловием: Do While | Until < Условие >Операторы [Exit Do] Loop Цикл с постусловием: Do Операторы [Exit Do] Loop While | Until < Условие >,
где Do — зарезервированное слово VBA, указывающее на начало цикла; While| Until — зарезервированные слова VBA, если используется While -> цикл выполняется, если < Условие >принимает значение True и заканчивает свою работу, если < Условие >принимает значение False . Если используется Until -> цикл выполняется, если < Условие >= False и заканчивает свою работу, если < Условие >= True ; <Условие>— логическое выражение, принимающее значение True или False ; Loop — зарезервированное слово VBA, указывающее на окончание цикла. Цикл с предусловием и Цикл с постусловием отличаются тем, что Цикл с постусловием выполняется хотя бы один раз до проверки <Условие>, а Цикл с предусловием может не выполняться ни разу, если не выполняется <Условие>. Используя цикл с условием, можно организовать бесконечный цикл. Иногда это бывает необходимо, гораздо чаще это происходит из-за ошибки пользователя. Для создания бесконечного цикла условное выражение должно быть таким, которое никогда не выполняется или выполняется всегда. Выйти из такого бесконечного цикла и прервать работу программы можно, нажав комбинацию клавиш . Вызов процедуры Выполнить процедуру типа Sub , у которой аргументы есть, можно только вызвав её из другой процедуры. Таким образом, при написании собственной процедуры вы можете воспользоваться процедурами (и макросами), написанными другими пользователями. В свою очередь ваша процедура может быть использована в других приложениях. Если процедура имеет аргументы, то она будет требовать эти аргументы при выполнении своей работы. Вызывается процедура с помощью оператора Call , вслед за которым должно следовать имя процедуры и список её параметров в скобках. Вместо входных параметров могут стоять их значения. Допускается и бесскобочная запись оператора вызова (при этом ключевое слово Call – имя оператора – не используется). Лабораторная работа № ПР5 «Работа с рекуррентными формулами» Цель работы: Получить устойчивые навыки работы с операторами VBA «Цикл с условием». Задача 11 (цикл с условием). Для заданного ε найти наименьшее n такое, что 2 n /n!< ε . Вывести все члены последовательности от 1-го до n -го. Решение Этап 1. Математическая часть Дано: Eps – точность. Условие остановки выражение: 2 n /n!< ε. Найти: n – число шагов, u – результат возведения в степень . Мы можем запрограммировать возведение в степень и вычисление факториала, u = 1 'первый множитель n = 0 'количество шаговУсловие>
Range(«C1:E20»).Clear Do Until (u < Eps) Or (n >= Limit) n = n + 1 q = 1 For i = 1 To n q = q * i Next i u = 2 ^ n / q ‘очередной множитель Cells(n, 4).Value = n Cells(n, 5).Value = u Loop но при таких вычислениях может быстро накапливаться ошибка и мы можем получить не верный результат. Обратим внимание, что u 1 =2 \1 /1! , u 2 =2 \2 /2!=2*2/(1*2)= u 1 *2 1 /2 , u 3 =2 \3 /3!=2 2 *2/(1*2*3)= и 2 *2/3 и т.д , т.е . у нас возникает множитель 2/n , умноженный на значение предыдущего шага. Нам необходимо учесть, что число шагов может быть невообразимо много, поэтому мы введет константу для ограничения шагов Limit = 100. (!) Самостоятельно разработать алгоритм на естественном языке и составить блок-схему. Этап 2. Ввод данных в таблицу Excel В ячейку А1 вводится “Eps =” , В ячейку B1 – значение числа Eps. Этап 3. Определение переменных Константа Limit = 100 (тип Integer) Вводятся: Eps (тип Single) . Промежуточные переменные: (счетчик цикла) u1 (тип Single) – значение на предыдущем шаге . Выводятся (результат): u (тип Single) – результат возведения в степень, n (тип Integ) – количество шагов. Этап 4. Написание процедуры На рабочем листе Лист1 при помощи Элементов управления создать элемент Кнопка ( СommandBatton1 ). Навести курсор мыши на Кнопку в режиме конструктора (на панели Элементы управления нажата первая кнопка (линейка с треугольником)). Вызвать контекстное меню ПКМ Выбрать пункт Свойства → закладку Alpabetic , в списке свойств выбрать Caption , справа в поле ввода удалить старое название и ввести новое название кнопки 2n/n < Eps . Навести курсор на Кнопку в режиме конструктора. Вызвать контекстное меню ПКМ. Выбрать пункт Исходный текст . Автоматически попадаем в режим редактора VBA и появляется заголовок Процедуры-События : Private Sub CommandButton1_Click()
Степень_двух End Sub Для создания новой процедуры (функции) необходимо набрать выполнить команду меню редактора VBA: Insert(Вставка)\Procedure(Процедура) → в
| открывшемся | диалоговом | окне | рис.3 |
| Add Procedure (Вставка процедуры) | → | установить | |
| переключатель | Sub(Подпрограмма) | → | В окне |
Name(Имя) → ”Степень_двух” → OK . После выполнения этих действий в окне модуля появится заготовка подпрограммы (функции) (заголовок и окончание), между которыми нужно поместить код тела подпрограммы (функции). Рис.3. Окно Вставка процедуры Набирать процедуру на месте курсора: Public Sub Степень_двух() ‘Описание констант Const Limit As Integer = 100 ‘Описание переменных Dim Eps As Single Dim u As Single Dim u1 As Single Dim n As Integer ‘Ввод переменных Eps = Range(«b1»).Value ‘Задание начальных значений u = 1 ‘первый множитель n = 0 ‘количество шагов Range(«C1:E20»).Clear ‘Вычисление значений Do Until (u < Eps) Or (n >= Limit) Cells(n, 4).Value = n u1 = u u = u1 * 2 / n ‘очередной множитель n = n + 1 Cells(n — 1, 5).Value = u Loop ‘Вывод результатов Range(«A6:A7»).Clear If n >= Limit Then Range(«A7″).Value = n & » шагов не хватило для достижния точночти.»

End If End Sub Этап 5. Выполнение Перейти на рабочий лист ( View → Microsoft Excel или Alt+F11 ). Выйти из режима Конструктора , левой клавишей мыши (ЛКМ) нажать Кнопку . В ячейках D1:E6 появится результат. Этап 6. Переименование листа Навести курсор на закладку Лист1 , правой клавишей мыши (ПКМ) вызвать контекстное меню, выбрать пункт Переименовать , удалить старое название листа и с клавиатуры набрать новое Eps2 , нажать Enter. Задачи для самостоятельной работы Задача 12. Текущее среднее . Числа x 1 , x 2 , … последовательно поступают с устройства ввода. Все числа хранить в памяти нет необходимости; после ввода каждого числа нужно вычислить и напечатать среднее значение всех введенных чисел: s n = 1 å n x k . n k = 1 Задача 13. Для заданных a и p вычислить x = p a по рекуррентному соотношению Ньютона:
| x n + 1 | = | 1 | é | ( p — 1 ) x n + | a | ù |
| ê | ú | |||||
| x n p − 1 | = a . | |||||
| p ë | û ; | x 0 | ||||
Сколько итераций надо выполнить для достижения заданной погрешности e , используя условие: x n + 1 — x n £ ε ?
| Задача 14. | Проверить численно справедливость следующего разложения: | ||||||
| e x = 1 + | x | + | x 2 | + + | x n | + и оценить скорость сходимости, найдя число | |
| 1! | 2! | n ! | |||||
слагаемых, необходимое для достижения заданной погрешности e . Примечение. Нам необходимо учесть, что число, возведенное в степень 0, равно 1, т.е. 2 0 =1, и факториал 0!=1.
могут ли следующие отрезки быть сторонами треугольника? 1)4,1см ;4,1см ;4,1см 2)3дм;4дм;7дм; 3)8,3м;9,6м;18; 4)8см;6см;7см.
2) 7 дм=3 дм + 4 дм — нет. Сторона должна быть меньше суммы 2-х других.
3) 18 м>(8,3+9,6) м — нет.

Пошаговое объяснение:
теорема: сумма двух любых сторон треугольника больше третьей стороны.
1)4,1см ;4,1см ;4,1см — может быть (4,1см+4,1см>4,1см)
2)3дм;4дм;7дм; — не может быть (3дм+4дм=7дм)
3)8,3м;9,6м;18м — не может быть (8,3м+9,6м<18м)
4)8см;6см;7см. – может быть (6см+7см>8см; 6см+8см>7см; 7см+8см>6см)
Определить возможность существования треугольника по сторонам
Вводятся длины трех сторон предполагаемого треугольника. Определить, может ли существовать треугольник с такими сторонами при условии что, треугольник существует только тогда, когда ни одна его сторона не превышает сумму двух других.
Примеры выполнения программы
Длины сторон: 5 7 3 Треугольник существует.
Длины сторон: 10 5 3 Треугольник не существует.
Требуется сравнить длину каждого отрезка-стороны с суммой двух других. Если хотя бы в одном случае отрезок окажется больше суммы двух других, то треугольника с такими сторонами не существует.
Ниже приведены решения задачи на языке программирования Паскаль двумя способами. В первом случае все стороны проверяются в одном операторе if ; во втором случае каждая сторона проверяется отдельно, а программа содержит вложенные операторы if-else .
var a, b, c: integer; begin write('Длины сторон: '); readln(a, b, c); if (a < b+c) and (b < a+c) and (c < a+b) then writeln('Треугольник существует.') else writeln('Треугольник не существует.'); end.
В условии if проверяется, что каждая из сторон меньше суммы других. Если хотя бы одна будет больше, то все логическое выражение вернет ложь ( false ). В таком случае сработает ветка else .
В программе ниже существование треугольника проверяется поэтапно.
- Если первое условие возвращает ложь, то поток выполнения программы переходит к ветке else , которая соответствует внешнему if (находится в самом конце).
- Если первое условие соблюдено, то поток выполнения программы оказывается у вложенного if . Здесь проверяется уже второе условие.
- Если оно возвращает ложь, то программа переходит к предпоследнему else .
- Если и второе логическое выражение возвращает истину ( true ), то программа идет к третьему условию. При его соблюдении выполняется тело самого вложенного оператора if . При его несоблюдении сработает самое вложенное else .
Данный способ решения задачи позволяет определить, какая именно сторона превысила или равна сумме двух других.
var a, b, c: integer; begin write('A: '); readln(a); write('B: '); readln(b); write('C: '); readln(c); if a < b + c then if b < a + c then if c < a + b then writeln ('Треугольник существует.') else writeln ('Треугольника нет. Сторона C слишком большая.') else writeln ('Треугольника нет. Сторона B слишком большая.') else writeln ('Треугольника нет. Сторона A слишком большая.'); end.
Примеры выполнения программы:
A: 4 B: 5 C: 6 Треугольник существует.
A: 10 B: 5 C: 4 Треугольника нет. Сторона A слишком большая.
A: 3 B: 3 C: 7 Треугольника нет. Сторона C слишком большая.
A: 6 B: 12 C: 4 Треугольника нет. Сторона B слишком большая.
Примечание. В обоих вариантах решения задачи мы не учитываем случай вырожденного треугольника, когда сторона может быть равна сумме двух других. Чтобы учитывать такие треугольники оператор сравнения "меньше" надо поменять на "меньше или равно" (