|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.12.2010, 10:34 | #1 |
Пользователь
Регистрация: 06.12.2010
Сообщений: 26
|
VBA Excel
Определить количество инверсий в одномерном массиве X[1..20] (т.е. таких пар элементов, в которых большее число находится слева от меньшего: X[I] > X[J] при I < J).
а)Создаю массив Dim x() As Integer Dim N As Integer Private Sub CB_1_Click() Dim A, B, i As Integer N = Val(TB_N.Value) ReDim x(1 To N) As Integer A = -20 B = 30 Randomize For i = 1 To N x(i) = Int((B - A) * Rnd + A) Next i For i = 1 To N Cells(i, 1) = x(i) Next i End Sub Далее сама функция Private Sub CB_2_Click() S=0 For I=1 To N If I<I+1 and x(I) > X(I+1) Then S=S+1 Next I End Sub Выдает ошибку в строке If I<I+1 and x(I) > X(I+1) И не получается сделать что бы выводило в окошко результат (TB_K) |
25.12.2010, 10:40 | #2 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Или вы думаете, что если 4 меньше, чем 5, - то это не навсегда, и лишний раз проверить не помешает? |
|
25.12.2010, 10:44 | #3 |
Пользователь
Регистрация: 06.12.2010
Сообщений: 26
|
не судите строго, могу и бред написать ибо не работал в ВБА никогда. Наработки есть, код есть но чего то не хватает
Последний раз редактировалось Bombastick; 25.12.2010 в 11:23. |
25.12.2010, 11:42 | #4 | |
Старожил
Регистрация: 15.05.2008
Сообщений: 2,058
|
Цитата:
Запишите так Код:
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499 |
|
25.12.2010, 12:06 | #5 |
Пользователь
Регистрация: 06.12.2010
Сообщений: 26
|
все равно ошибка. даю файл гляньте
|
25.12.2010, 12:29 | #6 | |
Старожил
Регистрация: 15.05.2008
Сообщений: 2,058
|
как писалось выше
Цитата:
исходя из логики i все равно будет меньше чем i+1 как и x(i) никогда не будет больше чем x(i + 1) хотя..может я и неправ
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499 |
|
25.12.2010, 12:33 | #7 |
Форумчанин
Регистрация: 25.04.2010
Сообщений: 616
|
Может, так?
Код:
|
25.12.2010, 12:53 | #8 |
Пользователь
Регистрация: 06.12.2010
Сообщений: 26
|
дааа
Private Sub CB_2_Click() Dim i As Integer, s As Integer For i = 1 To N - 1 If x(i) > x(i + 1) Then s = s + 1 Next i Me.TB_K.Text = s End Sub сработало находит, до земли поклон |
25.12.2010, 13:19 | #9 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Прочитайте ещё раз условие: Цитата:
"слева" - не значит, что рядом. К примеру, если X[5] > X[16], то такой случай тоже надо учитывать. А в вашем решении это не учитывается. Вас выручат вложенные циклы. |
||
25.12.2010, 13:30 | #10 |
Пользователь
Регистрация: 06.12.2010
Сообщений: 26
|
Честно говоря я уже не знаю что делать с этим, а как учесть X[5] > X[16] такое?
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
VBA Excel | .::pk::. | Помощь студентам | 2 | 14.05.2016 09:54 |
VBA Word,VBA Excel решить 2 задачи | fafolo4ka | Фриланс | 6 | 05.03.2012 01:15 |
Как запретить запуск программы на VBA Excel 2003 в Excel 2007 | kovalevskivf | Microsoft Office Excel | 2 | 15.05.2009 16:47 |
VBA Excel | Олька я | Помощь студентам | 0 | 09.05.2009 01:24 |
VBA i Excel | corsarlt | Microsoft Office Excel | 3 | 03.04.2008 06:13 |