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

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

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

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

11.03.2014, 19:21. Просмотров 370. Ответов 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;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2014, 19:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача динамической структуры аргументом функции (C++):

Передача в функцию и возврат из функции динамической матрицы - C++
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; using namespace std; const int n = 8; double ** f (double ** mas, int n) { ...

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

Структуры и функции. Передача указателя на структуру в функцию - C++
Всем привет, ребята! Вообще ничего не соображаю сейчас, так как ночь. А кофе нету. Короче, ближе к делу. Хочу написать функцию, которая...

Удаление динамической структуры - C++
Здраствуйте, вот кусок кода: #define max 32 typedef enum lightColor_t { RED, BLUE,

Удаление динамической структуры структур - C++
Здравствуйте! Есть две структуры: struct TRow { int m; double *elem; }; struct TMatr//масив рядків

Удаление структуры из динамической памяти - C++
struct aTapeElement { char Operator; float Operand; aTapeElement *NextElement; }; Это кусок кода из 15-го урока книги...

2
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;
}
Компилируется теперь (исправил), но код сам не проверял
1
haseki
3 / 3 / 1
Регистрация: 02.11.2013
Сообщений: 162
13.03.2014, 20:55  [ТС] #3
mustimur, большое спасибо, всё работает)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 20:55
Привет! Вот еще темы с ответами:

Запись динамической структуры в файл. - C++
Доброго времени суток! У меня такой вопрос: Есть динамическая структура типа: массив каждый элемент которого может хранить данные и...

Вызов функции одной динамической библиотеки из другой динамической библиотеки - C++
Добрый день! Помогите пожалуйста разобраться со следующим вопросом. Возможно ли из одной библиотеки передать параметры для...

Передача динамической матрицы в функцию - C++
Здравствуйте подскажите пожалуйста, как можно передать динамическую матрицу, заданную и инициализированную следующим образом ...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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