Написание программы, импортирование трех поплавков a, b и c.сортировать по возрастанию - PullRequest
0 голосов
/ 26 сентября 2019
#include <iostream>
using namespace std;

int main()
{
    float a,b,c,maxx,minn;
    cin>>a>>b>>c;
    maxx=a;
    if (b>maxx) (maxx=b);
    if (c>maxx) (maxx=c);
    minn=b;
    if (a<minn) (minn=a);
    if (c<minn) (minn=c);
    cout<<minn<<" "<<maxx ;
}

Я не знаю, как напечатать число от max до min.

1 Ответ

1 голос
/ 26 сентября 2019

Вы должны использовать контейнеры и алгоритмы stl, когда это возможно.Это экономит вам много работы и проблем.Там уже есть функция для вашей проблемы.В вашем описании вы просите сортировку значений.В предоставленном коде вы запрашиваете только минимальное и максимальное значения.Минимальное / максимальное решение будет следующим:

#include <algorithm>
#include <iostream>

int main() {
    std::array<float, 3> a;
    std::cin >> a[0] >> a[1] >> a[2];
    auto [a_min, a_max] = std::minmax({a[0], a[1], a[2]});
    std::cout << "Min: " << a_min << "\nMax: " << a_max << '\n';
    return 0;
}

std::minmax ожидает список значений и возвращает std::pair с минимальными и максимальными значениями.Это не изменит контейнер.auto [a_min, a_max] - это структурированная привязка, в которой первое значение пары хранится в a_min, а второе - в a_max.

. Вот решение проблемы сортировки

#include <algorithm>
#include <iostream>

int main() {
    std::array<float, 3> a;
    std::cin >> a[0] >> a[1] >> a[2];
    std::sort(std::begin(a), std::end(a));
    for (const auto &el : a) {
        std::cout << el << ' ';
    }
    return 0;
}

std::sort ожидает итератор в начало и итератор в конец вашего контейнера.Он отсортирует ваш фактический контейнер и не предоставит отсортированную копию.Основанный на диапазоне цикл for

for (const auto &el : a) {

- это простой способ перебора вашего контейнера.

Также для исправления текущего кода вы можете добавить новую переменную:

#include <iostream>

int main() {
    float a, b, c;
    std::cin >> a >> b >> c;
    float maxx = a;
    if (b > maxx) { maxx = b; }
    if (c > maxx) { maxx = c; }
    float minn = b;
    if (a < minn) { minn = a; }
    if (c < minn) { minn = c; }
    float midd = c;
    if (a > minn && a < maxx) { midd = a; }
    if (b > minn && b < maxx) { midd = b; }
    std::cout << minn << ' ' << midd << ' ' << maxx;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...