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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Aloir
217 / 217 / 13
Регистрация: 17.12.2010
Сообщений: 689
#1

Потоки. Ввод данных. - C++

14.08.2011, 15:06. Просмотров 947. Ответов 12
Метки нет (Все метки)

Если согласится на ввод второго человека, пропускается ввод его имени... вроде ввод все правильно, не знаю в чем беда
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
#include"stdafx.h"
#include <iostream>
using namespace std; 
 
class NameDataSet{
public:
    char FirthName[128];
    char LastName[128];
    int creditCard;
};
 
void getData(NameDataSet& cl)
{
    cout<<"Vvedite Familiu: ";
    cin.getline(cl.FirthName,128);
    cout<<"Vvedite Imya: ";
    cin.getline(cl.LastName,128);
    cout<<"Vvedite nomer kreditnoi karti: ";
    cin>>cl.creditCard;
 
}
 
void outData(NameDataSet& cl)
{
    cout <<endl<<cl.FirthName<<" "<<cl.LastName<<" "<<cl.creditCard;
}
int main()  
{
    const int max=20;
    NameDataSet nds[max]; //обьявление класса
    int count=0;
    char ch;
    do
    {
        count++;
        getData(nds[count-1]);
        cout<<endl<<"Vvesti es4e odnogo 4eloveka? Y or N?: ";
        cin>>ch;
    }while(tolower(ch)!='n' && count<=max);
    
    system("cls");
    for(int i=0;i<count;i++)
        outData(nds[i]);
 
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2011, 15:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Потоки. Ввод данных. (C++):

Ввод-вывод, потоки - C++
Где лучше всего описано, как работает система вводы-вывода в C++ и что такое потоки? И желательно что-нибудь почитать про систему...

Потоки. Бинарный ввод/вывод - C++
Нужно написать бинарный вывод в файл. По учебнику вроде бы что-то в этом роде: ofstream f(&quot;test.bin&quot;, std::ios::binary); if...

Потоки. Ввод-вывод. Ошибка на этапе компиляции. - C++
#include &lt;windows.h&gt; #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; void main() { char...

Потоки. Ввод элементов в массив через пробельный символ - C++
Ребят, как ввести десятичные числа в массив через пробел? Допустим, есть массив Arr, я ввожу: 250 5 77 и элементы принимают соответственно...

Как правильно заменить ввод данных простой на ввод с клавиатуры? - C++
#include &quot;stdafx.h&quot; #include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; int _tmain(int argc, _TCHAR* argv) ...

Потоковый ввод и ввод данных. Работа с числами - C++
Ввести с экрана два нат. числа. Найти частное первого на второе и определить, встречается ли среду его дробной части цифра 3( рассматривать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
14.08.2011, 15:10 #2
Ваш код не смотрел, но попробуйте напсать cin.get(); перед вводом этого имени: "пропускается ввод его имени...", скорее всего после предидущего ввода в потоке остался символ '\n'.
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
14.08.2011, 15:18 #3

Не по теме:

Да у меня такаеже проблема была.


В строке которую ты вводишь есть пробелы? если нет то можешь через cun>>...
Aloir
217 / 217 / 13
Регистрация: 17.12.2010
Сообщений: 689
14.08.2011, 15:26  [ТС] #4
Извиняюсь, после ввода 1 человека и последущих людей, пропускается фамиля, тоесть 1 член класса.
Нет, не помогло. Последний ввод был ввод цифр в целочисленное значение...
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
14.08.2011, 15:28 #5
ну или если хочешь с getline вот тебе твоя функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void getData(NameDataSet& cl)
{
        cin.sync();
        cout<<"Vvedite Familiu: ";
        cin.getline(cl.FirthName,128);
        cin.sync();
        cout<<"Vvedite Imya: ";
        cin.getline(cl.LastName,128);
        
        cout<<"Vvedite nomer kreditnoi karti: ";
        cin>>cl.creditCard;
 
}
Aloir
217 / 217 / 13
Регистрация: 17.12.2010
Сообщений: 689
14.08.2011, 15:28  [ТС] #6
Цитата Сообщение от Ree.exe Посмотреть сообщение

Не по теме:

Да у меня такаеже проблема была.


В строке которую ты вводишь есть пробелы? если нет то можешь через cun>>...
Нет пробелов, но если бы были? не впервой тоже сталкиваюсь, и хочу все-таки разобратся в чем тут дело...
Ree.exe
14.08.2011, 15:30
  #7

Не по теме:

Пост выше, все как ты хочешь через cin.getline()

m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,256
Завершенные тесты: 2
14.08.2011, 17:15 #8
cin.clear();

Добавлено через 2 минуты
как я понимаю дело в "ентер"е после ввода строки с именем или фамилией в потоке сидит код кнопки етнер, и при следующем вызове cin забирает его, вместо возможности ввести что то новое.
хотя могу и ошибаться в с++ не оч )
попробуй очищать поток cin
soon
14.08.2011, 19:00
  #9

Не по теме:

Зачем класс только с открытыми переменными? Классы (если верить книгам) созданы для того, чтобы ограничивать доступ к некоторым членам этого класса. Доступ к ним должен осуществляться через открытые функции этого же класса. Логичней было бы использовать структуру в данном случае, imho

Aloir
217 / 217 / 13
Регистрация: 17.12.2010
Сообщений: 689
14.08.2011, 21:46  [ТС] #10
Цитата Сообщение от soon Посмотреть сообщение

Не по теме:

Зачем класс только с открытыми переменными? Классы (если верить книгам) созданы для того, чтобы ограничивать доступ к некоторым членам этого класса. Доступ к ним должен осуществляться через открытые функции этого же класса. Логичней было бы использовать структуру в данном случае, imho

В данно случает, это был просто пример с книги, а так да, полсностью согласен, структура гораздо удобнее была бы

Добавлено через 6 минут
Цитата Сообщение от m1Rr0r Посмотреть сообщение
cin.clear();

Добавлено через 2 минуты
как я понимаю дело в "ентер"е после ввода строки с именем или фамилией в потоке сидит код кнопки етнер, и при следующем вызове cin забирает его, вместо возможности ввести что то новое.
хотя могу и ошибаться в с++ не оч )
попробуй очищать поток cin
А вот cin.clear() - не помогает, помогло cin.sync()
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 22:08 #11
Цитата Сообщение от Aloir Посмотреть сообщение
полсностью согласен, структура гораздо удобнее была бы
Ну почему же? А если getData и outData сделать функциями-членами? У вас и так что-то вроде thiscall выходит И на счёт выигрыша в удобности - сомневаюсь... Что так, что так.
soon
14.08.2011, 22:23
  #12

