Вивід чисел від 1 до 1000
Виведьті на екран числа від 1 до 1000 без використання циклів чи умов. Не використовуйте просто printf() чи cout
1000 раз.
Як ви це зробите на С чи С++?
Оригінал:
Print numbers from 1 to 1000 without using any loop or conditional statements. Don't just write the printf() or cout statement 1000 times.
How would you do that using C or C++?
Відповідь в коментарі.
1000 раз.
Як ви це зробите на С чи С++?
Оригінал:
Print numbers from 1 to 1000 without using any loop or conditional statements. Don't just write the printf() or cout statement 1000 times.
How would you do that using C or C++?
Відповідь в коментарі.
- +2
- 16 листопада 2013, 18:56
- kutsyk
Автор має нагороди
На плюсах можна так:
Файл Thousand.h
Файл main.cpp
Файл Thousand.h
#ifndef _THOUSAND_H_
#define _THOUSAND_H_
#include <iostream>
template<int i>
class Thousand
{
public:
Thousand()
{
Thousand<i - 1>();
std::cout << i << std::endl;
}
};
template<>
class Thousand<0>
{
public:
Thousand()
{
}
};
#endif
Файл main.cpp
#include "Thousand.h"
int main()
{
Thousand<1000>();
}
А щоб тільки сішними фічами, можна ще так
#include <iostream>
void print1(int n)
{
std::cout << n + 1 << std::endl;
std::cout << n + 2 << std::endl;
std::cout << n + 3 << std::endl;
std::cout << n + 4 << std::endl;
std::cout << n + 5 << std::endl;
std::cout << n + 6 << std::endl;
std::cout << n + 7 << std::endl;
std::cout << n + 8 << std::endl;
std::cout << n + 9 << std::endl;
std::cout << n + 10 << std::endl;
}
void print10(int n)
{
print1(n + 0);
print1(n + 10);
print1(n + 20);
print1(n + 30);
print1(n + 40);
print1(n + 50);
print1(n + 60);
print1(n + 70);
print1(n + 80);
print1(n + 90);
}
void print100(const int n)
{
print10(n + 0);
print10(n + 100);
print10(n + 200);
print10(n + 300);
print10(n + 400);
print10(n + 500);
print10(n + 600);
print10(n + 700);
print10(n + 800);
print10(n + 900);
}
int main()
{
print100(0);
return 0;
}
Якщо мета виправдовує засоби, і якщо сприймати умову буквально, то в принципі можна висмоктати з пальця щось таке:
#include <iostream>
#include <vector>
#include <exception>
void fillVector(const std::vector<size_t>& v, const size_t i)
{
v.at(i - 1);
std::cout << i << std::endl;
try
{
fillVector(v, i + 1);
}
catch (...)
{
}
}
void printVector(const size_t a, const size_t b)
{
if (a > b)
{
throw std::invalid_argument("Invalid interval");
}
fillVector(std::vector<size_t>(b - a + 1), a);
}
int main()
{
printVector(1, 1000);
return 0;
}
Коментарі (13)
RSS згорнути / розгорнути