Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
3 / 3 / 3
Регистрация: 24.01.2014
Сообщений: 123

Вывод таблицы через вложенные циклы

27.05.2014, 19:41. Показов 1465. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Подскажите пожалуйста правильно вывести таблицу в 5 колонок и 3 строки. Никак не могу разобраться с вложенными циклами.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.05.2014, 19:41
Ответы с готовыми решениями:

Вывести числа в виде таблицы. Вложенные циклы
Задание: вывести на экран числа в виде следующей таблицы: 3 0 2 3 9 0 2 2 3 8 9 0 2 2 2 3 7 8 9 0 2 2 2 2 3

Вложенные циклы. Вывод чисел
Помогите) вывести матрицу : 1) 66666 7777 888 99 10 2)

Вложенные циклы. Напечатать числа в виде следующей таблицы
Напечатать числа в виде следующей таблицы 5 5 5 5 5 6 6 6 6 7 7 7 8 8 9

17
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,551
27.05.2014, 21:26
dendead, каким образом вы формируете таблицу? Родная таблица в общепринятом понимании во флеше отсутствует.
0
3 / 3 / 3
Регистрация: 24.01.2014
Сообщений: 123
27.05.2014, 21:35  [ТС]
Принцип в том, чтобы вывести картинки в столбцы и строки. Получаю с сервера массив с ссылками на картинки и во флэше через loader добавляю их в список отображения. Нужно перебрать массив и вывести его элементы в соответствии с условием (5 колонок и 3 столбца).
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,551
27.05.2014, 21:45
dendead, если нет необходимости определять размер ячеек для автоматического подгона их размера соответственно размеру изображений, то в этом нет ничего сложного. Покажите, как реализовать пытаетесь?
0
3 / 3 / 3
Регистрация: 24.01.2014
Сообщений: 123
27.05.2014, 22:24  [ТС]
Вот так загружаю создаю объект для отображения по ссылке из массива:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
for (var i:int = 0; i < linksArray.length; i++) {
    var slot:Object = getChildByName("clip" + i);
                
    var loader:Loader = new Loader( );      
    loader.x = i + 1 * 3;
    loader.y = 5;
    inventoryClipsArray[i] = loader; 
    slot.addChild(loader);      
                        
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
    loader.load(new URLRequest(linksArray[i])); 
}
Единственное решение, которое пришло в голову это менять координаты лоадеров в зависимости от значения i через условие if. Но это что-то из ряда вон... Читал про вложенные циклы, но так и не понял как их использовать в моём случае.
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,551
27.05.2014, 22:39
Лучший ответ Сообщение было отмечено dendead как решение

Решение

dendead, ваш код должен вызывать ошибку, т.к. по нему у объекта slot не должно быть метода addChild. Что это за объект такой?
Вот пример:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
var loader:Loader;
            for (var i:int = 0; i < 5; i++) 
            {
                for (var j:int = 0; j < 4; j++) 
                {
                    loader = new Loader();
                    loader.load(new URLRequest("link.png"));
                    loader.x = i * 50;
                    loader.y = j * 40;
                    _container.addChild(loader);
                }
            }
1
3 / 3 / 3
Регистрация: 24.01.2014
Сообщений: 123
27.05.2014, 22:57  [ТС]
В объект slot добавляю ранее созданный мувклип:
ActionScript 3
1
2
3
4
5
6
7
for (var i:int = 0; i < 5; i++) {
    var clip:INV = new INV( );
    clip.x = i * 60 + 470;
    clip.y = 500;
    clip.name = "clip" + i;     
    addChild(clip);
}
Добавлено через 13 минут
Цитата Сообщение от TanaTiX Посмотреть сообщение
Вот пример:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
var loader:Loader;
for (var i:int = 0; i < 5; i++) 
 {
 for (var j:int = 0; j < 4; j++) 
 {
loader = new Loader();
 loader.load(new URLRequest("link.png"));
 loader.x = i * 50;
 loader.y = j * 40;
 _container.addChild(loader);
 }
 }
