Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Lord007
0 / 0 / 1
Регистрация: 06.11.2014
Сообщений: 156
1

Как глобально объявить указатель структуры, и переменные хранящиеся в ней?

23.04.2015, 22:12. Просмотров 362. Ответов 4
Метки нет (Все метки)

Как глобально объявить указатель структуры, и переменные хранящиеся в ней? Вот указатель вроде объявил, но всё же есть ошибки.
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
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <string>
 
using namespace std;
int MAX;
circle* arrFigure = new circle[MAX];
struct coordinates 
{
    int X; 
    int Y; 
};
 
struct circle
{
    float radius;
    coordinates built; //вкладываем одну структуру в определение второй
    void show() //создаем функцию, которая принимает структуру, как параметр
    {
        cout << "Радиус: " << radius << " см " << endl;
        cout << "Координата точки: " << "(" << built.X << ";" << built.Y << ")" << "\n\n\n";
        ;
    }
};
 
void bubble(int* arrFigure, int MAX)
{
    int tmp, i, j;
 
    for (i = 0; i < MAX - 1; ++i) // i - номер прохода
    {
        for (j = 0; j < MAX - 1; ++j) // внутренний цикл прохода
        {
            if (arrFigure[j + 1] < arrFigure[j])
            {
                tmp = arrFigure[j + 1];
                arrFigure[j + 1] = arrFigure[j];
                arrFigure[j] = tmp;
            }
        }
    }
}
 
int menu() {
    int menu;
    do{
    
        cout << "Vuberite punkt menu" << endl;
        cout << "1 - Vivod inform iz file " << endl;
        cout << "2 - input info" << endl;
        cout << "3 - EXIT" << endl;
        cin >> menu;
        switch (menu){
        case 1:; break;
        case 2:int InputData(); break;
        case 3:; break;
        default: menu = 0;
        }
    } while (menu != 0);
    return 0;
}
int InputData(){
    cout << "Введите число окружностей: ";
    cin >> MAX;
 
    for (int i = 0; i < MAX; i++){
        arrFigure[i].built.X = rand() % 11;
        arrFigure[i].built.Y = rand() % 11;
        arrFigure[i].radius = rand() % 11;
    }
}
 
int OutputSortArr() {
    cout << "Отсотированый массив" << endl;
    for (int i = 0; i < MAX; i++){
        arrFigure[i].show();
    }
}
 
int OutputGenerate(){
    cout << "Сгенерированный массив" << endl;
    for (int i = 0; i < MAX; i++){
        arrFigure[i].show();
    }
}
 
int main()
{
    menu();
    int InputData();
    void bubble(int* arrFigure, int MAX);
    int OutputGenerate();
 
    delete[] arrFigure;
    system("pause");
    return 0;
}
Программа еще не окончена, но хотелось бы исправить ошибки.
Код
error C2143: синтаксическая ошибка: отсутствие ";" перед "*"	
error C2228: выражение слева от ".built" должно представлять класс, структуру или объединение	
error C2228: выражение слева от ".X" должно представлять класс, структуру или объединение	
error C2228: выражение слева от ".built" должно представлять класс, структуру или объединение	
error C2228: выражение слева от ".Y" должно представлять класс, структуру или объединение	
error C2228: выражение слева от ".radius" должно представлять класс, структуру или объединение	
error C2228: выражение слева от ".show" должно представлять класс, структуру или объединение	
выражение слева от ".show" должно представлять класс, структуру или объединение
Как глобально использовать элементы структуры?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2015, 22:12
Ответы с готовыми решениями:

Объявить указатель на структуру внутри структуры
Объявить указатель на структуру внутри структуры. Добавлено через 5 часов 24...

Как объявить переменную глобально?
здравствуйте, в книге шилдта есть такой код #include &lt;iostream&gt; using...

Как объявить ofstream глобально
хочу чтобы не только в main но и во всех ф-ях было доступно ofstream...

Как глобально объявить массив не заданной размерности
Цель: при нажатии на button1 создается массив и заполняется рандомными числами,...

Как передать в функцию указатель на структуру, если эта структура не определена глобально?
Проблема заключается в следующем: предположим есть некая структура, которая...

4
zss
Модератор
Эксперт С++
7457 / 6834 / 4316
Регистрация: 18.12.2011
Сообщений: 18,079
Завершенные тесты: 1
23.04.2015, 22:34 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
#include <iostream>
#include <windows.h>
#include <string>
 
using namespace std;
struct coordinates 
{
    double X; 
    double Y; 
};
 
struct circle
{
    double radius;
    coordinates built; //вкладываем одну структуру в определение второй
    void show() //создаем функцию, которая принимает структуру, как параметр
    {
        cout << "Радиус: " << radius << " см " << endl;
        cout << "Координата точки: " << "(" << built.X << ";" << built.Y << ")" << "\n\n\n";
        ;
    }
};
//------Глобальные переменные---------
int MAX;
circle* arrFigure=NULL;
//-------------------------------------
void bubble()
{
    int i, j;
 
    for (i = 0; i < MAX - 1; ++i) // i - номер прохода
    {
        for (j = 0; j < MAX - 1; ++j) // внутренний цикл прохода
        {
            if (arrFigure[j + 1].radius < arrFigure[j].radius)
            {
                circle tmp = arrFigure[j + 1];
                arrFigure[j + 1] = arrFigure[j];
                arrFigure[j] = tmp;
            }
        }
    }
}
 
