Форум программистов, компьютерный форум CyberForum.ru

Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего - C++

Восстановить пароль Регистрация
 
Pari
40 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 139
24.07.2014, 02:08     Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего #1
Создайте класс employee, который содержит имя (объект класса string) и но-
мер (типа long) служащего. Включите в него метод getdata(), предназна-
ченный для получения данных от пользователя и помещения их в объект,
и метод putdata(), для вывода данных. Предполагаем, что имя не может иметь
внутренних пробелов.
Напишите функцию main(), использующую этот класс. Вам нужно будет
создать массив типа employee, а затем предложить пользователю ввести
данные до 100 служащих. Наконец, вам нужно будет вывести данные всех
служащих.

программа работает только на первом цикле, далее ввод имени сотрудника пролетается и сразу запрашивается номер. в чем дело? мне нужно, чтобы имя работника вводилось с пробелами, потому использовала функцию getline, именно с ней не работает, а с обычным cin>> работает. я уже замучилась искать ошибку



C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "stdafx.h"
#include <iostream>     
#include <string>
using namespace std;
 
class Employee 
{
private:
    string name;
    long number;
public:
    void getdata()
    {
        cout << "\nEnter name: "; getline (cin, name);
        cout << "\nEnter number: "; cin >> number;
    }
    void putdata()const
    {
        cout << "\nname: " << name << ", number: " << number;
    }
};
    
int main()
{
    Employee empl [100];
    char ans;
    int n=0;
    do
    {
        cout << "Enter employee ";
        empl [n++].getdata();
        cout << "continue typing? (y/n): "; cin >> ans;
    }
    while ( ans != 'n' );
 
    for (int j = 0; j<n; j++)
    {
        cout << "\nEmployee " << j+1 << " : ";
        empl [j].putdata();
    }
    cout << endl;
 
    system ("pause");
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2014, 02:08     Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего
Посмотрите здесь:

Создайте класс с именем Employee, включающий в качестве элементов данных три информационных пункта: имя, фамилию и месячную зарплату C++
C++ Создайте класс, который содержит информацию об имени и адресе
Создайте класс со специальной версией оператора new, получающей второй аргумент типа string C++
Создать класс. Символьное поле должно быть задано как объект класса string C++
Создайте определенный пользователем класс Point, который содержит скрытые компоненты-данные xCoord и yCoord C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,397
24.07.2014, 02:16     Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего #2
cin.ignore() после getline. В потоке остаётся символ переноса строки (\n).
Pari
40 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 139
24.07.2014, 02:32  [ТС]     Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего #3
Цитата Сообщение от MrGluck Посмотреть сообщение
cin.ignore() после getline. В потоке остаётся символ переноса строки (\n).
если пишу так:


C++ (Qt)
1
cout << "\nEnter name: "; getline (cin, name); cin.ignore();
на втором цикле тоже вылетает, но уже по другому

Добавлено через 8 минут
а самое интересное, что в решении этой задачи в конце книги используется cin >> ! но в условии ясно сказано, что должны учитываться пробелы
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.07.2014, 02:46     Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от MrGluck Посмотреть сообщение
cin.ignore() после getline
Перед getline(), после cin >>. Или так:
C++
1
2
3
4
5
...
(cin >> ans).get();
...
(cin >> number).get();
...
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,397
24.07.2014, 02:50     Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
 
struct Employee
{
    std::string surname;
    int date;
};
 
int main()
{
    Employee e;
    for (int i=0; i < 2; i++)
    {
        std::getline(std::cin, e.surname);
        std::cin >> e.date;
                std::cin.ignore();
        std::cout << e.surname << " " << e.date << std::endl;
    }
}
http://ideone.com/CNCVnP

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
Перед getline(), после cin >>
Согласен, думал об одном - написал совершенно другое.

alsav22
24.07.2014, 02:52
  #6

Не по теме:

Бывает.

Pari
40 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 139
24.07.2014, 02:57  [ТС]     Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего #7
alsav22, этим способом при выводе отображается только последнее слово

Добавлено через 4 минуты
вот так работает, наконец, правильно
спасибо вам. а не могли бы вы разъяснить поподробнее про cin.ignore и почему до getline?


C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "stdafx.h"
#include <iostream>     
#include <string>
using namespace std;
 
class Employee 
{
private:
    string name;
    long number;
public:
    void getdata()
    {
        cout << "\nEnter name: "; cin.ignore(); getline (cin, name);
        cout << "\nEnter number: "; cin >> number;
    }
    void putdata()const
    {
        cout << "\nname: " << name << ", number: " << number;
    }
};
    
int main()
{
    Employee empl [100];
    char ans;
    int n=0;
    do
    {
        cout << "Enter employee ";
        empl [n++].getdata();
        cout << "continue typing? (y/n): "; cin >> ans;
    }
    while ( ans != 'n' );
 
    for (int j = 0; j<n; j++)
    {
        cout << "\nEmployee " << j+1 << " : ";
        empl [j].putdata();
    }
    cout << endl;
 
    system ("pause");
    return 0;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.07.2014, 02:57     Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего #8
Цитата Сообщение от Pari Посмотреть сообщение
этим способом при выводе отображается только последнее слово
Вот так сделали?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "stdafx.h"
#include <iostream>     
#include <string>
using namespace std;
 
class Employee 
{
private:
    string name;
    long number;
public:
    void getdata()
    {
        cout << "\nEnter name: "; getline (cin, name);
        cout << "\nEnter number: "; (cin >> number).get();
    }
    void putdata()const
    {
        cout << "\nname: " << name << ", number: " << number;
    }
};
    
int main()
{
    Employee empl [100];
    char ans;
    int n=0;
    do
    {
        cout << "Enter employee ";
        empl [n++].getdata();
        cout << "continue typing? (y/n): "; (cin >> ans).get();
    }
    while ( ans != 'n' );
 
    for (int j = 0; j<n; j++)
    {
        cout << "\nEmployee " << j+1 << " : ";
        empl [j].putdata();
    }
    cout << endl;
 
    system ("pause");
    return 0;
}
Pari
40 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 139
24.07.2014, 03:03  [ТС]     Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего #9
Цитата Сообщение от alsav22 Посмотреть сообщение
Вот так сделали?
чуть по другому, смотрите выше.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.07.2014, 03:03     Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего #10
....
Миниатюры
Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего  
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.07.2014, 03:05     Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего #11
Цитата Сообщение от Pari Посмотреть сообщение
чуть по другому, смотрите выше.
Я про свои рекомендации спросил (в 4 посте). Что-то не так сделали, раз:
Цитата Сообщение от Pari Посмотреть сообщение
этим способом при выводе отображается только последнее слово
У меня всё нормально отображается (скрин).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2014, 03:13     Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего
Еще ссылки по теме:

C++ Создать объект внутри класса, который может вызывать функцию этого класса
Реализовать класс Time, который содержит три поля типа int C++
C++ Создайте класс String

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Pari
40 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 139
24.07.2014, 03:13  [ТС]     Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Я про свои рекомендации спросил (в 4 посте). Что-то не так сделали, раз:
а, я поняла, да, не так написала. еще плохо ориентируюсь в функциях, очень плохо(
Yandex
Объявления
24.07.2014, 03:13     Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего
Ответ Создать тему
Опции темы

Текущее время: 11:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru