Создать массив из первых 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>();