В этом случае, если выбирать из массива ссылок значение так: shopImages[i], перебор доходит до 5-ой ссылки, а затем по-новой на следующей строке. Если в массиве больше, чем 5 значений, они не отобразятся. В итоге получается по 5 одинаковых картинок в каждой строке и 4 строки. Требуется же чтобы после 5-ой ссылки в массиве, оставшиеся картинки отображались на следующей строке.
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
27.05.2014, 23:10
В этом случае, если выбирать из массива ссылок значение так
Это беспредел!
Немного дополнил пример приведенный выше -
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package 
{
    import flash.display.DisplayObject;
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.geom.Point;
    
    
    public class List extends Sprite 
    {
        private static const NUM_IMAGES:uint = 15;
        private static const NUM_ROWS:uint = 5;
        private static const NUM_COLUMNS:uint = 3;
        private static const HORIZONTAL_GAP:uint = 5;
        private static const VERTICAL_GAP:uint = 5;
        
        public function List() 
        {
            var array:Array = [];
            var image:DisplayObject;
            var i:int;
            
            for (i = 0; i < NUM_IMAGES; i++) 
            {
                image = this.createRect(50, 50, 0x000000);
                array[i] = image;
                super.addChild(image);
            }
            
            var IMAGE_WIDTH:int = 50;
            var IMAGE_HEIGHT:int = 50;
            
            var start:Point = new Point(10, 10);
            
            var horizontalStep:int = IMAGE_WIDTH + HORIZONTAL_GAP;
            var verticalStep:int = IMAGE_HEIGHT + VERTICAL_GAP;
            
            var item:DisplayObject;
            
            var count:int;
            
            for (var j:int = 0; j < NUM_COLUMNS; j++) 
            {
                for (var k:int = 0; k < NUM_ROWS; k++) 
                {
                    item = array[count++];
                    item.x = horizontalStep * k + start.x;
                    item.y = verticalStep * j + start.y;
                }
            }
        }
        
        private function createRect(w:Number, h:Number, color:uint):Shape
        {
            var rect:Shape = new Shape();
            rect.graphics.beginFill(color);
            rect.graphics.drawRect(0, 0, w, h);
            rect.graphics.endFill();
            
            return rect;
        }
    }
 
}
1
 Аватар для Rized
1 / 1 / 0
Регистрация: 23.05.2014
Сообщений: 15
27.05.2014, 23:16
Уважаемый TanaTiX что-то немного намудрил с циклами. 5 колонок и 3 строки это получается так:
ActionScript 3
1
2
3
4
5
for(var string:int = 0; string < 3; string++){
    for (var column:int = 0; column < 5; column++){
        //Здесь мог быть ваш код 
    }
}
dendead, параметры циклов можно использовать для создания отступов между картинками.
0
3 / 3 / 3
Регистрация: 24.01.2014
Сообщений: 123
27.05.2014, 23:18  [ТС]
В общем-то сделал так:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
var counter:int = 0;
for (var i:int = 0; i < 4; i++) {
    for (var j:int = 0; j < 5; j++) {
        var loader:Loader = new Loader( );
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
        loader.load(new URLRequest(shopImages[counter]));
        loader.x = j * 50;
        loader.y = i * 40;
        addChild(loader);
        counter++;
    }
}
0
 Аватар для Rized
