Предмет: Информатика,
автор: savelenko1987
.Известны данные о росте 15 юношей класса, упорядоченные по убыванию. Ни одна пара учеников не имеет одинаковый рост. В начале учебного года в класс поступил новый ученик. Какое место в перечне ростов займет рост этого ученика (известно, что его рост не совпадает с ростом ни одного из учеников класса, превышает рост самого низкого ученика и меньше роста самого высокого). Условный оператор не использовать. на языке С++
Ответы
Автор ответа:
0
Ответ: На языке C++ можно использовать цикл для решения данной задачи. Вот пример программы, которая находит место в перечне ростов для нового ученика:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> heights = {160, 165, 167, 170, 172, 175, 178, 180, 182, 185, 187, 190, 192, 195, 198}; // Росты учеников (упорядочены по убыванию)
int newHeight = 188; // Рост нового ученика
// Находим место в перечне ростов для нового ученика
int position = std::lower_bound(heights.begin(), heights.end(), newHeight, std::greater<int>()) - heights.begin() + 1;
// Выводим результат
std::cout << "Рост нового ученика: " << newHeight << " см" << std::endl;
std::cout << "Место в перечне ростов: " << position << std::endl;
return 0;
}
```
В этой программе мы представляем росты учеников в виде вектора `heights`, который упорядочен по убыванию. Затем мы задаем рост нового ученика в переменной `newHeight`.
Далее, с помощью функции `std::lower_bound` и оператора `std::greater`, мы ищем позицию нового роста в векторе `heights`. Функция `std::lower_bound` возвращает итератор на первый элемент, не меньший заданного значения (`newHeight`), при использовании оператора сравнения `std::greater`, который обеспечивает сортировку в порядке убывания. Затем мы вычисляем позицию с помощью операции вычитания и добавляем 1, так как позиции в перечне начинаются с 1, а не с 0.
Наконец, мы выводим рост нового ученика и его место в перечне ростов на экран.
Обратите внимание, что в данном примере используются фиктивные данные для ростов учеников и роста нового ученика. Вы можете изменить значения в векторе `heights` и переменной `newHeight` в соответствии с вашими данными.
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> heights = {160, 165, 167, 170, 172, 175, 178, 180, 182, 185, 187, 190, 192, 195, 198}; // Росты учеников (упорядочены по убыванию)
int newHeight = 188; // Рост нового ученика
// Находим место в перечне ростов для нового ученика
int position = std::lower_bound(heights.begin(), heights.end(), newHeight, std::greater<int>()) - heights.begin() + 1;
// Выводим результат
std::cout << "Рост нового ученика: " << newHeight << " см" << std::endl;
std::cout << "Место в перечне ростов: " << position << std::endl;
return 0;
}
```
В этой программе мы представляем росты учеников в виде вектора `heights`, который упорядочен по убыванию. Затем мы задаем рост нового ученика в переменной `newHeight`.
Далее, с помощью функции `std::lower_bound` и оператора `std::greater`, мы ищем позицию нового роста в векторе `heights`. Функция `std::lower_bound` возвращает итератор на первый элемент, не меньший заданного значения (`newHeight`), при использовании оператора сравнения `std::greater`, который обеспечивает сортировку в порядке убывания. Затем мы вычисляем позицию с помощью операции вычитания и добавляем 1, так как позиции в перечне начинаются с 1, а не с 0.
Наконец, мы выводим рост нового ученика и его место в перечне ростов на экран.
Обратите внимание, что в данном примере используются фиктивные данные для ростов учеников и роста нового ученика. Вы можете изменить значения в векторе `heights` и переменной `newHeight` в соответствии с вашими данными.
Похожие вопросы
Предмет: Математика,
автор: mmm266852
Предмет: Математика,
автор: hui100
Предмет: Химия,
автор: levlevcenko930
Предмет: Русский язык,
автор: Аноним
Предмет: Геометрия,
автор: LarceRR