Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- constexpr int TOWER_HEIGHT_MIN = 1;
- constexpr int TOWER_HEIGHT_MAX = 1000;
- constexpr int TOWER_X_MIN = 1;
- constexpr int TOWER_X_MAX = 1000;
- int main()
- {
- int* towers = new int[TOWER_X_MAX + 1];
- int n, i;
- bool isInCorrect;
- isInCorrect = true;
- while (isInCorrect)
- {
- cout << "Количество башен (число должно быть от " << TOWER_X_MIN << " и до " << TOWER_X_MAX << "): ";
- cin >> n;
- if (cin.fail())
- {
- cout << "Введите число, а не строку или что-то иное!\n";
- cin.clear();
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- }
- else if (n < TOWER_X_MIN || n > TOWER_X_MAX)
- cout << "Значение должно находится в границах от " << TOWER_X_MIN << " до " << TOWER_X_MAX << "!\n";
- else
- isInCorrect = false;
- }
- isInCorrect = true;
- while (isInCorrect)
- {
- cout << "Высота башни в (0, 0) (число должно быть от " << TOWER_HEIGHT_MIN << " и до " << TOWER_HEIGHT_MAX << "): ";
- cin >> towers[0];
- if (cin.fail())
- {
- cout << "Введите число, а не строку или что-то иное!\n";
- cin.clear();
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- }
- else if (towers[0] < TOWER_HEIGHT_MIN || towers[0] > TOWER_HEIGHT_MAX)
- cout << "Значение должно находится в границах от " << TOWER_HEIGHT_MIN << " до " << TOWER_HEIGHT_MAX << "!\n";
- else
- isInCorrect = false;
- }
- for (i = 0; i < n; i++)
- {
- isInCorrect = true;
- int curr;
- curr = 0;
- while (isInCorrect)
- {
- cout << "Координата X башни #" << i + 1 << " (число должно быть от " << TOWER_X_MIN << " и до " << TOWER_X_MAX << "): ";
- cin >> curr;
- if (cin.fail())
- {
- cout << "Введите число, а не строку или что-то иное!\n";
- cin.clear();
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- }
- else if (curr < TOWER_X_MIN || curr > TOWER_X_MAX)
- cout << "Значение должно находится в границах от " << TOWER_X_MIN << " до " << TOWER_X_MAX << "!\n";
- else if (towers[curr] > 0)
- cout << "Башня уже стоит на этой координате!\n";
- else
- isInCorrect = false;
- }
- isInCorrect = true;
- while (isInCorrect)
- {
- cout << "Высота башни #" << i + 1 << " (число должно быть от " << TOWER_HEIGHT_MIN << " и до " << TOWER_HEIGHT_MAX << "): ";
- cin >> towers[curr];
- if (cin.fail())
- {
- cout << "Введите число, а не строку или что-то иное!\n";
- cin.clear();
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- }
- else if (towers[curr] < TOWER_HEIGHT_MIN || towers[curr] > TOWER_HEIGHT_MAX)
- cout << "Значение должно находится в границах от " << TOWER_HEIGHT_MIN << " до " << TOWER_HEIGHT_MAX << "!\n";
- else
- isInCorrect = false;
- }
- }
- int visibleTowers;
- visibleTowers = 0;
- for (i = 1; i < TOWER_X_MAX + 1; i++) {
- if (towers[i] > 0)
- visibleTowers += 1;
- if (towers[i] + 1 > towers[0])
- i = TOWER_X_MAX + 1;
- }
- cout << "\nС башни (0, 0) будет видно башен: " << visibleTowers;
- delete[] towers;
- }
Advertisement
Add Comment
Please, Sign In to add comment