C++ Вопрос Задание из книги

Учусь писать читы =)
Начинающий
Статус
Оффлайн
Регистрация
16 Ноя 2020
Сообщения
25
Реакции[?]
10
Поинты[?]
0
По советам Югейма начал изучать книжку "Программирование. Принципы и практика с использованием C++". (noad)
Встретил задание.
"Напишите программу. предлагающую пользователю ввести три целых числа, а затем выводит их в порядке возрастания, разделяя запятыми. Например, если пользователь вводит числа 10 4 6. то программа должна вывести на экран числа 4, 6, 10. Если два числа совпадают. то они должны идти одно за другим. Например. если пользователь вводит числа 4 5 4, то программа должна вывести на экран 4, 4, 5."
Не могу выполнить, хотя вроде всё правильно написал.


C++:
#include "std_lib_facilities.h"
int main() {
    setlocale(LC_ALL, "Russian");
    int val1, val2, val3;
    int first, second;
    first = -99;
    second = -100;
    bool firstalready = false;
    bool secondalready = false;
    bool thirdalready = false;
    cout << "Введите первое число: ";
    cin >> val1;
    cout << "\nВведите второе число: ";
    cin >> val2;
    cout << "\nВведите третье число: ";
    cin >> val3;
    cout << "\n";
    if (val1 <= val2 && val1 <= val3) { // проверяем значение меньшее ли оно
        
        first = val1; // запоминаем это число
        firstalready = true; // Включаем boolean переменную, этим самым мы показываем что мы нашли первое меньшее число
        val1 = 999999; // Выключаем чтобы не мешала
    }
    if (firstalready = false) { // Если предыдущее число не было меньшее - проверяем второе число
        if (val2 <= val1 && val2 <= val3) {
            first = val2;
            firstalready = true;
            val2 = 999999;
        }
    }
    if (firstalready = false) { // Если предыдущее число не было меньшее - проверяем третие число
        if (val3 <= val1 && val3 <= val2) {
            first = val3;
            firstalready = true;
            val3 = 999999;
        }
    }






    if (val1 <= val2 && val1 <= val3) {

        second = val1;
        secondalready = true;
        val1 = 888888;
    }
    if (secondalready = false) {
        if (val2 <= val1 && val2 <= val3) {
            second = val2;
            secondalready = true;
            val2 = 88888;
        }
    }
    if (secondalready = false) {
        if (val3 <= val1 && val3 <= val2) {
            second = val3;
            secondalready = true;
            val3 = 888888;
        }
    }
    cout << first + " " + second;
    keep_window_open();
    return 0;
}
При компиляции и запуска программы, и введение значений некоторые способы попросту не отображает, а второе число вообще не хочет видеть.
До третьего значение не дошёл т.к. первое и второе неправильное.
Возможно я далбоёб, и есть простое решение.
 
Учусь писать читы =)
Начинающий
Статус
Оффлайн
Регистрация
16 Ноя 2020
Сообщения
25
Реакции[?]
10
Поинты[?]
0
Забаненный
Статус
Оффлайн
Регистрация
25 Июн 2021
Сообщения
43
Реакции[?]
15
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Это как бы решение, но мне кажется создатель книги задумывал, что я через алгоритмы решу) Но всё равно спасибо)
через алгоритмы это жесть, слишком много проверок.
 
Пользователь
Статус
Оффлайн
Регистрация
10 Ноя 2019
Сообщения
839
Реакции[?]
135
Поинты[?]
0
f
По советам Югейма начал изучать книжку "Программирование. Принципы и практика с использованием C++". (noad)
Встретил задание.
"Напишите программу. предлагающую пользователю ввести три целых числа, а затем выводит их в порядке возрастания, разделяя запятыми. Например, если пользователь вводит числа 10 4 6. то программа должна вывести на экран числа 4, 6, 10. Если два числа совпадают. то они должны идти одно за другим. Например. если пользователь вводит числа 4 5 4, то программа должна вывести на экран 4, 4, 5."
Не могу выполнить, хотя вроде всё правильно написал.


