XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
inhuman89

offline
Опыт: 3,019
Активность:
ошибка в цикле
set i=1
set ii=0
set s=ы
loop
     set ii=i
     loop
          set fs[i]=fs[i]+s
          call BJDebugMsg(fs[1])
          call BJDebugMsg(fs[2])
          call BJDebugMsg(fs[3])
          set ii=ii-1
          exitwhen ii==0
     endloop
     set i=i+1
     exitwhen i>100
endloop
вобщем помогите найти ошибку.
для начала я бы хотел спросить допустимо ли использовать циклы в циклах? просто по другому я не понял пока как сделать.
ошибка заключается в следующем:
в дебаг мсж выводит:
fs[1] = ы
fs[2] = ы вместо ожидаемого ыы
fs[3] = ыы вместо ожидаемого ыыы
fs[4] = ыы вместо ожидаемого ыыыы и так далее
никак не могу понять в чем дело, помогите разобраться
inhuman89 добавил:
неужели никто не знает?
Старый 30.08.2010, 16:31
Doc

offline
Опыт: 63,163
Активность:
допустимо ли использовать циклы в циклах
да
неужели никто не знает?
хз, код непонятный.
Старый 30.08.2010, 16:44
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
поставь ii вместо равной 0 поставь равной 1
Старый 30.08.2010, 16:51
inhuman89

offline
Опыт: 3,019
Активность:
set i=1// индекс цикла 1
set ii=0// счтчик добавляемых s
set s="ы"// строка
loop
     set ii=i// сдесь я заношу в счетчик(ii) количество символов s в текущем fs[i]
     loop
          set fs[i]=fs[i]+s// добавляю s ii раз
          set ii=ii-1// 1 добавили, отнимает от счетчика
          exitwhen ii==0
     endloop
     set i=i+1// переходим к fs[2], где количество s должно быть равно i, добавляем в следующем ходе цикла
     exitwhen i>100
endloop
// итог должен быть таким:
//fs[i] должен иметь столько s, каков индекс массива

// короче говоря мне нужно чтобы цикл в массив строк fs забил строку"s" в fs[1]=1s, в fs[2]=2s и тд
вот попробовал обьяснить чего мне нужно..

Отредактировано inhuman89, 30.08.2010 в 17:02.
Старый 30.08.2010, 16:55
agentex

offline
Опыт: 34,834
Активность:
короче говоря мне нужно чтобы цикл в массив строк fs забил строку"s" в fs[1]=1s, в fs[2]=2s и тд
set i=1
set s="ы"
loop
  set fs[i]=fs[i-1]+s
set i=i+1
exitwhen i>100
endloop
Старый 30.08.2010, 17:09
inhuman89

offline
Опыт: 3,019
Активность:
// даже так:
string s = "ы"
string ss = ""
set i=1
    loop
        set ss = ss+s
        set fs[i] = ss
        set i=i+1
        exitwhen i>100
    endloop
// всервно получается так:
//fs[1] = ы
//fs[2] = ы вместо ожидаемого ыы
//fs[3] = ыы вместо ожидаемого ыыы
//fs[4] = ыы вместо ожидаемого ыыыы и так далее
inhuman89 добавил:
agentex, ага и получится так:
fs[1] = ы
fs[2] = ы
fs[3] = ы
и тд
Старый 30.08.2010, 17:12
agentex

offline
Опыт: 34,834
Активность:
придумываете какието лишние переменные, вложенные циклы.. зачем?
agentex, ага и получится так:
мб проверишь для начала?
agentex добавил:
специально для тебя проверил. вот код
local integer i = 1
local string s = "ы"
local string array fs
loop
  set fs[i]=fs[i-1]+s
  call BJDebugMsg("fs["+I2S(i)+"]= "+fs[i])
set i = i + 1
exitwhen i>10
endloop
вот результат.
Миниатюры
Кликните на картинку для увеличения
Название:  s.jpg
Просмотров: 48
Размер:  66.7 Кбайт  
Старый 30.08.2010, 17:18
inhuman89

offline
Опыт: 3,019
Активность:
agentex, Да, моя ошибка нашлась, прошу прощения и спасибо за помощь!
inhuman89 добавил:
блин я случайно мсдж удалил =(
Старый 30.08.2010, 17:21
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 16:58.