1 / 1 / 0
Регистрация: 23.05.2014
Сообщений: 15
27.05.2014, 23:33
В итоге получается по 5 одинаковых картинок в каждой строке и 4 строки
А потому что при достижении во вложенном цикле максимального значения параметра (в моем примере - column) и выполнении кода в блоке, значение параметра внешнего цикла увеличивается, а внутреннего - уменьшается до минимального значения. Т.е. вложенные циклы работают так: string = 0, column = 0 {выполняется код}; string = 0, column = 1 {снова выполняется код}; ...(тут ещё несколько ходов цикла); string = 0, column = 4 ( < 5 - макс. значение по условию) {выполняется код}; string = 1, column = 0 {выполняется код}; string = 1, column = 2 {выполняется код}...и т.д.
Соответственно, вам нужно всего лишь завести переменную (=0 изначально), которую вы будете инкрементировать в каждом ходе цикла и тем самым узнаете сколько картинок уже обработано, и уже на этой основе можно запрашивать следующую картинку, используя значение этой переменной.
UPD: а, пока печатал, вы уже сами догадались, молодец
0
3 / 3 / 3
Регистрация: 24.01.2014
Сообщений: 123
27.05.2014, 23:44  [ТС]
Вывел в трейс значения i и j, и вуаля!
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,551
28.05.2014, 00:06
Цитата Сообщение от Rized Посмотреть сообщение
Уважаемый TanaTiX что-то немного намудрил с циклами. 5 колонок и 3 строки это получается так:
Количество колонок и строк были выбраны случайно как пример.
Цитата Сообщение от bus Посмотреть сообщение
count++
Если нужно увеличить значение после, то и "++" пишем после некоего действия, если перед, то, соответственно, перед.
Попробуйте передать в метод значения
ActionScript 3
1
count++
и
ActionScript 3
1
++count
Посмотрите, какие значения попадут в метод.
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
28.05.2014, 00:42
Цитата Сообщение от TanaTiX Посмотреть сообщение
Посмотрите, какие значения попадут в метод.
Разницу я знаю, но сказал из-за того, что ТС только в одном месте обращается к массиву и куда более приятнее видеть array[count++] нежели array[count]; count++..
0
3 / 3 / 3
Регистрация: 24.01.2014
Сообщений: 123
28.05.2014, 00:43  [ТС]
Цитата Сообщение от bus Посмотреть сообщение
только в одном месте обращается к массиву
А в итоге всё равно получилось несколько обращений и пришлось переносить count в конец цикла.
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
28.05.2014, 01:58
Цитата Сообщение от dendead Посмотреть сообщение
А в итоге всё равно получилось несколько обращений и пришлось переносить count в конец цикла.
Представьте, что Вам нужно купить в магазине две буханки хлеба. Вы идете и покупаете одну, относите ее домой и идете за второй.. Вот так же и с массивами. Зачем два раза обращаться к одному элементу, сохраните его в локальное свойство и используйте.
ActionScript 3
1
2
3
4
5
6
7
8
9
for (var j:int = 0; j < NUM_COLUMNS; j++) 
            {
                for (var k:int = 0; k < NUM_ROWS; k++) 
                {
                    item = array[count++];
                    item.x = horizontalStep * k + start.x;
                    item.y = verticalStep * j + start.y;
                }
            }
0
3 / 3 / 3
Регистрация: 24.01.2014
Сообщений: 123
26.06.2014, 03:50  [ТС]
Возник ещё один вопрос по выводу таблицы с клипами через циклы. Никак не могу понять как вывести таблицу такого вида:
123101112
456131415
789161718

Пришло в голову написать два цикла подряд:

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (var i:int = 0; i < 3; i++) {
    for (var j:int = 0; j < 3; j++) {
         var clip:Clip = new Clip( );
         clip.x = j * 74 + 52;
         clip.y = i * 80 + 95;
         addChild(clip);
    }
}
for (var z:int = 0; z < 3; z++) {
    for (var c:int = 3; c < 6; j++) {
         var clip2:Clip = new Clip( );
         clip2.x = z * 74 + 52;
         clip2.y = c * 80 + 95;
         addChild(clip2);
    }
}
Который час бьюсь, но в упор не могу найти способ проще. Подскажите пожалуйста как можно тут поступить?
0
3 / 3 / 3
Регистрация: 24.01.2014
Сообщений: 123
27.06.2014, 14:11  [ТС]
Решил задачу создав ещё один внешний цикл и рассчитав смещение клипов по x относительно этого цикла. Получилось подобие групп по 9 клипов в каждой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.06.2014, 14:11
Помогаю со студенческими работами здесь

Вычислить через вложенные циклы do
Здравствуйте. Задача звучит так: вычислить \sum_{i=0}^{N}\sum_{j=0}^{M}i+j с помощью вложенных циклов do N=50, M=15. Предоставил бы...

Вложенные циклы, вывод строк пирамидкой
Как написать программу слудующего вида при помощи вложенных циклов? A ABA ABCBA &gt;&gt;&gt; результат должен быть...

Вложенные циклы: вывод треугольников из символов
С помощью вложенных циклов вывести в консоль: + ++ +++ + ++ +++ ++++ + ++

Посчитать форпулу через вложенные циклы
всем привет, очень нужна помощь, вот задание к контрольной работе, я в с++ вообще не разбираюсь) может у кого то уже есь готовая работа...

Вычисление функции через вложенные циклы for
Составить программу вычисления функции: Z=√(x^3/y), где y=ln |tg(x/2)| + m^2, где x изменяется в интервале: -1&lt;=X&lt;=2,5; h(шаг)=0,5; m...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru