【问题标题】:Why is this Avg function not executing in my program? [closed]为什么这个 Avg 函数没有在我的程序中执行? [关闭]
【发布时间】:2019-07-25 17:38:39
【问题描述】:

我制作了一个基本的 oop 程序,其中有 3 个函数,现在正在执行 2 个函数,但最后一个函数没有执行 Avg 函数。

#include<iostream>
using namespace std;
 class Marks
 {
  public:
  int n,sum,avg;
  int urdu,english,math;

   void in()
   {
    cout<<"Enter Marks Of Urdu"<<endl;
    cin>>urdu;
    cout<<"Enter Marks Of English"<<endl;
    cin>>english;
    cout<<"Enter Marks Of Maths"<<endl;
    cin>>math;

   }
   void Sum()
   {
   sum=urdu+english+math;
   cout<<"Sum Of Subjects = "<<sum<<endl;
   }

   float Avg(int sum)
   {
    return sum/3;

   }

 };
int main ()
 {
  Marks M;
  M.in();
  M.Sum();
  M.Avg(M.sum);

 }

似乎只执行了不返回任何值的函数。如何执行返回值的函数?

【问题讨论】:

  • 你怎么知道它没有被执行?请注意,由于您丢弃了结果并且它没有副作用,因此可以优化该函数。
  • 或者它正在执行,但是因为没有打印,所以你什么也看不到?你需要一个调试器。
  • 您能否将您的手指指向您期望产生丢失“输出”的所示代码的确切行?
  • 当然,打印所有其他值的操作完全相同。
  • 那么,是什么阻止您编写打印它的代码?

标签: c++ function oop


【解决方案1】:

你没有对它返回的值做任何事情,所以调用这个函数实际上没有任何效果。

main,做点什么来使用它:

int main ()
{
  Marks M;
  M.in();
  M.Sum();
  float answer = M.Avg(M.sum);
  std::cout << "The answer is " << answer << '\n'; 
}

另外,需要注意的是你在计算Avg时使用的是整数除法:

float Avg(int sum) {
  return sum / 3; // This is integer division b/c both arguments are integers
}

将其中一个参数设为float,以便得到浮点答案:

float Avg(int sum) {
  return sum / 3.0f; 
}

【讨论】:

  • 好的,非常感谢。成功了
猜你喜欢
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
相关资源
最近更新 更多