• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

C++ Задание из книги

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


C++:
Expand Collapse Copy
#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;
}
При компиляции и запуска программы, и введение значений некоторые способы попросту не отображает, а второе число вообще не хочет видеть.
До третьего значение не дошёл т.к. первое и второе неправильное.
Возможно я далбоёб, и есть простое решение.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1628346995680.png
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Это как бы решение, но мне кажется создатель книги задумывал, что я через алгоритмы решу) Но всё равно спасибо)
через алгоритмы это жесть, слишком много проверок.
 
f
По советам Югейма начал изучать книжку "Программирование. Принципы и практика с использованием C++". (noad)
Встретил задание.
"Напишите программу. предлагающую пользователю ввести три целых числа, а затем выводит их в порядке возрастания, разделяя запятыми. Например, если пользователь вводит числа 10 4 6. то программа должна вывести на экран числа 4, 6, 10. Если два числа совпадают. то они должны идти одно за другим. Например. если пользователь вводит числа 4 5 4, то программа должна вывести на экран 4, 4, 5."
Не могу выполнить, хотя вроде всё правильно написал.


C++:
Expand Collapse Copy
#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?
 
f

а через std::max и std::min?
Такого в книги не было. Автор думал, что я это решу через циклы. Хотя все равно спасибо за информацию, в будущем буду использовать именно так.
 
Такого в книги не было. Автор думал, что я это решу через циклы. Хотя все равно спасибо за информацию, в будущем буду использовать именно так.
Какие именно циклы? Только if или for тоже можно?
 
По советам Югейма начал изучать книжку "Программирование. Принципы и практика с использованием C++". (noad)
Встретил задание.
"Напишите программу. предлагающую пользователю ввести три целых числа, а затем выводит их в порядке возрастания, разделяя запятыми. Например, если пользователь вводит числа 10 4 6. то программа должна вывести на экран числа 4, 6, 10. Если два числа совпадают. то они должны идти одно за другим. Например. если пользователь вводит числа 4 5 4, то программа должна вывести на экран 4, 4, 5."
Не могу выполнить, хотя вроде всё правильно написал.


C++:
Expand Collapse Copy
#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++:
Expand Collapse Copy
#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;
}
 
Назад
Сверху Снизу