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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2010, 19:53   #1
Мариночка=)!
 
Регистрация: 16.05.2010
Сообщений: 7
Радость проблема по решению VISUAL BASIC for Application (VBA)

задание:
1)
Определить площадь, высоту и периметр равностороннего треугольника по заданной его стороне.
2)
Ввести два целых числа a, b. Меньшее из них заменить полусуммой, а большее – удвоенным произведением. Вывести новые значения a, b.
3)
Выяснить, пересекаются ли две прямые, заданные на плоскости уравнениями вида y=kx+b. Если пересекаются, то вывести координаты точки пересечения, иначе вывести сообщение об отсутствии пересечения.

Пример:
«Выбор максимального числа из двух чисел с помощью структурированной программы, состоящей из главной и вспомога-тельной подпрограмм»
Код:
Private Sub Анализ (ByVal x As Integer, 
ByVal  y As Integer, 
ByRef r As Integer)
If x>y Then
r = x
Else
If x<y Then 
r = y
 Else  
 МsgBox “Числа равные”: r = x
End If
End If
End Sub 
Private Sub CmdРешение_ Click ()
Dim a As Integer, b As Integer, 
                 maximum2 As Integer
a = CInt (Text1.Text)
b = CInt (Text2.Text)
очень прошу помогите бедненькой студентке
умоляю :-)

Последний раз редактировалось Stilet; 17.05.2010 в 07:52.
Мариночка=)! вне форума Ответить с цитированием
Старый 16.05.2010, 21:19   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Смотрите, проверяйте...
Код:
Sub TriAngle()
  a = InputBox("Укажите сторону равностороннего треугольника")
  MsgBox "Сторона  = " & a & Chr(10) & _
      "Площадь  = " & a ^ 2 / 2 * Sqr(3) & Chr(10) & _
      "Периметр = " & 3 * a, vbOKOnly, "Равносторонний треугольник:"
End Sub

Sub Digit2()
  a = Val(InputBox("Укажите число а"))
  B = Val(InputBox("Укажите число b"))
  ps = (a + B) / 2
  u2 = a * B * 2
  MsgBox "a = " & a & "   заменено на " & IIf(a < B, ps, u2) & Chr(10) & _
  "b = " & B & "   заменено на " & IIf(a < B, u2, ps)
  If a < B Then a = ps: B = u2 Else a = u2: B = ps
End Sub

Sub Line2()
  k1 = Val(InputBox("Укажите число k1"))
  b1 = Val(InputBox("Укажите число B1"))
  k2 = Val(InputBox("Укажите число k2"))
  b2 = Val(InputBox("Укажите число B2"))
  If k <> k2 Then x = (b2 - b1) / (k1 - k2)
  If k1 <> k2 Then s = Chr(10) & "Точка пересечения:   х = " & x & "  y = " & k1 * x + b1
  MsgBox "Прямые  Y1 = " & k1 & "х " & IIf(b1 > 0, "+", "") & b1 & "  и  " & _
  "  Y2 = " & k2 & "х " & IIf(b2 > 0, "+", "") & b2 & _
  IIf(k1 = k2, " нe ", "") & " - пересекаются." & s
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.05.2010, 22:43   #3
ELE-COM
Пользователь
 
Регистрация: 08.05.2010
Сообщений: 48
По умолчанию

IgorGO, в Sub Line2() много ошибок. И кажется формула оординаты точки пересечения неверна.
ELE-COM вне форума Ответить с цитированием
Старый 16.05.2010, 23:00   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а можно конкретный пример с К1, В1, К2 и В2. Напишите чему ранен Х и У пересечения, и если совсем не в лом, то что выдала Line2.

Спасибо, ошибка есть. вместо
If k <> k2 Then x = (b2 - b1) / (k1 - k2)
следует писать
If k1 <> k2 Then x = (b2 - b1) / (k1 - k2)
И еще, не сочтите за труд - из множества ошибок укажите хотя бы одну.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось Stilet; 17.05.2010 в 07:54.
IgorGO вне форума Ответить с цитированием
Старый 16.05.2010, 23:12   #5
ELE-COM
Пользователь
 
Регистрация: 08.05.2010
Сообщений: 48
По умолчанию

Например:
k1=1
b1=1
k2=1
b2=2
Макрос спотыкается на
If k <> k2 Then x = (b2 - b1) / (k1 - k2)
И сам хотел спросить о "k" без "1"

А формулы для вычисления координат X и Y разные.
ELE-COM вне форума Ответить с цитированием
Старый 16.05.2010, 23:21   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

уже исправлено. см. предыдущий пост. макрос вывалился когда (в2-в1) делил на (к1-к2). Специально для этого случая (когда прямые параллельны) была предусмотрена проверка, но записана с опечаткой, которая выявлена благодаря Вашей бдительности...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.05.2010, 23:43   #7
ELE-COM
Пользователь
 
Регистрация: 08.05.2010
Сообщений: 48
По умолчанию

Да, я вижу, просто опоздал с ответом.
А вот если задать 2 одинаковые прямые, то ответ какой должен быть? Ваша прога выдает нет пересечений. А по логике их должно быть бесконечность.
ELE-COM вне форума Ответить с цитированием
Старый 16.05.2010, 23:56   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
А вот если задать 2 одинаковые прямые
А вот две одинаковые прямые - это одна прямая. А по условию задают две
Цитата:
Выяснить, пересекаются ли две прямые
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 17.05.2010, 07:15   #9
ELE-COM
Пользователь
 
Регистрация: 08.05.2010
Сообщений: 48
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
А вот две одинаковые прямые - это одна прямая. А по условию задают две
По условию 2 прямые, правильно, но если есть возможность ввести одинаковые прямые, то и условие для этого должно быть (не сочтите за занудство, просто на месте препода я бы проверил все варианты расположения двух прямых на плоскости по отношению друг к другу и все варианты ввода данных)
Да, и к "не пересекаются" добавить "паралельны, "
Вот тогда точно никчему не придерешься.
ELE-COM вне форума Ответить с цитированием
Старый 17.05.2010, 10:13   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

У двух прямых на плоскости две субьды либо пересекаются, либо нет. А уже в меру общей образованности каждый может решить, "как же они расположены, если не пересекаются".
Цитата:
к "не пересекаются" добавить "паралельны, "
да как в старом анекдоте:
У родддома мужик кричит в окно:
- Родила?!!!
- Да!
- Мальчик?!!!
- Нет!
- А кто...???
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual C++, Visual C#, Visual basic .Net, или Microsoft.Net Что лучше? _PROGRAMM_ Общие вопросы .NET 14 10.10.2012 19:24
РАЗРАБОТКА ПРОГРАММ НА VISUAL BASIC FOR APPLICATION Zhene4ka2607 Помощь студентам 1 22.05.2009 13:22
РАЗРАБОТКА ПРОГРАММ НА VISUAL BASIC FOR APPLICATION Zhene4ka2607 Microsoft Office Excel 1 21.05.2009 04:44
Проблема с файлом setup на visual basic. irbiss Помощь студентам 5 03.04.2008 15:41