#include<iostream>
using namespace std;
class emp
{
public:
int en;
char name[10],des[10];
void get()
{
cout<<"enter emp no.";
cin>>en;
cout<<"enter emp name";
cin>>name;
cout<<"enter designation";
cin>>des;
}
};
class salary : public emp
{
public:
float bp,hra,da,pf,np;
void get1()
{
cout<<"enter basic pay";
cin>>bp;
cout<<"enter domestic allowance";
cin>>da;
cout<<"enter profit fund";
cin>>pf;
cout<<"enter human resource admittance";
cin>>hra;
}
void calculate()
{
np=bp+da+hra-pf;
}
void display()
{
cout<<en<<"\t"<<name<<"\t"<<des<<"\t"<<da<<"\t"<<pf<<"\t"<<np<<"\n";
}
};
int main()
{
salary s[10];
int i,n;
char ch;
cout<<"enter the no. of employees";
cin>>n;
for(i=0;i<=n;i++)
{
s[i].get();
s[i].get1();
s[i].calculate();
}
cout<<"\n eno. \t ename \t des \t bp \t hra \t da \t pf \t np \n";
for(i=0;i<=n;i++)
{
s[i].display();
}
return 0;
}
ответ
cin>>des[10];
читает один (один) символ для стандартного ввода, и попытки записать его des[10]
. К сожалению, вы определили des
как имеющие 10 символов, поэтому только des[0]
по des[9]
действительны, поэтому, когда он пытается записать в des[10]
, вы получаете неопределенное поведение.
Я думаю, что вы, вероятно, хотел что-то подобное:
cin.getline(des, 10);
Это пытается прочитать максимум 10 символов из cin
, и записать их в des
(и уверяет, что это NUL прекращено).
То же самое, конечно же относится к name
.
Как только вы закончите с этим, вы, вероятно, захотите забыть все вышеизложенное, определите как name
, так и des
как std::string
s. Затем вы можете использовать std::getline(std::cin, name);
. При этом вам не нужно указывать максимальный размер; строка будет расширяться, чтобы удерживать столько, сколько пользователь вводит.
должен ли я написать всю программу, чтобы вы лучше поняли? – Tp25
вместо имени [10] и дез, использование CIN >> имя [10] и CIN >> дез
- 1. Что не так с этим общим классом?
- 2. Что не так с этим классом? (QDBusAbstractAdaptor)
- 3. Что-то не так с этим классом gtk # для окна?
- 4. Что не так с этим C++ typedef?
- 5. C-язык, что не так с этим?
- 6. Что не так с этим классом VBA ADO?
- 7. Что не так с этим методом C#?
- 8. Что не так с этим? (C++)
- 9. Что не так с этим методом C#?
- 10. C++ - что не так с этим кодом?
- 11. C# сокращение, что не так с этим?
- 12. Что не так с этим кодом C
- 13. Что не так с этим классом? (Дизайн мудрый)
- 14. Что не так с этим классом PHP4 для шифрования AES?
- 15. Что делает * с этим классом?
- 16. Что случилось с этим классом?
- 17. Что не так с этим?
- 18. Что не так с этим запросом Cypher?
- 19. Что не так с этим кодом
- 20. Что назвать этим классом?
- 21. что не так с этим использованием realloc
- 22. Что не так с этим make-файлом?
- 23. Что не так с этим хэшем?
- 24. Что не так с этим привязкой клавиш?
- 25. Что не так с этим условным?
- 26. Что не так с этим кодом заголовка?
- 27. Что не так с этим оператором To_Date()?
- 28. Что не так с этим кодом?
- 29. Что не так с этим кодом?
- 30. Что не так с этим методом добавления?
Пожалуйста, опишите конкретную проблему, вы обращенную – fukanchik
'>> имя Cin [10];' => ' cin >> name; 'Ditto with' des' –
Имена массивов: «name» и «des». Я рекомендую посетить [список книг] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list). – molbdnilo