为什么我的输出错了?

时间:2017-02-01 20:37:39

标签: c++

    #include <iostream>
    #include <iomanip>
    #include <cmath>

    using namespace std;

    const double COUNTY_TAX = 0.02;
    const double STATE_TAX = 0.04;
    double totalSales;
    void countyTax(double newCountyTax);
    void stateTax(double newStateTax);
    void total(double newTotal);

    int main ()
    {

        cout << "Please enter the total dollar amount of sales: $";
        cin >> totalSales;

        countyTax(1);
        stateTax(1);
        total(1);

        return 0;   
    }

    void countyTax(double newCountyTax)
    {
        double newCountyTaxA;

        newCountyTaxA = totalSales * COUNTY_TAX;

        cout << "The county tax is: $" << newCountyTaxA << endl;

    }

    void stateTax(double newStateTax)
    {

        double newStateTaxA;

        newStateTaxA = totalSales * STATE_TAX;

        cout << "The State tax is: $" << newStateTaxA << endl;

    }

    void total(double newTotal)
    {
        double newTotalA, newStateTaxA, newCountyTaxA;

        newTotalA = newStateTaxA + newCountyTaxA;

        cout << "The total is: $" << newTotalA << endl;

    }
你好!我正在使用C ++进入模块,上面的代码正确编译,但我似乎无法弄清楚为什么我的输出很不稳定。我得到县税和州税,以便正确显示,但当总计显示我得到&#34; $ nan&#34;我想知道我是否可以得到一些反馈?是否可能与模块中的事实有关,我没有使用任何全局变量,例如我使用totalSalesCOUNTY_TAXSALES_TAX,并且当我声明{{1 }} newTotalA newStateTaxA它们已声明但未分配?这里只是有点困惑......太多了!

3 个答案:

答案 0 :(得分:1)

newStateTaxAnewCountyTaxA中创建和计算的变量countyTaxstateTax是这些函数的本地变量。一旦函数完成,那些变量及其包含的值就会消失。在total中,您可以使用相同的名称创建新的局部变量。除了共享名称之外,它们与先前定义的变量没有关系,并且不会存储先前在其他两个函数中计算的值。

最简单的解决方案虽然不被认为是最强大的,但是在全局范围内创建两个变量以及totalSales,以便在两个函数中分配它们的值仍然存在。

如果您不想使用全局变量(我也不想使用它),您可以在main函数中声明它们,并修改其他函数以返回计算值:

double countyTax(double newCountyTax)
{
    double newCountyTaxA;

   newCountyTaxA = totalSales * COUNTY_TAX;

   cout << "The county tax is: $" << newCountyTaxA << endl;

   return newCountytaxA;
}

main()中的来电将会显示为:

newCountyTaxA = countyTax(1);

答案 1 :(得分:0)

您在以下代码中犯了一个根本性的错误:

void total(double newTotal)
{
    double newTotalA, newStateTaxA, newCountyTaxA;

    newTotalA = newStateTaxA + newCountyTaxA;

    cout << "The total is: $" << newTotalA << endl;

}

您在此处创建的变量&#34; newStateTaxA&#34;和&#34; newCountyTaxA&#34;与您在其他方法中创建和分配的其他变量没有任何关系,它们对于每个方法都是本地的。您需要将它们设为全局或从这些函数返回值。

答案 2 :(得分:0)

#!/usr/bin/python
from Bio import SeqIO
import glob

fasta_file = "fasta_final.fa" # Input fasta file

for wanted_file in glob.glob("/data/ids/id*.txt"):
    with open(wanted_file) as f:

        wanted = set()
        with open(wanted_file) as f:
            for line in f:
                line = line.strip()
                if line != "":
                    wanted.add(line)

fasta_sequences = SeqIO.parse(open(fasta_file),'fasta')
with open(result_file, "w") as f:
    for seq in fasta_sequences:
        if seq.id in wanted:
            SeqIO.write([seq], f, "fasta")

这是我想出的。一切都按照需要运作和输出。我想现在我想知道这种类型的设置是否有一个模块和多个计算内部认为是好的编程?