C++:
#include "std_lib_facilities.h"
int main() {
    setlocale(LC_ALL, "Russian");
    int val1, val2, val3;
    int first, second;
    first = -99;
    second = -100;
    bool firstalready = false;
    bool secondalready = false;
    bool thirdalready = false;
    cout << "Введите первое число: ";
    cin >> val1;
    cout << "\nВведите второе число: ";
    cin >> val2;
    cout << "\nВведите третье число: ";
    cin >> val3;
    cout << "\n";
    if (val1 <= val2 && val1 <= val3) { // проверяем значение меньшее ли оно
       
        first = val1; // запоминаем это число
        firstalready = true; // Включаем boolean переменную, этим самым мы показываем что мы нашли первое меньшее число
        val1 = 999999; // Выключаем чтобы не мешала
    }
    if (firstalready = false) { // Если предыдущее число не было меньшее - проверяем второе число
        if (val2 <= val1 && val2 <= val3) {
            first = val2;
            firstalready = true;
            val2 = 999999;
        }
    }
    if (firstalready = false) { // Если предыдущее число не было меньшее - проверяем третие число
        if (val3 <= val1 && val3 <= val2) {
            first = val3;
            firstalready = true;
            val3 = 999999;
        }
    }






    if (val1 <= val2 && val1 <= val3) {

        second = val1;
        secondalready = true;
        val1 = 888888;
    }
    if (secondalready = false) {
        if (val2 <= val1 && val2 <= val3) {
            second = val2;
            secondalready = true;
            val2 = 88888;
        }
    }
    if (secondalready = false) {
        if (val3 <= val1 && val3 <= val2) {
            second = val3;
            secondalready = true;
            val3 = 888888;
        }
    }
    cout << first + " " + second;
    keep_window_open();
    return 0;
}
При компиляции и запуска программы, и введение значений некоторые способы попросту не отображает, а второе число вообще не хочет видеть.
До третьего значение не дошёл т.к. первое и второе неправильное.
Возможно я далбоёб, и есть простое решение.
а через std::max и std::min?
 
Учусь писать читы =)
Начинающий
Статус
Оффлайн
Регистрация
16 Ноя 2020
Сообщения
25
Реакции[?]
10
Поинты[?]
0
f

а через std::max и std::min?
Такого в книги не было. Автор думал, что я это решу через циклы. Хотя все равно спасибо за информацию, в будущем буду использовать именно так.
 
Продавец
Статус
Оффлайн
Регистрация
28 Окт 2019
Сообщения
1,153
Реакции[?]
302
Поинты[?]
3K
Такого в книги не было. Автор думал, что я это решу через циклы. Хотя все равно спасибо за информацию, в будущем буду использовать именно так.
Какие именно циклы? Только if или for тоже можно?
 
Начинающий
Статус
Онлайн
Регистрация
29 Июн 2020
Сообщения
18
Реакции[?]
15
Поинты[?]
0
По советам Югейма начал изучать книжку "Программирование. Принципы и практика с использованием C++". (noad)
Встретил задание.
"Напишите программу. предлагающую пользователю ввести три целых числа, а затем выводит их в порядке возрастания, разделяя запятыми. Например, если пользователь вводит числа 10 4 6. то программа должна вывести на экран числа 4, 6, 10. Если два числа совпадают. то они должны идти одно за другим. Например. если пользователь вводит числа 4 5 4, то программа должна вывести на экран 4, 4, 5."
Не могу выполнить, хотя вроде всё правильно написал.


C++:
#include "std_lib_facilities.h"
int main() {
    setlocale(LC_ALL, "Russian");
    int val1, val2, val3;
    int first, second;
    first = -99;
    second = -100;
    bool firstalready = false;
    bool secondalready = false;
    bool thirdalready = false;
    cout << "Введите первое число: ";
    cin >> val1;
    cout << "\nВведите второе число: ";
    cin >> val2;
    cout << "\nВведите третье число: ";
    cin >> val3;
    cout << "\n";
    if (val1 <= val2 && val1 <= val3) { // проверяем значение меньшее ли оно
      
        first = val1; // запоминаем это число
        firstalready = true; // Включаем boolean переменную, этим самым мы показываем что мы нашли первое меньшее число
        val1 = 999999; // Выключаем чтобы не мешала
    }
    if (firstalready = false) { // Если предыдущее число не было меньшее - проверяем второе число
        if (val2 <= val1 && val2 <= val3) {
            first = val2;
            firstalready = true;
            val2 = 999999;
        }
    }
    if (firstalready = false) { // Если предыдущее число не было меньшее - проверяем третие число
        if (val3 <= val1 && val3 <= val2) {
            first = val3;
            firstalready = true;
            val3 = 999999;
        }
    }






    if (val1 <= val2 && val1 <= val3) {

        second = val1;
        secondalready = true;
        val1 = 888888;
    }
    if (secondalready = false) {
        if (val2 <= val1 && val2 <= val3) {
            second = val2;
            secondalready = true;
            val2 = 88888;
        }
    }
    if (secondalready = false) {
        if (val3 <= val1 && val3 <= val2) {
            second = val3;
            secondalready = true;
            val3 = 888888;
        }
    }
    cout << first + " " + second;
    keep_window_open();
    return 0;
}
При компиляции и запуска программы, и введение значений некоторые способы попросту не отображает, а второе число вообще не хочет видеть.
До третьего значение не дошёл т.к. первое и второе неправильное.
Возможно я далбоёб, и есть простое решение.
Один из примеров решения. Реализация только для решения тестовых задач, ни в коем случае не для реальных проектов.
C++:
#include <iostream>

int main()
{
    int k[3];
    std::cin >> k[0] >> k[1] >> k[2];
   
    for (int &i : k) {
        for (int &j : k) {
            if (i < j)
                std::swap(i, j);
        }
    }
   
    for (const int &chr : k)
        std::cout << chr;
   
    return 0;
}
 
Сверху Снизу