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

Не работает обращение к структуре - C++

Восстановить пароль Регистрация
 
abay_b
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 26
17.11.2013, 21:36     Не работает обращение к структуре #1
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
#include <iostream> 
#include <string>
using namespace std;
 
 
struct VA
{
   string Name;
   string Adres;
   string Car;
   string Number;
};
 
 
 
void ShowData(VA M[],int N)
{
   for (int i=0;i<N;i++)
    {
     cout<<M[i].Name<<endl;
     cout<<M[i].Adres<<endl;
     cout<<M[i].Car<<endl;
     cout<<M[i].Number<<endl;
     cout<<endl << endl;
    }
}
 
 
void GetData(VA M[],int N)
{
 
     for (int i=0;i<N;i++)
      {
        cout<<"Name: ";
        getline(cin,M[i].Name);
        
        cout<<"Adres: "; 
        getline(cin,M[i].Adres);
        
        cout<<"Car: "; 
        getline(cin,M[i].Car);
        
        cout<<"Mobile number: "; 
        getline(cin,M[i].Number);
        cout<<endl<<endl;
      }
}
 
 
int main()
{
      int N; 
      cout<<"Enter number of all drivers  N: ";
      cin>>N;
      
      
      VA M[500];
         
        GetData(M,N);
        ShowData(M,N);
       
    system("pause");
}
почему M[0].Name оно не вводит ?? может кто подсказать , код рабочий
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
17.11.2013, 22:15     Не работает обращение к структуре #2
Цитата Сообщение от abay_b Посмотреть сообщение
cin>>N;
C++
1
2
cin>>N;
cin.ignore(100, '\n');
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.11.2013, 10:19     Не работает обращение к структуре #3
C++
1
(cin>>N).get();
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
18.11.2013, 16:39     Не работает обращение к структуре #4
alsav22, чем тебе так не нравится ignore, что ты его везде пытаешься на get заменить? В данном случае, нужно не возвращать считаный символ(что делает get), а пропустить. Более того, поскольку идёт диалог с пользователем(cout<<"Name: "), пропускать нужно не только '\n', но и всё то, что не войдёт в запись целого числа.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.11.2013, 22:58     Не работает обращение к структуре #5
Цитата Сообщение от rangerx Посмотреть сообщение
В данном случае, нужно не возвращать считаный символ(что делает get), а пропустить.
И что? Извлечёт следующий символ из потока, что и нужно. Кому как наравится. Мне вариант с get(), для извлечения следующего '\n' из потока, больше наравится (запись проще), а работает ничем не хуже.
Цитата Сообщение от rangerx Посмотреть сообщение
Более того, поскольку идёт диалог с пользователем(cout<<"Name: "), пропускать нужно не только '\n', но и всё то, что не войдёт в запись целого числа.
Если продолжить такие рассуждения: а если пользователь ввёл больше 100 символов после числа, cin.ignore(100, '\n') поможет? А если пользователь вместо числа ввёл букву, ignore() поможет? Если так рассуждать, то тогда нужно делать полную защиту от неправильного ввода.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
19.11.2013, 03:23     Не работает обращение к структуре #6
Цитата Сообщение от alsav22 Посмотреть сообщение
И что? Извлечёт следующий символ из потока, что и нужно. Кому как наравится. Мне вариант с get(), для извлечения следующего '\n' из потока, больше наравится (запись проще), а работает ничем не хуже.
Ну, если "кому как нравится", тогда ладно...
Цитата Сообщение от alsav22 Посмотреть сообщение
Если продолжить такие рассуждения: а если пользователь ввёл больше 100 символов после числа, cin.ignore(100, '\n') поможет?
Дело не в 100 символах(никто мешает это значение изменить), а в решении задачи наиболее подходящим для этого способом. А вопрос "почему именно 100?" возникнет у TC сам собой.
Цитата Сообщение от alsav22 Посмотреть сообщение
А если пользователь вместо числа ввёл букву, ignore() поможет? Если так рассуждать, то тогда нужно делать полную защиту от неправильного ввода.
Вопрос не в полной защите(в данном случае, std::cin.exceptions(std::ios::failbit) хватило бы с головой), а в том, что ввод строки вида 123abc, снова приведёт TC к вопросу из первого поста, а получив совет в виде cin.get(который "проще"), вместо того, чтобы использовать специально предназначенный метод ignore, возьмётся за написание цикла.
alsav22
19.11.2013, 03:26     Не работает обращение к структуре
  #7

Не по теме:

Ваше мнение. Моё прежнее.

Yandex
Объявления
19.11.2013, 03:26     Не работает обращение к структуре
Ответ Создать тему
Опции темы

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