Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите чайнику! Не знаю как решить задачки по программированию!  (Прочитано 11553 раз)
0 Пользователей и 1 Гость смотрят эту тему.
margo78
Гость
« : 21-09-2006 08:09 » new

29.   Пусть даны три числа. Если они могут быть длинами сторон треугольника, определите его вид (разносторонний, равнобедренный, равносторонний). Вычислите длины его высот и напечатайте их в порядке убывания.
30.   Пусть даны три числа. Если они могут быть длинами сторон треугольника, определите его вид (прямоугольный, тупоугольный, остроугольный). Вычислите длины его высот и напечатайте их в порядке убывания.
 А черт его знает...
Записан
Alf
Гость
« Ответ #1 : 21-09-2006 08:22 » 

30 - следует сначала проверить, могут ли числа быть сторонами треугольника. Для этого достаточно проверить, что все числа положительны, а также выполнение условия:


|a-b| < c < a+b

Если условие выполняется, такой треугольник построить можно. Тогда остается выяснить его вид.

Выберем наибольшую сторону. Допустим, это сторона c. По теореме Пифагора для прямоугольного треугольника имеем:

a2 + b2 = c2, или

a2 + b2 - c2 = 0

Если равенство выполняется, наш треугольник является прямоугольным. Если значение выражения меньше нуля, треугольник тупоугольный, если больше - остроугольный.

Конечно, для действительных чисел лучше избегать строгого сравнения с нулем, оставить некоторый небольшой диапазон в районе нуля.
« Последнее редактирование: 21-09-2006 08:23 от Alf » Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 21-09-2006 08:39 » 

высоту вычислять будем? Жаль
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Paul
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 21-09-2006 11:14 » 

высоту вычислять будем? Жаль
По теореме косинусов находим угол:
cos(a)=(C*C-A*A-B*B)/(2*A*B)
потом находим sin(a)=sqrt(1-cos(a)*cos(a);
Одна равна sin(a)*A,
вторая sin(a)*B.

Третью найди сам.
Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 21-09-2006 12:09 » 

а без синусов.косинусов слабо?
Ha=2/A(sqrt(p*(p-A)*(p-B)*(p-C))
Hb=2/B(sqrt(p*(p-A)*(p-B)*(p-C))
Hc=2/С(sqrt(p*(p-A)*(p-B)*(p-C))
где
p - полупериметр

зы математика 7 класс
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
margo78
Гость
« Ответ #5 : 22-09-2006 03:05 » 

огромное спасибо
попробую справиться

Записан
Catherine
Гость
« Ответ #6 : 09-11-2006 17:16 » 

Мне нужно написат макрос к задаче следующего содержания: в документе Word задана таблица. в кторой есть, например, 5 слов. Нужно вручную подкрасить, например, 2 слова в другой цвет. при запуске макроса должно появиться сообщение, что 2 слова подкрашены. я написала прогу, но почему-то комп ругается на неё. Сначала посчитала количество слов в таблице, а вот как сделать вторую чать проги не понимаю, т.е. я её написала, но что-то компу не нравится. Заранее спасибо.Вот прога:
Dim Slova(100) As String
    For i = 1 To 100
        Slova(i) = ""
    Next
   
    Set myRange = Selection.Range

        nword = myRange.Words.Count
        If Asc(Right(myRange, 1)) = 13 Then
            nword = nword - 1
        End If
        kol_zn = 0
        For i = 1 To nword
            tek_slovo = Trim(myRange.Words(i))
            If tek_slovo <> "" Then
                If (Asc(tek_slovo) < 58) And ((Asc(tek_slovo) > 47)) Or ((Asc(tek_slovo) < 91)) And (Asc(tek_slovo) > 64) Or ((Asc(tek_slovo) < 123)) And (Asc(tek_slovo) > 96) Or (Asc(tek_slovo) > 187) Then
                Else
                    kol_zn = kol_zn + 1
                End If
            Else
                kol_zn = kol_zn + 1
            End If
        Next
        nword = nword - kol_zn
         MsgBox (nword)
        sch = 0
        For i = 1 To nword
   
           
            ActiveDocument.Words(i).Select
           If Selection.Words(i).HighlightColorIndex <> wdBlack Then

   
   
            'tek_slovo = Trim(myRange.Words(i))
            'If tek_slovo.HighlightColorIndex <> wdBlack Then
                sch = sch + 1
            End If
        Next
        If sch = 0 Then
            z = "Выделенных слов нет"
            MsgBox (z)
        Else
            MsgBox (sch)
        End If

    End Sub
« Последнее редактирование: 16-12-2007 17:40 от Алексей1153++ » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines