Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228

Некоректно работает метод записи информации в обьект

11.10.2013, 23:12. Показов 622. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть класс с полями, одно из них - name типа string. если имя вводить через cin то все нормально, но я хочу вводить ее через getline чтоб можно было вводить с пробелами. Для первого обьекта все работает хорошо, для следущих строчка ввода имени(86) пропускаеться. точнее все пропускаеться от ввода последнего поля первого елемента и до ввода даты следущего елемента.
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include <iostream>
#include <set>
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
const int current_уear = 2013;
const int arr_size = 3;
class Date
{
    int dd;
    int mm;
    int yy;
public:
    Date::Date()
    {
        dd = 0;
        mm = 0;
        yy = 0;
    }
    Date::Date(int _dd, int _mm, int _yy)
    {
        dd = _dd;
        mm = _mm;
        yy = _mm;
    }
    void setDate()
    {
        int _dd, _mm, _yy;
        bool B=true;
        while(B)
        {
            cout << "\nEnter new date: ";
            cin >> _dd  >> _mm >> _yy;
            if(_dd > 31 || _mm > 12 || _yy < current_уear-5 || _yy > current_уear+1)
            {
                cout <<  "\nInvalid date. Try again.";
                system("pause");
                system("cls");
                continue;
            }
            if(_mm == 4 || _mm == 6 || _mm == 9 || _mm == 11 && _dd>30)
            {
                cout << "\nInvalid date. Entered month haven`t more 30 days.";
                system("pause");
                system("cls");
                continue;
            }
            if(_mm == 2 && _dd>29)
            {
                cout << "\nInvalid date. Entered month haven`t more 29  days.";
                system("pause");
                system("cls");
                continue;
            }
            else 
            {
                dd = _dd; mm = _mm; yy = _yy;
                B = false;
            }
        }
    }
    void show_date()
    {
        cout << "Date: " << dd << '.' << mm << '.' << yy;
    }
};
 
class Good
{
    string name;
    Date date;
    double price;
    int count;
    int number;
public:
    Good::Good()
    {
    }
    void input()
    {
        cout << "\nEnter name: ";
        getline (cin, name); // - работает только для первого обьекта, для остальных етот метод пропускаеться
        //cin >> name; // - работает нормально для всех обьектов
        system("cls");
        date.setDate();
        system("cls");
        cout << "\nEnter price: ";
        cin >> price;
        system("cls");
        cout << "\nEnter count: ";
        cin >> count;
        system("cls");
        cout << "\nEnter number: ";
        cin >> number; // - если юзать Getline то после етой строчки все пропускаеться до строчки (89). (99 не выведет)
        cout << "\nok\n";
        system("cls");
    }
    void output()
    {
        cout << "\nName: " << name << endl;
        date.show_date();
        cout << "\nPrice: " << price;
        cout << "\nCount: " << count;
        cout << "\nCost: " << calculate_cost();
        cout << "\nNumber: " << number;
        system("pause");
        system("cls");  
    }
    void set_price()
    {
        cout << "\nEnter new price: ";
        cin >> price;
        system("cls");
    }
    void change_count()
    {
        cout <<"\nAdd or subtract?";
        string choise;
        bool B = true;
        while(B)
        {
            cin >> choise;
            if(choise != "add" || choise != "subtract")
                cout << "\nInvalid choise. Try again(add of subtract).";
            else B = false;
            system("cls");
        }
        cout << "\nEnter value:";
        int value;
        cin >> value;
        if (choise == "add")
            count =+value;
        if (choise == "subtract")
            count=-value;
        cout << "\nNew count: " << count;
        system("cls");
    }
    double calculate_cost()
    {
        return count*price;
    }
    void toString()
    {
        cout << "\nCost = " << calculate_cost();
 
    }
};
 
void main()
{
    /*Good arr1;
    arr1.input();
    arr1.output();
    Good arr2;
    arr2.input();
    arr2.output();
    Good arr3;
    arr3.input();
    arr3.output();*/
    Good arr[arr_size];
    for (int i=0;i<arr_size; i++)
    {
        arr[i].input();
        cout << "\nok\n"; // - тоже не выводиться, если вводить имя через getline(86 cтрока). сразу начинает вводиться поле - дата для следущего елемента
    }
    for (int i=0;i<arr_size; i++)
    {
        arr[i].output();
    }
    system("pause");
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.10.2013, 23:12
Ответы с готовыми решениями:

В Windows Forms некоректно работает метод, хотя в консоли работает правильно
//Данный метод должен заменять все элементы в массиве на 1, после найменьшего. public string getNewArray(int array) { ...

JFrame работает некоректно
не могу понять почему при запуске примерно только 2 раза из 10 окно отображается правильно, другие случаи фрейм отображается пустым и его...

Некоректно работает табуляция функции
Всем доброй поры суток! Есть задача: 1. y = e^ ( 0.2x^2) ; інтервал : відрізок , крок 0.1. С табулированием...

2
БНТУ ФИТР
 Аватар для kventin_zhuk
215 / 155 / 42
Регистрация: 26.12.2012
Сообщений: 382
11.10.2013, 23:26
В методе Input перед

C++
1
getline (cin, name);
добавьте

C++
1
cin.sync();
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 04:18
C++
1
(cin >> number).get();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.10.2013, 04:18
Помогаю со студенческими работами здесь

Функция _getch() работает некоректно
Привет, ребят. Учусь недавно. Столкнулся с такой вот проблемой: функция _getch() работает некоректно. Написал код чисто для примера: ...

Колесико на мыши некоректно работает
Уже вторая мышка так делает. Сначала все хорошо работало, я ничего не переустанавливала, драйверов не обновляла..А колесико перестало...

Некоректно работает регулярное выражение
Доброго времени суток! Как доработать это регулярное выражение под следующий файл(во вложении)? $file = file('data.txt'); ...

Некоректно работает файл css
В файле CSS не работает background-color. Все остальное работает исправно. Пробовал прописывать в самом файле html - все работает

Некоректно работает жесткий диск
Завис компьютер во время просмотра фильма, после перезагрузки диск не определялся в системе, в диспетчере устройств был в разделе Дисковые...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru