Двойники предназначены для деления добавить? - PullRequest
0 голосов
/ 02 апреля 2019

Я делаю программу на С ++, которая функционирует как калькулятор. Все работает, кроме функции деления, которая по некоторым причинам добавляет двойные числа. У кого-нибудь есть исправление?

Я пытался явно бросить удвоение и стучать головой по столу. Вот несколько фрагментов моего кода.

#include "pch.h"
#include <iostream>
using namespace std;

void divide()
{
    //first number
    cout << "What is the numerator?";
    double firstNum = 0;
    cin >> firstNum;
    //second number
    cout << "What is the denominator?";
    double secNum = 0;
    cin >> secNum;
    //multiplying
    double answer = firstNum/(double)secNum;
    cout << "Your answer is " << answer << ".";
}

int main() 
{
    //asks for what operation user would like to use
    cout << "Do you want to add, subtract, divide, or multiply? Type [1] for add, [2] for subtract, [3] for divide, and [4] for multiply(minus the brackets).";
    double opquery = 0;
    cin >> opquery;

    // if division
    if (opquery == 3)
    {
        divide();
        return 0;
    }
}

Я бы ожидал что-то вроде 4/4 равное 1, но оно просто возвращает сложение

ОБНОВЛЕНИЕ: ПОЛНЫЙ КОД МОЖЕТ НАЙТИ НА https://github.com/hoverdoge/cppcalculatorerror/blob/master/code

1 Ответ

0 голосов
/ 03 апреля 2019

На самом деле, код, который вы передаете здесь, в порядке, и результат 4/4 = 1.

Но код, которым вы делитесь в github, имеет нечто иное. Удалить ; после if (opquery == 1); Программа может нормально работать.

Изменения:

if (opquery == 1);
    {
        add();
        return 0;
    }

Кому:

if (opquery == 1)
    {
        add();
        return 0;
    }

Примечание : Когда вы добавляете дополнительные ; после if (xxx), независимо от значения opquery , основной метод выполнит следующие шаги:

cout << "xxx...";
int opquery = 0;
cin >> opquery;
add();
return 0;

Вот почему возникает эта проблема.

...