Консультация № 180289
12.10.2010, 06:43
65.07 руб.
12.10.2010, 08:06
0 8 2
уважаемые эксперты прошу вас помочь.
Написать процедуру вычисления , где x изменяется от 50 до 100, а y является элементом массива y1,y2, ..., y11. Значения элементов массива вводите с помощью InputBox. Вывод массива выполнить в файл и на экран с помощью MsgBox
За ранее благодарен

Обсуждение

Неизвестный
12.10.2010, 06:46
общий
Написать процедуру вычисления , Zi=(xi-50)-yi где x изменяется от 50 до 100, а y является элементом массива y1,y2, ..., y11. Значения элементов массива вводите с помощью InputBox. Вывод массива выполнить в файл и на экран с помощью MsgBox
давно
Профессионал
848
1596
12.10.2010, 08:29
общий
это ответ
Здравствуйте, Роберт_С !
Код:
Sub MyFunc()
Dim y(11) As Long
Dim x As Integer
Dim i As Integer
Dim z As Long

'заполняем массив Y(i)
For i = 1 To 11
y(i) = CLng(InputBox("Введите значение Y" + CStr(i)))
Next
'открываем файл для печати
Open "c:\result.txt" For Output As #1
'создаем цикл для перебора массива Y(i)
For i = 1 To 11
'цикл для изменения Х
For x = 50 To 100
'вычисление Z при заданных значениях X и Y(i)
z = (x - 50) - y(i)
'печать в файл результата вычислений
Print #1, "Значение Z для Y(" + CStr(i) + ") при x=" + CStr(x) + " равно " + CStr(z)
'вывод на экран результата
MsgBox "Значение Z для Y(" + CStr(i) + ") при x=" + CStr(x) + " равно " + CStr(z)
Next
Next
'закроем файл по окончанию вывода в файл
Close #1
End Sub
давно
Профессионал
848
1596
12.10.2010, 08:37
общий
мне кажется что не совсем корректно условие функции. Я нашел ваше задание
Задание
Может быть в скобках имеется ввиду произведение x и i ?? Т.к. по вашей функции, Zi=(xi-50)-yi, если предположить что xi тоже массив только из 50 элементов со значениями от 50 до 100, то одинакого индеса i c массивом Y(i) не может быть.
Если действительно правильно что в скобках произведение, то исправьте строчку
z = (x - 50) - y(i)
на
z = (x*i - 50) - y(i)
Неизвестный
12.10.2010, 08:56
общий
это ответ
Здравствуйте, Роберт_С !
Если кратко, то вот вариант кода (для Visual Basic 2008):
Код:
Sub main()
'объявляем массивы X, Y, Z
Dim X(11) As Integer
Dim Y(11) As Integer
Dim Z(11) As Integer
'объявляем текстовую запись массива Z и задаем ей пустое значение
Dim massZ As String
massZ = ""

' объявляем параметры InputBox и задаем им значения
Dim message, title, defaultValue As String
Dim myValue As Object
' строка сообщения
message = "Введите значение для Y" & i
' заголовок
title = "Ввод массива Y"
defaultValue = "0" ' значение по-умолчанию - "0"

'создаем цикл для вычисления всех элементов массива
For i = 1 To 11
Randomize() 'функция для использования системного таймера при генерации Xi
X(i) = CInt(Math.Floor((100 - 50 + 1) * Rnd())) + 50 'генерируем случайное значение Xi от 50 до 100


' отображаем InputBox
myValue = InputBox(message, title, defaultValue)
' если нажата кнопка "Отмена", то ставим значение по-умолчанию
If myValue Is "" Then myValue = defaultValue
Y(i) = myValue
Z(i) = X(i) - 50 - Y(i) 'вычисляем Z
massZ = massZ & " " & Z(i) 'записываем полученное Zi в текстовую запись массива Z. в качестве разделителя использован пробел
Next
My.Computer.FileSystem.WriteAllText("C:\massivZ.txt", massZ & vbCrLf, True) 'выводим текстовую запись массива Z в файл, при последующем запуске программы массивы будут дописываться построчно
MsgBox("Массив Z: (" & massZ & ")", MsgBoxStyle.Information, "Массив Z") 'выводим сообщение с содержимым массива Z
End Sub

Аналогичный код для Visual Basic 6.0:
Код:
Sub main()
'объявляем массивы X, Y, Z
Dim X(11) As Integer
Dim Y(11) As Integer
Dim Z(11) As Integer
'объявляем текстовую запись массива Z и задаем ей пустое значение
Dim massZ As String
massZ = ""
'объявляем переменную для номера файла вывода и задаем ей имеющееся в системе свободное значение
Dim FileNum As Integer
FileNum = FreeFile()

' объявляем параметры InputBox и задаем им значения
Dim message, title, defaultValue As String
Dim myValue As String
'строка сообщения
message = "Введите значение для Y" & i
'заголовок
title = "Ввод массива Y"
defaultValue = "0" ' значение по-умолчанию - "0"

'создаем цикл для вычисления всех элементов массива
For i = 1 To 11
Randomize
X(i) = CInt(Round((100 - 50 + 1) * Rnd())) + 50
myValue = InputBox(message, title, defaultValue)
If myValue = "" Then myValue = defaultValue
Y(i) = myValue
Z(i) = X(i) - 50 - Y(i)
massZ = massZ & " " & Z(i)
Next
Open "c:\massivZ.txt" For Output As #FileNum
Write #FileNum, massZ
Close #FileNum
MsgBox "Массив Z: (" & massZ & ")", vbInformation, "Массив Z"
End Sub

Код проверил - работает без проблем. Если потребуется что-то изменить - пишите - исправлю.
Неизвестный
12.10.2010, 09:00
общий
PsySex:
мне вообще показалось по условию, что Хi меняется случайным образом в пределах от 50 до 100
Роберт_С, действительно необходимо уточнить условия задания
давно
Профессионал
848
1596
12.10.2010, 09:30
общий
Vasiliy83:
Может быть, я даже не подумал о таком варианте :-)
Неизвестный
12.10.2010, 20:38
общий
Парни спасибо большое завтра отблагодорю !!!
http://makrose.narod.ru/kontrol1_v2_3.htmне совсем верно но

и вопросик как после вывода окна ошибки сделать чтоб в текстовом поле появлялся курсор
Код:
If a <= 0 Then
MsgBox "не может быть ноль, а так же отрицательным", 16
textbox.BackColor = RGB(0, 128, 64)
ElseIf a > 43200 Then
MsgBox "Не может быть боьше чем 43200", 68
textbox1.BackColor = RGB(200, 250, 0)

давно
Профессионал
848
1596
13.10.2010, 08:22
общий
Роберт_С :
как после вывода окна ошибки сделать чтоб в текстовом поле появлялся курсор

TextBox1.SetFocus
Форма ответа