(C ++) Почему эта программа выдает на выходе «0» или «nan»? - PullRequest
0 голосов
/ 26 мая 2020

У меня есть эта простая программа на C ++, в которой мне нужно ввести оценки по 5 предметам и вычислить их в процентах. Но я понятия не имею, почему в выводе отображается "0" , и если я удалю эти return 0 операторы в функциях input () и percent (), тогда он покажет " nan " на выходе.

Вот код:

#include<iostream>
using namespace std;

class Marks
{
    float s1,s2,s3,s4,s5;
    float p;
public:
    float input();
    float percentage();
};

float Marks::input()
{
    cout<<endl<<"Enter the marks of your 5 subjects."<<endl;
    cin>>s1>>s2>>s3>>s4>>s5;
    cout<<"Subject 1="<<s1<<endl<<"Subject 2="<<s2<<endl<<"Subject 3="<<s3<<endl<<"Subject 4="<<s4<<endl<<"Subject 5="<<s5<<endl;
    //return 0;
}

float Marks::percentage()
{
    p=s1+s2+s3+s4+s5;
    p=p/5;
    cout<<p<<endl;
    //return 0;
}

int main()
{
    Marks student1;
    cout<<"Marks of student 1 are as follow:"<<endl<<student1.input()<<endl;
    cout<<"Student 1: Percentage = "<<student1.percentage()<<endl;
  return 0;
}

А вот результат:

Output

1 Ответ

1 голос
/ 26 мая 2020

Ваши функции обещают вернуть float, но этого не происходит. Это неопределенное поведение . И как только ваша программа содержит UB где-нибудь , она полностью теряет смысл.

...