Консультация № 160085
10.02.2009, 12:42
0.00 руб.
0 3 1
Помогите пожалуйста написать программу к задаче по VBA в Excel:
Написать программу в которой вводится натуральное число n, а затем последовательность из n чисел; определяется, есть ли в последовательности отрицательные числа, и выдается соответствующий ответ.

Обсуждение

давно
Модератор
137394
1850
10.02.2009, 20:02
общий
это ответ
Здравствуйте, Грязнева Ольга Михайловна! Ответ в приложении.


Приложение:
Dim N_El As Integer

Do While True

TheTitle = "Ввод количества элементов последовательности" ' Заголовок окна ввода
ThePrompt = "Введите количество элементов ( >0)" ' Приглашение в окне ввода
TheReply = InputBox(ThePrompt, TheTitle) ' Вызываем окно ввода данных
L = TheReply = "" 'True если нажали Cancel или не ввели данные
If L Then Exit Do 'если нажали Cancel покидаем цикл, а затем программу
N_El = Val(TheReply)
L = N_El <= 0 'True если число элементов <=0
If L Then Exit Do 'если число элементов <=0 покидаем цикл, а затем программу

ReDim InMass(N_El - 1)

For i = 1 To N_El
TheTitle = "Ввод " & CStr(N_El) & " элементов последовательности"
ThePrompt = "Введите элемент № " & CStr(i)
TheReply = InputBox(ThePrompt, TheTitle) ' Вызываем окно ввода данных
L = TheReply = "" 'True если нажали Cancel или не ввели данное
If L Then Exit For 'если нажали Cancel покидаем цикл, а затем программу
InMass(i - 1) = Val(TheReply)
Next

If L Then Exit Do 'если нажали Cancel покидаем цикл, а затем программу

Negativ = 0 ' подсчитаем число отриц элементов

All_In = "В введённой последовательности " & CStr(N_El) + " чисел" & vbCrLf

For i = 1 To N_El
If InMass(i - 1) < 0 Then Negativ = Negativ + 1
All_In = All_In + CStr(InMass(i - 1)) + " " ' Формируем сообщениё для вывода
Next

All_In = All_In & vbCrLf & "Содержится " & CStr(Negativ) & " отрицательных чисел"
i = MsgBox(All_In, vbOKCancel, "Результат анализа последовательности")
If i = 2 Then Exit Do

Loop
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Неизвестный
11.02.2009, 15:11
общий
Нужно чтоб последовательность выводилась в ячейки Excel спомощью Cell
давно
Модератор
137394
1850
11.02.2009, 21:46
общий
Для этого в предыдущий макрос добавил 4 строки. Всё, что Вы введёте и что получится запишется в таблицу. Вы умолчали, в каком виде выводить данные, надо ли делать какие-либо надписи.
Код:
Dim N_El As Integer

Do While True

TheTitle = "Ввод количества элементов последовательности" ' Заголовок окна ввода
ThePrompt = "Введите количество элементов ( >0)" ' Приглашение в окне ввода
TheReply = InputBox(ThePrompt, TheTitle) ' Вызываем окно ввода данных
L = TheReply = "" 'True если нажали Cancel или не ввели данные
If L Then Exit Do 'если нажали Cancel покидаем цикл, а затем программу
N_El = Val(TheReply)
L = N_El <= 0 'True если число элементов <=0
If L Then Exit Do 'если число элементов <=0 покидаем цикл, а затем программу

ReDim InMass(N_El - 1)

Columns("A:C").ClearContents ' Очищаем колонки A:C
Cells(1, 1) = N_El ' Заносим в A1 число элементов

For i = 1 To N_El
TheTitle = "Ввод " & CStr(N_El) & " элементов последовательности"
ThePrompt = "Введите элемент № " & CStr(i)
TheReply = InputBox(ThePrompt, TheTitle) ' Вызываем окно ввода данных
L = TheReply = "" 'True если нажали Cancel или не ввели данное
If L Then Exit For 'если нажали Cancel покидаем цикл, а затем программу
InMass(i - 1) = Val(TheReply)

Cells(i, 2) = InMass(i - 1) ' Заносим в столбец B последовательность

Next

If L Then Exit Do 'если нажали Cancel покидаем цикл, а затем программу

Negativ = 0 ' подсчитаем число отриц элементов

All_In = "В введённой последовательности " & CStr(N_El) + " чисел" & vbCrLf

For i = 1 To N_El
If InMass(i - 1) < 0 Then Negativ = Negativ + 1
All_In = All_In + CStr(InMass(i - 1)) + " " ' Формируем сообщениё для вывода
Next

Cells(1, 3) = " Число отрицательных чисел = " + CStr(Negativ)

All_In = All_In & vbCrLf & "Содержится " & CStr(Negativ) & " отрицательных чисел"
i = MsgBox(All_In, vbOKCancel, "Результат анализа последовательности")
If i = 2 Then Exit Do

Loop
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Форма ответа