2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 не считывает строку с файла в программе
Сообщение01.11.2011, 09:09 
Короче простейшая прога: есть база данных рабочих, вводят с консоли фамилию рабочего и ты должен вывести о нём информацию.
код: [ скачать ] [ спрятать ]
Используется синтаксис C++
#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(написан отдельно чисто для практики)
Используется синтаксис C++
#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. Как исправить?

 
 
 
 Re: не считывает строку с файла в программе
Сообщение01.11.2011, 12:08 
Проверил на MSVC 6.0.
Всё работает, естественно, после исправления мелких ошибок :
  • отсутствует запятая после декларации класса в заголовочном файле;
  • декларация метода getinfo не совпадает с его определением в основном файле;
  • путаница с переменными i и j в цикле поиска по "базе";
  • break после первого-же прохода цикла поиска.

 
 
 
 Re: не считывает строку с файла в программе
Сообщение01.11.2011, 13:43 
lim0n в сообщении #498106 писал(а):
Проверил на MSVC 6.0.
Всё работает, естественно, после исправления мелких ошибок :
  • отсутствует запятая после декларации класса в заголовочном файле;
  • декларация метода getinfo не совпадает с его определением в основном файле;
  • путаница с переменными i и j в цикле поиска по "базе";
  • break после первого-же прохода цикла поиска.

Код покажете?
Без workers.h ?

-- 01.11.2011, 17:41 --

Всё, отладил
Спасибо

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group