В статье рассказывается как создать консольное приложение сложения двух чисел в Qt 5.4.0.
Статья из цикла «Сложение двух чисел». Для меня минимальное освоение любой системы программирования начинается с возможности создания такой программы. Если можно написать приложение, в которой пользователь может ввести два числа, считать их, провести с ними какие-то действия, а потом вывести результат, то, значит, базовое владение имеется. И много задач именно из области программирования, алгоритмики можно будет решать, зная, как в конкретной системе программирования запрограммировать такую программу.
Содержание
- Приготовления
- Создание проекта
- Болванка приложения C++
- Написание кода основной программы
- Запуск программы
Приготовления
В статье Установка Qt узнаете, как всё установить и настроить.
Создание проекта
Болванка приложения C++
Пропишем подключение библиотек:
1 2 |
#include <QTextCodec> #include <iostream> |
Пропишем пространство имен стандартной библиотеки, чтобы потом было меньше прописывать кода:
1 |
using namespace std;//Подключение стандартной библиотеки функций |
К сожалению, при переходе от версии Qt4 к Qt5, компания из-за изменений в пользу обычных оконных приложений усложнила жизнь программистам консольных приложений. Поэтому внешний вид консольных приложений с поддержкой русской букв усложнился.
В функции main пропишем строчки кода, чтобы русский язык отображался корректно:
1 2 3 4 5 6 7 |
#ifdef Q_OS_WIN32 QTextCodec::setCodecForLocale(QTextCodec::codecForName("IBM 866")); #endif #ifdef Q_OS_LINUX QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); #endif |
В итоге получаем болванку программы на С++, которую потом удобно использовать для других приложений учебного толка.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <QCoreApplication> #include <QTextCodec> #include <iostream> using namespace std;//Подключение стандартной библиотеки функций int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); #ifdef Q_OS_WIN32 QTextCodec::setCodecForLocale(QTextCodec::codecForName("IBM 866")); #endif #ifdef Q_OS_LINUX QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); #endif //Тут пишем код return a.exec(); } |
Написание кода основной программы
А теперь пропишем основной код нашей программы, где через cin мы считываем в переменные наши числа, а через cout выводим текст в консоль.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
int x, y, z; //Считаем первое число cout << QString::fromUtf8("Введите первое число:").toLocal8Bit().data() << endl; cin >> x; //Считаем второе число cout << QString::fromUtf8("Введите второе число:").toLocal8Bit().data() << endl; cin >> y; //Посчитаем сумму z = x + y; //Выведем результат cout << QString::fromUtf8("Сумма: ").toLocal8Bit().data() << z << endl; |
Полная программа будет выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include <QCoreApplication> #include <QTextCodec> #include <iostream> using namespace std;//Подключение стандартной библиотеки функций int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); #ifdef Q_OS_WIN32 QTextCodec::setCodecForLocale(QTextCodec::codecForName("IBM 866")); #endif #ifdef Q_OS_LINUX QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); #endif int x, y, z; //Считаем первое число cout << QString::fromUtf8("Введите первое число:").toLocal8Bit().data() << endl; cin >> x; //Считаем второе число cout << QString::fromUtf8("Введите второе число:").toLocal8Bit().data() << endl; cin >> y; //Посчитаем сумму z = x + y; //Выведем результат cout << QString::fromUtf8("Сумма: ").toLocal8Bit().data() << z << endl; return a.exec(); } |
Теперь немного о коде получившемся. Из-за проблем с отображением русских букв в консоли в Qt5 нам приходится использовать костыль вида:
1 |
cout << QString::fromUtf8("Введите второе число:").toLocal8Bit().data() << endl; |
вместо стандартного и обычного способа вывода:
1 |
cout << "Введите второе число:" << endl; |
Если вы не хотите использовать русские буквы, то код будет чище и красивее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <QCoreApplication> #include <iostream> using namespace std; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); int x, y, z; cout << "Input first number:" << endl; cin >> x; cout << "Input second number:" << endl; cin >> y; z = x + y; cout << "Sum: " << z << endl; return a.exec(); } |
Запуск программы
При вводе наших чисел получим вот это:
Вот наше приложение и написано. Пока всё)