【问题标题】:Logical error I am getting unexpected result逻辑错误我得到了意想不到的结果
【发布时间】:2017-06-25 05:57:09
【问题描述】:

我想接受卷号,2个科目的分数并添加分数并显示

他们,但该计划不接受超过 1 名学生的详细信息。

此课程不超过 40 名学生 我使用代码块 IDE 进行编程

Please see this image for output screen

请帮忙!!

#include<iostream>
#include<conio.h>
#include<stdlib.h>
using namespace std;
int sum1[40];
int roll[40];
int n;
class Sb1;
class Sb2;
class Sb1
{
    public:
    float marks1[40];
    void markssb1()
    {
       for(int i=0;i<n;i++)
       {
         cout<<"Enter Marks in subject 1 \n";
         cin>>marks1[40];
       }
    }
    friend void sum(Sb1,Sb2);
};
class Sb2
{
    public:
    float marks2[40];
    void markssb2()
    {
       for(int i=0;i<n;i++)
       {
         cout<<"Enter Marks in subject 2 \n";
         cin>>marks2[40];
       }
    }
    friend void sum(Sb1,Sb2);
};
void sum(Sb1 obj1,Sb2 obj2)
{
    for(int i=0;i<n;i++)
    {
        sum1[i]=obj1.marks1[i]+obj2.marks2[i];
    }
}
void display()
{
    cout<<"Serial Number\t\t\tRoll Number\t\t\tTotal Marks\n";
    cout<<"----------------------------------------------------------------------------\n";
    for(int i=0;i<n;i++)
    {
        cout<<i+1<<"\t\t\t\t"<<roll[i]<<"\t\t\t\t"<<sum1[i]<<endl;
    }
}
int main()
{
    Sb1 obj1;
    Sb2 obj2;
   cout<<"Enter number of students (Maximum 40 students)\n";
   cin>>n;
   if(n<=40)
    {
        for(int i=0;i<n;i++)
        {
            cout<<"Enter Roll Number of student "<<i+1<<endl;
            cin>>roll[i];
            obj1.markssb1();
            obj2.markssb2();
            sum(obj1,obj2);
        }
        display();
    }
    else
    {
      cout<<"Number of students entered exceed 40\n";
    }
    return 0;
    getch();
}

【问题讨论】:

  • 修改其操作数的 sum 函数是糟糕的设计。按引用传递,按值返回。
  • 诊断此类问题的正确工具是调试器,而不是 SO 问题。如果您是编程世界的新手,您应该阅读How to debug small programs (by Eric Lippert)
  • @StoryTeller 感谢我是编程新手! link 非常感谢您的阅读。

标签: c++ logic


【解决方案1】:

我能看到的最初的错误之一是你的这部分代码

for(int i=0;i<n;i++)
   {
     cout<<"Enter Marks in subject 1 \n";
     cin>>marks1[40];
   }

您每次只为第 41 个索引输入。 正确的应该是

for(int i=0;i<n;i++)
   {
     cout<<"Enter Marks in subject 1 \n";
     cin>>marks1[i];
   }

二等也是一样。

那么第二部分也有错误。

 for(int i=0;i<n;i++)
        {
            cout<<"Enter Roll Number of student "<<i+1<<endl;
            cin>>roll[i];
            obj1.markssb1();
            obj2.markssb2();
            sum(obj1,obj2);
        }
    display();

这是在每次输入卷号时为所有“n”名学生输入科目分数。 纠正代码的一种方法是 -

     for(int i=0;i<n;i++)
        {
            cout<<"Enter Roll Number of student "<<i+1<<endl;
            cin>>roll[i];

        }
     obj1.markssb1();
     obj2.markssb2();
     sum(obj1,obj2);

【讨论】:

  • @GarvitKothari 我已经编辑了更多内容,请查看!
猜你喜欢
  • 2017-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2019-05-19
相关资源
最近更新 更多