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

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

Войти
Регистрация
Восстановить пароль
 
haseki
3 / 3 / 1
Регистрация: 02.11.2013
Сообщений: 162
#1

Передача динамической структуры аргументом функции - C++

11.03.2014, 19:21. Просмотров 357. Ответов 2
Метки нет (Все метки)

Помогите, пожалуйста, обнаружить и исправить ошибки. Точнее, компилятор-то их отыскивает, но в чем именно ошибка, в какой идее, синтаксисе и т.д...

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
// Structure static.cpp: определяет точку входа для консольного приложения.
//
#include <cstdlib>
#include <iostream>
#include <cstring>
#define N 15
#define M 8
using namespace std;
struct NOTE
{
       char name[N];
       char surname [N];
       char phone [N];
       int birth_day, birth_month, birth_year;
             
};
NOTE *q; //Указатель  на структуру NOTE.
//Функция ввода элементов в динамическую структуру.
void input(NOTE *q)
{
     
      for (int i=0; i<M; i++)
     {
        cout << "Введите имя: ";     
        cin >> q[i].name;
        cout << "Введите фамилию: ";     
        cin >> q[i].surname;
     
        cout << "Введите номер телефона: ";     
        cin >> q[i].phone;
     
        cout << "Введите дату рождения (в формате ДД ММ ГГ): ";     
        cin >> q[i].birth_day >> q[i].birth_month >> q[i].birth_year; 
        cout << "\n";
        cout << "___________________\n";
        cout << "\n";
     }
}
void sort(NOTE *q)
{
     NOTE buf;
      for (int i=0; i<M-1; i++) //Количество проходов по структуре.
       { 
           for (int j=M-2; j>=i; j--)//Перестановка.
           {
             if (q[j].phone[0] > q[j+1].phone[0])
                  {
                                buf = q[j];
                                q[j] = q[j+1];
                                q[j+1] = buf;
                  }
             if(q[j].phone[0] == q[j+1].phone[0])
                {
                                  if(q[j].phone[1] > q[j+1].phone[1])
                     {
                                buf = q[j];
                                q[j] = q[j+1];
                                q[j+1] = buf;
                     }
                }
                 if(q[j].phone[1] == q[j+1].phone[1])
                    {
                                      if(q[j].phone[2] > q[j+1].phone[2])
                        
               {
                                buf = q[j];
                                q[j] = q[j+1];
                                q[j+1] = buf;
               }
                     }
           }
       }
}
     
void search(NOTE *q) 
{
     char surname1[N];
    cout << "\n";
    cout << "-------------------\n";
    cout << "Введите фамилию: \n";
    cin >> surname1;
    cout << "\n";
    cout << "-------------------\n";
  bool flag = false;
    for (int i=0; i<M; i++)
       {
           if (strstr(q[i].surname, surname1))
           { 
                 flag = true;
                 cout << "Имя: " << q[i].name << "\n";
                 cout << "Номер телефона: " <<  q[i].phone << "\n";
                 cout << "Дата рождения: " << q[i].birth_day << "/" <<  q[i].birth_month << "/" << q[i].birth_year << "\n";
           }
           
       }
    if (flag == false)
    {
       cout << "Людей с такой фамилией не обнаружено.\n";
    }   
}
int main()
{
    setlocale (0, "Russian");
    NOTE a[M];
    NOTE *p;
    p = new NOTE[M];
    
   for (int i=0; i<M; i++) //начальная расстановка указателей
    {
        p[i] = &a[i];
    }
    input (p);
    sort (p);
    for (int i=0; i<M; i++)
     {
        cout << "Имя: " << p[i]->name << "\n"; 
        cout << "Фамилия: " <<  p[i]->surname << "\n";
        cout << "Номер телефона: " << p[i]->phone << "\n";
        cout << "Дата рождения: " <<  p[i]->birth_day << "/" << p[i]->birth_month << "/" << p[i]->birth_year << "\n";
          
     }
   search (p);
   delete a;
   delete p;
    
    system("pause");
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2014, 19:21     Передача динамической структуры аргументом функции
Посмотрите здесь:
C++ Передача в функцию и возврат из функции динамической матрицы
C++ Передача объекта аргументом в метод
Структуры и функции. Передача указателя на структуру в функцию C++
C++ Удаление динамической структуры
C++ Удаление структуры из динамической памяти
Запись динамической структуры в файл. C++
C++ Передача динамической матрицы в функцию
Структуры выделение динамической памяти под массивы C++
Создание динамической конструкции из элементов структуры (дерево) C++
Выводит ошибку при удалении динамической структуры C++
Удаление и добавление элементов динамической структуры данных C++
Выбрать название динамической структуры (назвать класс) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
11.03.2014, 20:04     Передача динамической структуры аргументом функции #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
// Structure static.cpp: определяет точку входа для консольного приложения.
//
#include <cstdlib>
#include <iostream>
#include <cstring>
#define N 15
#define M 8
using namespace std;
struct NOTE
{
       char name[N];
       char surname [N];
       char phone [N];
       int birth_day, birth_month, birth_year;
             
};
NOTE *q; //Указатель  на структуру NOTE.
//Функция ввода элементов в динамическую структуру.
void input(NOTE *q)
{
     
      for (int i=0; i<M; i++)
     {
        cout << "Введите имя: ";     
        cin >> q[i].name;
        cout << "Введите фамилию: ";     
        cin >> q[i].surname;
     
        cout << "Введите номер телефона: ";     
        cin >> q[i].phone;
     
        cout << "Введите дату рождения (в формате ДД ММ ГГ): ";     
        cin >> q[i].birth_day >> q[i].birth_month >> q[i].birth_year; 
        cout << "\n";
        cout << "___________________\n";
        cout << "\n";
     }
}
void sort(NOTE *q)
{
     NOTE buf;
      for (int i=0; i<M-1; i++) //Количество проходов по структуре.
       { 
           for (int j=M-2; j>=i; j--)//Перестановка.
           {
             if (q[j].phone[0] > q[j+1].phone[0])
                  {
                                buf = q[j];
                                q[j] = q[j+1];
                                q[j+1] = buf;
                  }
             if(q[j].phone[0] == q[j+1].phone[0])
                {
                                  if(q[j].phone[1] > q[j+1].phone[1])
                     {
                                buf = q[j];
                                q[j] = q[j+1];
                                q[j+1] = buf;
                     }
                }
                 if(q[j].phone[1] == q[j+1].phone[1])
                    {
                                      if(q[j].phone[2] > q[j+1].phone[2])
                        
               {
                                buf = q[j];
                                q[j] = q[j+1];
                                q[j+1] = buf;
               }
                     }
           }
       }
}
     
void search(NOTE *q) 
{
     char surname1[N];
    cout << "\n";
    cout << "-------------------\n";
    cout << "Введите фамилию: \n";
    cin >> surname1;
    cout << "\n";
    cout << "-------------------\n";
  bool flag = false;
    for (int i=0; i<M; i++)
       {
           if (strstr(q[i].surname, surname1))
           { 
                 flag = true;
                 cout << "Имя: " << q[i].name << "\n";
                 cout << "Номер телефона: " <<  q[i].phone << "\n";
                 cout << "Дата рождения: " << q[i].birth_day << "/" <<  q[i].birth_month << "/" << q[i].birth_year << "\n";
           }
           
       }
    if (flag == false)
    {
       cout << "Людей с такой фамилией не обнаружено.\n";
    }   
}
int main()
{
    setlocale (0, "Russian");
    NOTE a[M];
    NOTE *p;
    p = new NOTE[M];
    
   for (int i=0; i<M; i++) //начальная расстановка указателей
    {
        p[i] = a[i];
    }
    input (p);
    sort (p);
    for (int i=0; i<M; i++)
     {
        cout << "Имя: " << p[i].name << "\n"; 
        cout << "Фамилия: " <<  p[i].surname << "\n";
        cout << "Номер телефона: " << p[i].phone  << "\n";
        cout << "Дата рождения: " <<  p[i].birth_day << "/" << p[i].birth_month << "/" << p[i].birth_year << "\n";
          
     }
   search (p);
   delete a;
   delete p;
    
    system("pause");
    return 0;
}
Компилируется теперь (исправил), но код сам не проверял
haseki
3 / 3 / 1
Регистрация: 02.11.2013
Сообщений: 162
13.03.2014, 20:55  [ТС]     Передача динамической структуры аргументом функции #3
mustimur, большое спасибо, всё работает)
Ответ Создать тему
Опции темы

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