Короче простейшая прога: есть база данных рабочих, вводят с консоли фамилию рабочего и ты должен вывести о нём информацию.
#include <iostream>
#include <string>
#include <cstdio>
#include "Workers.h"
#include <fstream>
using namespace std;
void workers::getinfo(string NAME,int birthday,int salary)
{
Name=NAME;birth_year=birthday;pay=salary;
}
void workers::showinfo()
{
cout<<"Name: "<<Name;
cout<<"Was born in: "<<birth_year;
cout<<"Gets: "<<pay<<" per month";
}
bool workers::compname(string name)
{
if(name==Name)
return true;
else
return false;
}
int main()
{
ifstream in;
in.open("workers.txt");
workers arbeiter[10];
string NAme,NAME;
int i=0,salary,birthday;
while(in)
{
in>>NAME;
in>>salary;
in>>birthday;
arbeiter[i].getinfo(NAME,birthday,salary);
++i;
}
while(true)
{
cout<<"Введите фамилию или слово end: "<<endl;
cin>>NAme;
if(NAme=="end")
break;
else
for(int j=0;j<=i;++j)
{
if(arbeiter[i].compname(NAme))
arbeiter[i].showinfo();
break;
}
}
}
Workers.h(написан отдельно чисто для практики)
#include <string>
#include <iostream>
using namespace std;
class workers
{
private:
string Name;
int birth_year;
int pay;
public:
void showinfo();
void getinfo();
bool compname(string name);
}
workers.txt:
Иванов 1957 4200
Петров 1947 3800
Сидоров 1938 3000
Ивановский 1963 6200
Среда: Netbeans 6.9, компилятор: GNU C++ 4.4
При дебаге обнаружил, что он не сможет считать строку. Т.е он не считывает почему-то Иванов И.П., но считывает 1957 и 4200. Как исправить?