Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - VBS | Динамические массивы, циклы и присваивание

Ответить
Настройки темы
VBS/WSH/JS - VBS | Динамические массивы, циклы и присваивание

Ветеран


Сообщения: 1404
Благодарности: 135

Профиль | Отправить PM | Цитировать


VBS

Есть динамический массив.
Его необходимо заполнить числами с помощью Inputbox.
Размер массива предварительно неизвестен.
Нужно отследить, когда не будет ничего введено, чтобы выйти из цикла.

Возникающие вопросы:
1. Как правильно написать условие выхода из цикла?
2. Как засунуть присваивание в шапку операторов цикла vbs - For или Do While?
3. Почему при вводе с данным условием val оказывается Empty всегда?
dim array(), min,i
i=0
Do While ( ( ( val=Inputbox("Введите a("&i&")") ) <> empty) <> True) '(Not(IsEmpty(val=Inputbox("Введите a("&i&")"))))
MsgBox ("val:"&val&vbcrlf&"type: "&typename(val))
Redim Preserve array(i+1)
array(i)=eval(val)
i=i+1
Loop

VBS - отстой.

Отправлено: 09:55, 12-10-2006

 

Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
dim array(), bAgain, i
i = 0
bAgain = true
Do 
  val = Inputbox("Введите a("&i&")")
  if val = Empty or val = Null or val = "" or IsNumeric(val) = false then
    bAgain = false
  else
    MsgBox ("val:" & val & vbcrlf & "type: " & typename(val))
    Redim Preserve array(i+1)
    array(i)=eval(val)
    i=i+1
  end if
Loop While ( bAgain )
Можно так, хотя можно и оптимизировать (либо наоборот, усложнить: делать проверку на мусорный код с повторным вводом)

Отправлено: 00:05, 13-10-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1404
Благодарности: 135

Профиль | Отправить PM | Цитировать


hasherfrog
Спасибо

-------
Ehhh.. what's up, doc?..


Отправлено: 09:35, 13-10-2006 | #3


Ветеран


Сообщения: 1404
Благодарности: 135

Профиль | Отправить PM | Цитировать


С:

Код: Выделить весь код
k=5;
for (i=0;i<k;i++){
if (i==2)
k=10;
cout << i <<"\n";
}
VBS:

Код: Выделить весь код
k=5
For i=1 To k
if i=2 then k=10 
msgbox i
Next
в VBS ущербная конструкция цикла For. Автора языка за такое издевательство над for следовало бы линчевать

-------
Ehhh.. what's up, doc?..


Отправлено: 18:45, 21-10-2006 | #4


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Ну зато много других циклов :] Да не, нормальный язык, просто привычки требует. А про то, что нельзя менять переменную, на которую завязан цикл, это и в обычном бейсике _с_самого_начала_ было, не только в vbS (дело же в этом? я правильно понял?).

Отправлено: 23:57, 21-10-2006 | #5


Ветеран


Сообщения: 1404
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата:
А про то, что нельзя менять переменную, на которую завязан цикл, это и в обычном бейсике _с_самого_начала_ было, не только в vbS (дело же в этом? я правильно понял?).
Обычный бейсик я плохо знаю. Это плохо, что нельзя изменять переменную на которую завязан цикл. Кроме этого условия вроде бы нельзя вставить. Если будет стоять выбор между VBS и JS, я предпочту JS, хотя бы потому что там цикл for нормальный, а не обрезанный по самые гланды

Взять допустим сортировку Шелла
Код: Выделить весь код
void shellsort(int v[], int n)
   {
       int gap, i, j, temp;

       for (gap = n/2; gap > 0; gap /= 2)
           for (i = gap; i < n; i++)
               for (j=i-gap; j>=0 && v[j]>v[j+gap]; j-=gap) {
                   temp = v[j];								 
                   v[j] = v[j+gap];
                   v[j+gap] = temp;
               }
   }
я не знаю, как это можно переписать на VBS используя только for.

-------
Ehhh.. what's up, doc?..


Отправлено: 14:12, 22-10-2006 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - VBS | Динамические массивы, циклы и присваивание

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Помогите редактировать Autorun_Disable.vbs на Autorun_Enable.vbs nod201 Скриптовые языки администрирования Windows 0 05-12-2009 05:44
вирус и червь VBS/Small.k,VBS/Small.NAB zelen Лечение систем от вредоносных программ 1 25-12-2008 10:44
C/C++ - Динамическое выделение памяти с помощью new и присваивание указателей mrcnn Программирование и базы данных 1 29-07-2008 17:00
Динамические двумерные массивы Nealles Программирование и базы данных 3 05-09-2003 21:59
C++ и массивы ? IG Программирование и базы данных 9 09-06-2003 09:33




 
Переход