Не по теме:

Я не говорил, что будет удобнее. Просто структуры, как правило, делаются открытыми, и, дабы не нарушать это правило, предложил использовать структуру, если необхдимо сохранить доступность переменных. Если же нет, то кравивее будет сделать все одним классом, со скрытыми переменными и открытыми функциями.
Оставим это на усмотрение ТС

silentnuke
15.08.2011, 00:47     Потоки. Ввод данных.
  #13

Не по теме:

Цитата Сообщение от soon Посмотреть сообщение

Не по теме:

Зачем класс только с открытыми переменными? Классы (если верить книгам) созданы для того, чтобы ограничивать доступ к некоторым членам этого класса. Доступ к ним должен осуществляться через открытые функции этого же класса. Логичней было бы использовать структуру в данном случае, imho

а в чем уж такая глобальная разница класс или структура, если в с++ они отличаются всего-лишь доступом по-умолчанию?)
да и классы это в стиле с++, ведь структуры, оставлены для совместимости с С=)

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2011, 00:47
Привет! Вот еще темы с ответами:

ввод структурированных данных в файл и вывод данных из этого файла на экран (сделать хра-нилище данных в файле). - C++
Здравствуйте) помогите написать программу, осуществляющую ввод структурированных данных в файл и вывод данных из этого файла на экран...

Потоки данных - C++
Все наверно знают, что стандартные потоки (cout, cin, cerr, clog) ввода и вывода можно перенаправлять в файлы. Зачем тогда нужны классы...

Файловые потоки данных - C++
Помогите, пожалуйста! Надо написать программу, которая считывает из файла строки и сохраняет их в другой файл в обратном порядке. Я...

Потоки и сокрытие данных - C++
Всем доброго времени суток. Появился вопрос, касающийся потоков. Есть класс, в котором имеются функции для вывода внутренних данных в...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.08.2011, 00:47
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru