0

Напишите функцию printNumbers(), которая принимает два целочисленных значения: num – конечное число cols – количество колонок и выводит числа от 0 до num в следующем порядке printNumbers(12, 3)

0 4 8
1 5 9
2 6 10
3 7 11

вывод желательно через console.log

UPD: Пробовал пока примитивно вывести в одну строку 0 4 8 , а как вывести их таким образом пока не додумался

var num = 5;
var n1 = 0;
var res = 0;

console.log(n1)

for (i=0; i<=3; i++){
    res = res + n1 +(num-1);
    console.log(res);
}
1
  • 3
    А что пытались сделать вы?
    – RubaXa
    1 авг 2014 в 7:30

2 ответа 2

2

Наверно есть более изящный способ:

/**
 * Вывод чисел в колонках
 * @param   {Number}  max    от 0 до max
 * @param   {Number}  cols   количество колонок
 * @returns {String}
 */
var printNumbers = function (max, cols) {
    var result = [],
        rows = Math.ceil(max/cols),
        r, c, num
    ;

    for (r = 0; r < rows; r++) {
        row = [];
        for (c = 0; c < cols; c++) {
            num = r + (c * rows);
            if (num < max) {
                row.push(num); 
            }
        }

        result.push(row.join(' '));
    }

    return result.join('\n');
};

console.log(printNumbers(12, 3));
2
  • Понимаете я только изучаю js и посидев 5 мин я мозг уже поломал, можно ли это реализовать без методов и свойств объектов,массивов,обьектов, через функцию разумеется. Примитивный и насколько это возможно универсальный код. Разумеется не настаиваю.
    – msim
    1 авг 2014 в 8:06
  • Это код можно очень легко переделать, заменив работу с массивами, на строки и т.п. но тут уж лучше вам самому разобраться, код и так простой. Попробуйте его снабдить комментариями, прямо каждую строку, что не известно читайте на javascript.ru . В конце концов у вас сложится вся картина.
    – RubaXa
    1 авг 2014 в 8:10
0

Решение через строки

"use strict";

var printNumbers = function (max, cols) {

// Считаем кол-во строк
let stringsCount = Math.ceil(max / cols);
console.log(`Строк  ${stringsCount}`);

let result = '';

// Выводит строку
for (let i = 0; i < stringsCount; i++) {

    let line = ''; // Каждая строка
    let step = i;

    // Ограничивает кол-во значений в строке
    for (let g = 1; g <= cols; g++) {
        if (step < max) {
            line = line + step + ' ';
            step = step + stringsCount;
        }
    }

    result += line + '\n';
    // console.log(line);

}

return result;

};


console.log(printNumbers(11, 3));

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.