Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include "math.h"
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
- QString transformation(int value, int base)
- {
- QString output;
- while(value > 0)
- {
- char digit = value % base;
- if(digit < 10)
- digit += 48; // смещение на 48 позиций таблицы ASCII, так как (char) 0 = (int) 48
- else
- digit += 55; // смещение на 55 позиций таблицы ASCII, так как (char) A = (int) 55 ( A = 10 )
- output += digit;
- value /= base;
- }
- std::reverse(output.begin(), output.end()); // переворот строки
- return output;
- }
- void MainWindow::on_pushButton_Result_clicked()
- {
- QString str,bases;
- int input, base;
- bool isNumInput = false;
- bool isNumBase = false;
- bool minus = false; // если число было введено с минусом, к конечному модулю переведенного числа будет дописан минус
- QString output = ""; // Объявление строки на вывод
- str = ui->lineEdit_Decimal->text(); // Ввод числа
- bases = ui->lineEdit_Base->text(); // Ввод сс в которую будет осуществлен перевод
- input=str.toInt(&isNumInput); // перевод в целочисленный тип данных с проверкой на существование числа
- base=bases.toInt(&isNumBase);
- if(base > 32 || base < 2 || isNumBase == false) {
- ui->lineEdit_Base->setText("Требуется число от 2 до 32!");
- ui->lineEdit_Result->setText("Error: Система счисления 2-32!"); //вывод ошибки, так как программа работает с системами счисления до 32-ой
- }
- else{
- if(isNumInput == false) { //проверка на существования числа
- ui->lineEdit_Decimal->setText("Требуется число!");
- ui->lineEdit_Result->setText("Error: Необходимо ввести число!");
- }
- else{
- if(input < 0){
- minus = true;
- }
- else{
- minus = false;
- }
- output = ""; // очищение строки
- if(minus == true) output += "-"; // добавление к числу минуса в строковом типе данных
- output += transformation(abs(input), base); // добавление к имеющейся строке переведенное число, введенное число взято по модулю
- ui->lineEdit_Result->setText(output); //вывод
- }
- }
- if(isNumInput == false) { // проверка на существования числа, если система счисления тоже вписана с ошибкой (если ошибка присутствует сразу в двух полях ввода)
- ui->lineEdit_Decimal->setText("Требуется число!");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement