Элемент последовательности называется локальным максимумом, если он строго больше предыдущего и последующего элементов последовательности. Первый и последний элемент последовательности не могут быть локальными максимумами.
Дана непустая последовательность целых чисел, оканчивающаяся нулём. Необходимо найти количество локальных максимумов в этой последовательности. Ноль числом последовательности не считается.
Формат входных данных
Вводится не более чем 2^15 целых чисел, каждое из которых не превосходит по модулю 2^15−1. После последнего числа вводится 0.
Формат выходных данных
Требуется вывести количество локальных максимумов в последовательности.
Примеры
входные данные
1
2
1
2
1
0
выходные данные
2
Другие языки программирования и технологии
Количество локальных максимумов (на языке C++)
#include <iostream>
#include <vector>
using namespace std;
class Sequence {
public:
explicit Sequence(const short terminator = 0) :
terminator_(terminator),
local_max_(0),
count_(0),
buffer_(3)
{ }
bool add(const short value) {
if (box_.size() < buffer_) {
if (value == terminator_) return false;
box_.push_back(value);
} else {
if (box_.at(0) < box_.at(1) && box_.at(1) > box_.at(2)) ++local_max_;
if (value == terminator_) return false;
box_.at(0) = box_.at(1);
box_.at(1) = box_.at(2);
box_.at(2) = value;
}
return ++count_ != limit_;
}
auto local_max()const {
return local_max_;
}
private:
short terminator_;
short local_max_;
short count_;
size_t buffer_;
vector<short> box_;
const short limit_ = numeric_limits<short>::max();
};
int main() {
Sequence seq;
short value;
do cin >> value; while (seq.add(value));
const auto local_max = seq.local_max();
cout << '\n' << local_max << '\n';
system("pause");
}
#include <vector>
using namespace std;
class Sequence {
public:
explicit Sequence(const short terminator = 0) :
terminator_(terminator),
local_max_(0),
count_(0),
buffer_(3)
{ }
bool add(const short value) {
if (box_.size() < buffer_) {
if (value == terminator_) return false;
box_.push_back(value);
} else {
if (box_.at(0) < box_.at(1) && box_.at(1) > box_.at(2)) ++local_max_;
if (value == terminator_) return false;
box_.at(0) = box_.at(1);
box_.at(1) = box_.at(2);
box_.at(2) = value;
}
return ++count_ != limit_;
}
auto local_max()const {
return local_max_;
}
private:
short terminator_;
short local_max_;
short count_;
size_t buffer_;
vector<short> box_;
const short limit_ = numeric_limits<short>::max();
};
int main() {
Sequence seq;
short value;
do cin >> value; while (seq.add(value));
const auto local_max = seq.local_max();
cout << '\n' << local_max << '\n';
system("pause");
}
Руслан Саидов
А как можно написать код для этой задачи, использовав только цикл и IF-ELSE?
#include < iostream >
#include < string >
#include < sstream >
#include < vector >
#include < algorithm >
using namespace std;
void main()
{
setlocale(LC_ALL, "rus");
cout << "Введите последовательность чисел, между коими пробелы ";
string str;
getline(cin, str);
stringstream ss(str);
vector < int > v;
for (; ss;)
{
int t;
ss >> t;
v.push_back(t);
}
v.pop_back();
unsigned sum = 0;
for (unsigned u = 1; u < v.size() - 1; ++u)
{
if (v[u - 1] < v[u] && v[u + 1] < v[u])
++sum;
}
cout << "Количество локальных максимумов в предложенной последовательности " << sum << endl;
cin.get(); cin.get();
}
#include < string >
#include < sstream >
#include < vector >
#include < algorithm >
using namespace std;
void main()
{
setlocale(LC_ALL, "rus");
cout << "Введите последовательность чисел, между коими пробелы ";
string str;
getline(cin, str);
stringstream ss(str);
vector < int > v;
for (; ss;)
{
int t;
ss >> t;
v.push_back(t);
}
v.pop_back();
unsigned sum = 0;
for (unsigned u = 1; u < v.size() - 1; ++u)
{
if (v[u - 1] < v[u] && v[u + 1] < v[u])
++sum;
}
cout << "Количество локальных максимумов в предложенной последовательности " << sum << endl;
cin.get(); cin.get();
}
Похожие вопросы
- Вопрос для тех кто знает точный ответ, язык C про функции все подробности вопроса внутри...
- Вопрос актуальности языка C++, расхождение источников. Мне нужна достоверная инфа на это счет.
- Равны ли по мощности, гибкости языки C# и C++. Равны ли по мощности, гибкости языки C# и C++ или какой то из них мощнее?
- Я так понимаю, что бы создать графический интерфейс, например игру, недостаточно языка c++ ?
- Вопрос по изучению языка C++?
- язык c++
- Программирование! По языку C#!
- Можно ли начинать изучать язык C++,если до этого никогда не программировал?
- Как создать современную 2D игру на языке C#
- Подскажите, пожалуйста. Язык C++