- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
#include <iostream>
#include <vector>
#include <string>
int main()
{
int n = 6;
std::vector<int> vec;
for (int i = 0; i < n; i++)
{
if ((i % 2) == 0)
{
std::reverse(vec.begin(), vec.end());
}
vec.push_back(i);
if ((i % 2) != 0)
{
std::reverse(vec.begin(), vec.end());
}
for (int j = 0; j < vec.size(); j++)
{
std::cout << vec[j] + 1;
if (j != vec.size() - 1)
{
std::cout << "-";
}
}
std::cout << "\n";
}
}
√-1
1) Нахрена тебе <string> здесь?
2) Почитай про функции и разбей свой код, чтобы он не был одной портянкой. Хотя бы функцию печати выдели.
3) Кручу-верчу, запутать хочу. Если не прослеживать выполнение кода, непонятно нахрена тут два разворота вектора. Ну и операция эта недешёва.
4) Почитай про итераторы, и адаптеры итераторов (хотя сейчас лучше сразу читать про рейнджи), конкретно про reverse_iterator.
5) По поводу вывода: привыкай работать итераторами или рейнджами и range-based-for, а не индексами. Каконично также выводить разделитель перед каждым элементом, кроме первого, а не после каждого, кроме последнего.
Учить программировать на С++ новичка это как учить арифметике в школе посредством mathcad
В цикле смотри чётность итерации: в зависимости от этого делай цикл от 1 до i, либо от i до 1 и распечатывай.
Ну и строки-разделители можно на символы заменить.
https://ideone.com/l9MzVg
Но тернарный оператор без форматирования выглядит противно.
EDIT: перевёл на «С»
https://godbolt.org/z/TbMs7YbEr
прелесть какая ))
чисто шоб сишник не понял