jjzjj

C++ 编程 : Assignment's Output is Marginally Off

coder 2024-02-10 原文

好的,任务是从名为 tickets.txt 的文件中获取输入,并输出售出的门票总数以及总收入。文本文件中的值在两列中输入 (1) 售出的门票数量,以及 (2) 每个门票类别的价格。

文本文件如下所示:

250 5750
100 28000
50 35750
25 18750

这是我想出的代码...

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

/* Program Name:  Ticket_Sales.cpp
 * Date: May 2, 2018
 * Purpose: Calculate Total Ticket Sales
 */

int main() {

    {
        ifstream inFile;
        float ticket_cost;
        float tickets_sold;
        float total_cost ;
        float total_sold ;
        float ticket_revenue;

        /*
         * I noticed someone doing something similar to this on StackExchange; seems absolutely brilliant to include
         * a manner to check if the program is accessing the file.
         */
        inFile.open("C:\\Users\\pinkp\\CLionProjects\\M05_Ticket_Sales\\tickets.txt");
            if (inFile.fail()) {
                cout << "Failed to open the file." << endl;
                cin.get ();
                return 1;
            }

        while(inFile >> tickets_sold >> ticket_cost) {
                total_sold += tickets_sold;
                total_cost += ticket_cost;
                ticket_revenue = (total_cost * total_sold);

        }
        cout << fixed << setprecision(2);
        cout << "Total Tickets Sold:  " << total_sold << "." << endl;
        cout << "Total Revenue:  " << ticket_revenue << "." << endl;
    }
    /*
     * The value continues to return 2 less than the intended output, and I cannot pinpoint the exact cause.
     */
    return 0;
}

但是我的 ticket_revenue 输出继续给我 37506248.00,当手动将数字输入计算器时将得到 37506250.00。两个数字的差异。我想过只做一个“+2”来让它达到正确的数字,但我想我的教授会对此不悦。

无论 tickets.txt 中的数字如何(我已经更改了几次),它总是比我预期的少两个。这是我不知何故错过的一些 super 简单的 C++ 或编程概念吗?

谢谢!

最佳答案

您未能初始化 ticket_revenue - 并查看它是如何分配的:

            ticket_revenue = (total_cost * total_sold);

这会用售出的票数与所有价格的总和的乘积覆盖ticket_revenue

你需要类似(未经测试)的东西:

    unsigned long total_sold = 0;
    unsigned long ticket_revenue = 0;
    while (inFile >> tickets_sold >> ticket_cost) {
            auto transaction_revenue = tickets_sold * ticket_cost;
            total_sold += tickets_sold;
            ticket_revenue += transaction_revenue;
    }

顺便说一句,don't use floating-point types for currency calculations !


这是修复了上述错误的代码版本,没有外部输入文件(因此它代表 Minmal, Complete and Verifiable Example ):

#include <iostream>
#include <vector>

int main()
{
    static const
        std::vector<std::pair<int, long>> sales =
        {{ 250, 5750 },
         { 100, 28000 },
         { 50, 35750 },
         { 25, 18750 } };

    long total_sold = 0;
    long ticket_revenue = 0;

    for (auto& sale: sales) {
        int tickets_sold = sale.first;
        long ticket_cost = sale.second;
        total_sold += tickets_sold;
        ticket_revenue += tickets_sold * ticket_cost;
    }

    std::cout << "Total Tickets Sold:  " << total_sold << ".\n";
    std::cout << "Total Revenue:  " << ticket_revenue << ".\n";
}

这会产生正确的答案:

Total Tickets Sold:  425.
Total Revenue:  6493750.

关于C++ 编程 : Assignment's Output is Marginally Off,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50155170/

有关C++ 编程 : Assignment's Output is Marginally Off的更多相关文章

  1. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  2. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  3. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  4. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  5. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  6. Ruby Koans about_array_assignment - 非平行与平行分配歧视 - 2

    通过ruby​​koans.com,我在about_array_assignment.rb中遇到了这两段代码你怎么知道第一个是非并行赋值,第二个是一个变量的并行赋值?在我看来,除了命名差异之外,代码几乎完全相同。4deftest_non_parallel_assignment5names=["John","Smith"]6assert_equal["John","Smith"],names7end45deftest_parallel_assignment_with_one_variable46first_name,=["John","Smith"]47assert_equal'John

  7. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  8. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  9. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  10. ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作 - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request

随机推荐