Страница: 1 |
|
Вопрос: Помогите пожалуйста решить задачу в VBA.. Надежда
|
Добавлено: 15.09.11 16:21
|
|
Автор вопроса: Максим | ICQ: 411726506
|
Оплата услуг Internet осуществляется по трём тарифам: дневному, вечернему и ночному. Ночной тариф определяется временем суток от 0 до 5 часов; дневной от 8 до 18 часов. Тарифы разные, их значения известны. Услугами Internet за сутки воспользовались N клиентов. Время использования, а следовательно вид тарифа и продолжительность пользования каждого клиента известны. Определите среднюю стоимость единицы времени пользования Internet.
Ответить
|
Номер ответа: 1 Автор ответа: Максим
ICQ: 411726506
Вопросов: 1 Ответов: 4
|
Профиль | | #1
|
Добавлено: 15.09.11 19:58
|
так то есть решение но не правильно оформленно и врёт немного
Private Sub Command1_Click()
k = Val(Text1.Text)
s = 0
d = Val(Text2.Text)
v = Val(Text3.Text)
n = Val(Text4.Text)
pn = 0
pp = 0
p1 = 0
For i = 1 To k
tn = InputBox("Введите начальное время", "Ввод данных"
tk = InputBox("Введите конечное время", "Ввод данных"
tn2 = TimeValue(tn)
tk2 = TimeValue(tk)
If "0:0:0" < tn2 And tn2 < "5:0:0" And "08:0:0" < tk2 And tk2 < "18:0:0" Then
pn = DateDiff("s", tn2, "5:0:0" * n / 3600 + 3 * v + 0 * d
pp = DateDiff("s", "8:0:0", tk2) * d / 3600
pn = pn + pp
End If
If "0:0:0" < tn2 And tn2 < "5:0:0" And "18:0:0" < tk2 And tk2 < "24:0:0" Then
pn = DateDiff("s", tn2, "5:0:0" * n / 3600 + 3 * v + 10 * d
pp = DateDiff("s", "18:0:0", tk2) * v / 3600
pn = pn + pp
End If
If "5:0:0" < tn2 And tn2 < "8:0:0" And "18:0:0" < tk2 And tk2 < "24:0:0" Then
pn = DateDiff("s", tn2, "8:0:0" * v / 3600 + 10 * d
pp = DateDiff("s", "18:0:0", tk2) * v / 3600
pn = pn + pp
End If
If "8:0:0" < tn2 And tn2 < "18:0:0" And "18:0:0" < tk2 And tk2 < "24:0:0" Then
pn = DateDiff("s", tn2, "18:0:0" * d / 3600 + DateDiff("s", "18:0:0", tk2) * v / 3600
End If
If "18:0:0" < tn2 And tn2 < "24:0:0" And "18:0:0" < tk2 And tk2 < "24:0:0" Then
pn = DateDiff("s", tn2, tk2) * v / 3600
End If
If "5:0:0" < tn2 And tn2 < "8:0:0" And "08:0:0" < tk2 And tk2 < "18:0:0" Then
pn = DateDiff("s", tn2, "8:0:0" * v / 3600
pp = DateDiff("s", "8:0:0", tk2) * d / 3600
pn = pn + pp
End If
If "08:0:0" < tn2 And tn2 < "18:0:0" And "08:0:0" < tk2 And tk2 < "18:0:0" Then
pn = DateDiff("s", tn2, tk2) * d / 3600
End If
If "0:0:0" < tn2 And tn2 < "5:0:0" And "5:0:0" < tk2 And tk2 < "8:0:0" Then
pn = DateDiff("s", tn2, "5:0:0" * n / 3600
pp = DateDiff("s", "5:0:0", tk2) * v / 3600
pn = pn + pp
End If
If "5:0:0" < tn2 And tn2 < "8:0:0" And "5:0:0" < tk2 And tk2 < "8:0:0" Then
pn = DateDiff("s", tn2, tk2) * v / 3600
End If
If "0:0:0" < tn2 And tn2 < "5:0:0" And "0:0:0" < tk2 And tk2 < "5:0:0" Then
pn = DateDiff("s", tn2, tk2) * n / 3600
End If
p = DateDiff("s", tn2, tk2)
s = s + p
p1 = p1 + pn
Next i
Form1.Print pn
Form1.Print s / 3600
x = p1 / s * 3600
Form1.Print x
End Sub
Ответить
|
Номер ответа: 3 Автор ответа: Максим
ICQ: 411726506
Вопросов: 1 Ответов: 4
|
Профиль | | #3
|
Добавлено: 15.09.11 19:59
|
- Private Sub Command1_Click()
- k = Val(Text1.Text)
- s = 0
- d = Val(Text2.Text)
- v = Val(Text3.Text)
- n = Val(Text4.Text)
- pn = 0
- pp = 0
- p1 = 0
- For i = 1 To k
- tn = InputBox("Введите начальное время", "Ввод данных")
- tk = InputBox("Введите конечное время", "Ввод данных")
- tn2 = TimeValue(tn)
- tk2 = TimeValue(tk)
-
- If "0:0:0" < tn2 And tn2 < "5:0:0" And "08:0:0" < tk2 And tk2 < "18:0:0" Then
- pn = DateDiff("s", tn2, "5:0:0") * n / 3600 + 3 * v + 0 * d
- pp = DateDiff("s", "8:0:0", tk2) * d / 3600
- pn = pn + pp
- End If
-
- If "0:0:0" < tn2 And tn2 < "5:0:0" And "18:0:0" < tk2 And tk2 < "24:0:0" Then
- pn = DateDiff("s", tn2, "5:0:0") * n / 3600 + 3 * v + 10 * d
- pp = DateDiff("s", "18:0:0", tk2) * v / 3600
- pn = pn + pp
- End If
-
- If "5:0:0" < tn2 And tn2 < "8:0:0" And "18:0:0" < tk2 And tk2 < "24:0:0" Then
- pn = DateDiff("s", tn2, "8:0:0") * v / 3600 + 10 * d
- pp = DateDiff("s", "18:0:0", tk2) * v / 3600
- pn = pn + pp
- End If
-
- If "8:0:0" < tn2 And tn2 < "18:0:0" And "18:0:0" < tk2 And tk2 < "24:0:0" Then
- pn = DateDiff("s", tn2, "18:0:0") * d / 3600 + DateDiff("s", "18:0:0", tk2) * v / 3600
- End If
-
- If "18:0:0" < tn2 And tn2 < "24:0:0" And "18:0:0" < tk2 And tk2 < "24:0:0" Then
- pn = DateDiff("s", tn2, tk2) * v / 3600
- End If
-
- If "5:0:0" < tn2 And tn2 < "8:0:0" And "08:0:0" < tk2 And tk2 < "18:0:0" Then
- pn = DateDiff("s", tn2, "8:0:0") * v / 3600
- pp = DateDiff("s", "8:0:0", tk2) * d / 3600
- pn = pn + pp
- End If
-
- If "08:0:0" < tn2 And tn2 < "18:0:0" And "08:0:0" < tk2 And tk2 < "18:0:0" Then
- pn = DateDiff("s", tn2, tk2) * d / 3600
- End If
-
- If "0:0:0" < tn2 And tn2 < "5:0:0" And "5:0:0" < tk2 And tk2 < "8:0:0" Then
- pn = DateDiff("s", tn2, "5:0:0") * n / 3600
- pp = DateDiff("s", "5:0:0", tk2) * v / 3600
- pn = pn + pp
- End If
-
- If "5:0:0" < tn2 And tn2 < "8:0:0" And "5:0:0" < tk2 And tk2 < "8:0:0" Then
- pn = DateDiff("s", tn2, tk2) * v / 3600
- End If
-
- If "0:0:0" < tn2 And tn2 < "5:0:0" And "0:0:0" < tk2 And tk2 < "5:0:0" Then
- pn = DateDiff("s", tn2, tk2) * n / 3600
- End If
-
- p = DateDiff("s", tn2, tk2)
- s = s + p
- p1 = p1 + pn
- Next i
-
- Form1.Print pn
- Form1.Print s / 3600
- x = p1 / s * 3600
- Form1.Print x
-
- End Sub
Ответить
|
Страница: 1 |
Поиск по форуму