int menu() {
    int menu;
    do{
    
        cout << "Vuberite punkt menu" << endl;
        cout << "1 - Vivod inform iz file " << endl;
        cout << "2 - input info" << endl;
        cout << "3 - EXIT" << endl;
        cin >> menu;
        switch (menu){
        case 1:; break;
        case 2:int InputData(); break;
        case 3:; break;
        default: menu = 0;
        }
    } while (menu != 0);
    return 0;
}
void InputData(){
    cout << "Введите число окружностей: ";
    cin >> MAX;
    delete[] arrFigure;
    arrFigure = new circle[MAX];
 
    for (int i = 0; i < MAX; i++){
        arrFigure[i].built.X = rand() % 11;
        arrFigure[i].built.Y = rand() % 11;
        arrFigure[i].radius = rand() % 11;
    }
}
 
void OutputSortArr() {
    cout << "Отсотированый массив" << endl;
    for (int i = 0; i < MAX; i++){
        arrFigure[i].show();
    }
}
 
void OutputGenerate(){
    cout << "Сгенерированный массив" << endl;
    for (int i = 0; i < MAX; i++){
        arrFigure[i].show();
    }
}
 
int main()
{
    menu();
    InputData();
    bubble();
    OutputGenerate();
 
    delete[] arrFigure;
    system("pause");
    return 0;
}
1
Lord007
0 / 0 / 1
Регистрация: 06.11.2014
Сообщений: 156
26.04.2015, 13:33  [ТС] 3
zss, спасибо за помощь, но я тут кое-что изменил и решил проверить меню, есть проблема. Почему у меня после вызова каждого пункта меню вновь всплывает меню, и как это исправить?
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
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <string>
 
using namespace std;
struct coordinates
{
    double X;
    double Y;
};
 
struct circle
{
    double radius;
    coordinates built; //вкладываем одну структуру в определение второй
    void show() //создаем функцию, которая принимает структуру, как параметр
    {
        cout << "Радиус: " << radius << " см " << endl;
        cout << "Координата точки: " << "(" << built.X << ";" << built.Y << ")" << "\n\n\n";
        ;
    }
};
//------Глобальные переменные---------
int MAX;
circle* arrFigure = NULL;
//-------------------------------------
void bubble()
{
    int i, j;
 
    for (i = 0; i < MAX - 1; ++i) // i - номер прохода
    {
        for (j = 0; j < MAX - 1; ++j) // внутренний цикл прохода
        {
            if (arrFigure[j + 1].radius < arrFigure[j].radius)
            {
                circle tmp = arrFigure[j + 1];
                arrFigure[j + 1] = arrFigure[j];
                arrFigure[j] = tmp;
            }
        }
    }
}
 
int menu() {
    int menu;
    do{
 
        cout << "Vuberite punkt menu" << endl;
        cout << "1 - Vivod inform iz file " << endl;
        cout << "2 - input data" << endl;
        cout << "3 - EXIT" << endl;
        cin >> menu;
        switch (menu){
        case 1:cout << "punkt menu 1 Rabotaet" << endl; break;
        case 2:cout << "punkt menu 2 Rabotaet" << endl; break;
        case 3:cout << "punkt menu 3 Rabotaet" << endl; break;
        default: menu = 0;
        }
    } while (menu != 0);
    return 0;
}
void InputData(){
    cout << "Введите число окружностей: ";
    cin >> MAX;
    delete[] arrFigure;
    arrFigure = new circle[MAX];
 
    for (int i = 0; i < MAX; i++){
        arrFigure[i].built.X = rand() % 11;
        arrFigure[i].built.Y = rand() % 11;
        arrFigure[i].radius = rand() % 11;
    }
}
 
void OutputSortArr() {
    cout << "Отсотированый массив" << endl;
    for (int i = 0; i < MAX; i++){
        arrFigure[i].show();
    }
}
 
void OutputGenerate(){
    cout << "Сгенерированный массив" << endl;
    for (int i = 0; i < MAX; i++){
        arrFigure[i].show();
    }
}
 
int main()
{
    menu();
    
 
    delete[] arrFigure;
    system("pause");
    return 0;
}
0
zss
Модератор
Эксперт С++
7457 / 6834 / 4316
Регистрация: 18.12.2011
Сообщений: 18,079
Завершенные тесты: 1
26.04.2015, 17:27 4
При вводе нуля происходит выход.
0
Lord007
0 / 0 / 1
Регистрация: 06.11.2014
Сообщений: 156
26.04.2015, 17:58  [ТС] 5
zss, об этом я знаю, но дело не в этом. Со своей проблемой я разобрался. У меня не работали функции через меню, а всё из-за того что была нарушена последовательность в коде, функция меню была в коде выше чем вызываемые функции. Поставил как нужно и всё заработало)
0
26.04.2015, 17:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2015, 17:58

Как локальную переменную сделать глобально, при это сохранив накопленное в ней значение?
Ребята, помогите, пожалуйста. Вот, например, есть такой код: for (int...

Почему нельзя объявить динамический массив глобально
вот код #include &lt;iostream&gt; #include &lt;string&gt; int w = 0; string *s = new...

Как объявить указатель на массив?
Читаю книгу С.Прата, наткнулся на это: short (*pas) = &amp;tell; // pas указывает...


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

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

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