Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2010, 18:57   #1
Diplihe
Новичок
Джуниор
 
Регистрация: 27.03.2010
Сообщений: 1
По умолчанию Программа для расчета периметра треугольника в VBA

Помогите написать программу!!!

Задача
Даны стороны двух треугольников. Найти сумму их периметров, определив функцию для расчета периметра треугольника по его сторонам.

Буду вам очень благодарен. Заранее спасибо.

Последний раз редактировалось Diplihe; 27.03.2010 в 20:27.
Diplihe вне форума Ответить с цитированием
Старый 27.03.2010, 19:50   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Насмешил! Имея под рукой интернет...

Периметр p = a + b + c (это же сумма длин сторон!).

Не очень удивлю, сообщив, что для двух треугольников

p1 + p2 = a1 + b1 + c1 + a2 + b2 + c2?!

P/s: спасибо за априорное спасибо!

Последний раз редактировалось Sasha_Smirnov; 27.03.2010 в 20:00. Причина: спасибо.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 27.03.2010, 21:23   #3
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Может треугольники нелинейные?
Хотя и в этом случае периметр считается по той же самой формуле. Мда, а вы про нанотехнологии…
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 27.03.2010 в 21:30.
viter.alex вне форума Ответить с цитированием
Старый 28.03.2010, 00:02   #4
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Код:
Option Base 1 'не обязательный, но удобный выбор: нумерация в массивах с 1'

Sub summaperimetrov()
    a1 = Rnd: b1 = Rnd: c1 = Rnd 'Вместо Rnd можно напечатать СВОИ длины.'
    a2 = Rnd: b2 = Rnd: c2 = Rnd

    p1 = summa(Array(a1, b1, c1))
    p2 = summa(Array(a2, b2, c2))

    MsgBox "p1 = " & p1 & Chr(13) & _
            "p2 = " & p2 & Chr(13) & Chr(13) & _
        "p1 + p2 = " & summa(Array(p1, p2))
End Sub

Function summa(massiv)
Dim S, i
    For i = LBound(massiv) To UBound(massiv) 'перебор всех чисел массива'
    S = S + massiv(i)
    Next
summa = S
End Function
На написание и отладку ушло 22 минуты. Воистину быстрее на микрокалькуляторе!

Последний раз редактировалось Sasha_Smirnov; 28.03.2010 в 21:00. Причина: угадай!
Sasha_Smirnov вне форума Ответить с цитированием
Старый 28.03.2010, 21:00   #5
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Более гуманный вариант

Код:
Sub SummaPerimetrovMnogougolnikov()
Dim a1, b1, c1, a2, b2, c2, p1, p2
    a1 = Rnd: b1 = Rnd: c1 = Rnd
    a2 = Rnd: b2 = Rnd: c2 = Rnd
    'Вместо Rnd можно напечатать СВОИ длины.'
    If IsNumeric(a1) And IsNumeric(b1) And IsNumeric(c1) _
   And IsNumeric(a2) And IsNumeric(b2) And IsNumeric(c2) = False _
    Then MsgBox "Не все введённые данные - числа.", vbInformation: Exit Sub
    
    p1 = summa_N_elementov(a1, b1, c1)
    p2 = summa_N_elementov(a2, b2, c2)

    MsgBox "p1 + p2 = " & summa_N_elementov(p1, p2), vbInformation
End Sub


Function summa_N_elementov(ParamArray dlina())
Dim S, i
    For i = LBound(dlina) To UBound(dlina) 'перебор всех чисел массива'
        If dlina(i) < 0 Then
            MsgBox "Длина < 0. Завершаю работу", vbInformation, "Функция века"
            Exit Function
        End If
    S = S + dlina(i)
    Next
summa_N_elementov = S 'названию функции присвоили вычисленное значение суммы'
End Function
Sasha_Smirnov вне форума Ответить с цитированием
Старый 29.04.2010, 05:21   #6
Kir@
Новичок
Джуниор
 
Регистрация: 29.04.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Sasha_Smirnov Посмотреть сообщение
[CODE]Option Base 1 'не обязательный, но
На написание и отладку ушло 22 минуты. Воистину быстрее на микрокалькуляторе!
Функция определяется из учебника по геометрии для 7 класса )

a1 = {= } - создаем закладку а1
b1 = {= } - создаем закладку b1
c1 = {= } - создаем закладку c1
a2 = {= } - создаем закладку а2
b2 = {= } - создаем закладку b2
c2 = {= } - создаем закладку c2

{eq P = a1 + b1 + c1 + a2 + b2 + c2} = {=a1} + {=b1} + {=c1} + {=a2} + {=b2} + {=c2} = {=a1+b1+c1+a2+b2+c2 \# 0,0} мм

Все в кодах полей EQ.
4 минуты 15 секунд
Когда в ОО появятся поля EQ, тогда я скажу "Прощай, M$!"

Последний раз редактировалось Kir@; 29.04.2010 в 05:24.
Kir@ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Basic. Определить вид треугольника. Елена lip Помощь студентам 2 23.03.2010 16:16
Определить тип треугольника k1r1ch Общие вопросы Delphi 14 16.10.2009 16:27
Программа для расчета радиостанций Foxtrot_1 Помощь студентам 16 02.10.2009 12:38
Определить тип треугольника michailevg Общие вопросы C/C++ 3 15.12.2008 17:29
ассемблер. Написать функцию, вычисляющую по заданным точкам а,b,c площадь треугольника abс. qimbo Помощь студентам 5 05.01.2008 13:54