Создать массив из первых 100 чисел, кратных 3 и выводить все содержимое на экран, не написав программу

Вопрос как вывести строку, не написав программу в main уже был, и на него много ответов. А вот мой вопрос: Как создать массив ряда чисел (например указанные в заголовке вопроса) и вывести все содержимое без программы в main?


Ответы (3 шт):

Автор решения: Harry

Да точно так же.

Например,

int b[100];

struct A
{
    A(){ for(int i = 0; i < 100; ++i) cout << (b[i] = i*3) << " "; }
} a;

int main()
{
}
→ Ссылка
Автор решения: n1tr0xs

Вот так можно, например:

#include <iostream>

int* create_arr(int n){
    int* arr = new int[n];
    for(int i=0, idx=0; idx<n; ++i)
        if(!(i%3))
            arr[idx++] = i;
    return arr;
}

int print_arr(int* arr, int n){
    for(int i=0; i<n; ++i)
        std::cout << arr[i] << ' ';
    return 0;
}

int N = 100;
int* my_arr = create_arr(N);
int k = print_arr(my_arr, N);

int main(){
}
→ Ссылка
Автор решения: AR Hovsepyan

Такой еще вариант написал:

template < size_t count, size_t start, size_t stride, size_t...elements>
struct Size_array {
    static constexpr auto& array =
    Size_array<count - 1, start, stride, count*stride + start, elements...>::array;
    friend std::ostream& operator<<(std::ostream& out, const  Size_array& seq)
    {
        for (size_t i = 0; i < std::size(seq.array); ++i) {
            if (i % 15 == 0)
                out << '\n';
            out << seq.array[i] << ' ';
        }
        return out;
    }

};
template <size_t start, size_t stride, size_t...elements>
struct Size_array<0, start, stride, elements...> {
    static constexpr long long array[] = { start, elements... };
};
std::ostream& out = std::cout << Size_array<100, 3, 3>();
→ Ссылка