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

Создание 2D массива из объектов, используя указатели - C++

Восстановить пароль Регистрация
 
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
25.05.2012, 22:44     Создание 2D массива из объектов, используя указатели #1
Помогите решить простую задачу.
Нужно создать 2х мерный массив из объектов. Каждый объект это точка с координатой x and y. Массив должен создаваться с использованием указателей. Значение координат точки для каждого объекта вводится вручную.

Заранее спасибо за помощь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2012, 22:44     Создание 2D массива из объектов, используя указатели
Посмотрите здесь:

Составить программу обработки двухмерного массива используя указатели и функции... C++
Получить первые n-минимальных элементов массива,используя указатели C++
Поменять местами элементы массива с четными и нечетными индексами используя указатели C++
C++ Просуммировать элементы массива используя указатели
В одномерном массива найти элементы кратные 3, используя указатели C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
26.05.2012, 00:06     Создание 2D массива из объектов, используя указатели #2
какая размерность нужна? любая или конкретная. Я имею введу сколько у каждого элемента первой размерности соответствующих второй?

Добавлено через 54 минуты
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
#include<iostream>
 
class yx
{
    int x;
    int y;
public:
    yx(void);
    yx(int,int);
    ~yx(void);
    void put(void);
    void get(void);
};
 
yx::yx(void):x(0),y(0)
{}
 
yx::yx(int x,int y):x(x),y(y)
{}
 
yx::~yx(void)
{}
 
void yx::put(void)
{
    
    
    while(true)
    {
        std::cout << "Введите x : ";
        std::cin.unsetf(std::ios::skipws);
        std::cin >> x;
 
        if(std::cin.good())
        {
            std::cin.ignore(100,'\n');
            break;
        }
        
        std::cin.clear();
        std::cin.ignore(100,'\n');
        std::cerr << "Ошибка, введено не коректное значение!" << std::endl;
    }
 
    while(true)
    {
        std::cout << "Введите y : ";
        std::cin.unsetf(std::ios::skipws);
        std::cin >> y;
 
        if(std::cin.good())
        {
            std::cin.ignore(100,'\n');
            break;
        }
        
        std::cin.clear();
        std::cin.ignore(100,'\n');
        std::cerr << "Ошибка, введено не коректное значение!" << std::endl;
    }
    
}
 
void yx:: get(void)
{
    std::cout << "x = " << x << "  y = " << y << std::endl;
}
 
 
int main(void)
{
    setlocale(LC_ALL,"Russian_Russia.1251");
    const int M1 = 1 ,M2 =1, M3 = 2;
    //вариант 1
    yx** mas[M1];
 
    for(int i=0;i<M1;i++)
    {   
        mas[i] = new yx*[M3];
        for(int k = 0;k<M3;k++)
        {
            mas[i][k] = new yx;
            mas[i][k]->put();
        }
    }
    
    for(int i=0;i<M1;i++)
    {   
        
        for(int k = 0;k<M3;k++)
        {
            mas[i][k]->get();
        }
    }
 
    for(int i=0;i<M1;i++)
        delete mas[i];
 
    //вариант 2
    class yx*** yxmas = new yx**[M1];
    
    for(int i=0;i<M1;i++)
    {
        yxmas[i] = new yx*[M2];
        for(int k =0;k<M2;k++)
        { yxmas[i][k] = new yx[M3];
            for(int j =0;j<M3;j++)
               yxmas[i][k][j].put();
        }
    }
 
    for(int i = 0; i< M1 ; i++)
    {
        for(int k = 0; k < M2 ; k++)
        {
            for(int j =0;j<M3;j++)
             yxmas[i][k][j].get();
        }
    }
    
    for(int i = 0; i< M1 ; i++)
        delete yxmas[i];
 
    system("pause");
return 0;
}
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
26.05.2012, 14:04  [ТС]     Создание 2D массива из объектов, используя указатели #3
[QUOTE=stawerfar;3082012]какая размерность нужна? любая или конкретная. Я имею введу сколько у каждого элемента первой размерности соответствующих второй?

С размерностью спасибо все нормально поиграюсь с M1, M2, M3... Скажи, пожалуйста, если не сложно в трех словах чем отличается void main () от int main (void) ? заранее спасибо
Рыжий Лис
Просто Лис
 Аватар для Рыжий Лис
209 / 164 / 44
Регистрация: 17.05.2012
Сообщений: 611
Записей в блоге: 4
26.05.2012, 14:11     Создание 2D массива из объектов, используя указатели #4
Цитата Сообщение от Leeto Посмотреть сообщение
чем отличается void main () от int main (void)
может это зависит какой компилятор ты используешь.
А так это главная функция с которой выполняется программа
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
26.05.2012, 14:16     Создание 2D массива из объектов, используя указатели #5
Цитата Сообщение от Leeto Посмотреть сообщение
void main () от int main (void) ?
void main - это старый синтаксис, новые компиляторы этого не поддерживают т.к. такая запись была исключена из стандарта!
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
26.05.2012, 16:44  [ТС]     Создание 2D массива из объектов, используя указатели #6
Цитата Сообщение от stawerfar Посмотреть сообщение
void main - это старый синтаксис, новые компиляторы этого не поддерживают т.к. такая запись была исключена из стандарта!
Посоветуй, пожалуйста, на твой взгляд самый удобный компилятор для новичков под виндус... что очень много подсказок было, хелпов всплывающих выбиралок (методов, функций, переменных)
Рыжий Лис
Просто Лис
 Аватар для Рыжий Лис
209 / 164 / 44
Регистрация: 17.05.2012
Сообщений: 611
Записей в блоге: 4
26.05.2012, 17:00     Создание 2D массива из объектов, используя указатели #7
я пользуюсь mingw со средой Geany for win
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
26.05.2012, 17:23  [ТС]     Создание 2D массива из объектов, используя указатели #8
Цитата Сообщение от stawerfar Посмотреть сообщение
какая размерность нужна? любая или конкретная. Я имею введу сколько у каждого элемента первой размерности соответствующих второй?

Добавлено через 54 минуты
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
#include<iostream>
 
class yx
{
    int x;
    int y;
public:
    yx(void);
    yx(int,int);
    ~yx(void);
    void put(void);
    void get(void);
};
 
yx::yx(void):x(0),y(0)
{}
 
yx::yx(int x,int y):x(x),y(y)
{}
 
yx::~yx(void)
{}
 
void yx::put(void)
{
    
    
    while(true)
    {
        std::cout << "Введите x : ";
        std::cin.unsetf(std::ios::skipws);
        std::cin >> x;
 
        if(std::cin.good())
        {
            std::cin.ignore(100,'\n');
            break;
        }
        
        std::cin.clear();
        std::cin.ignore(100,'\n');
        std::cerr << "Ошибка, введено не коректное значение!" << std::endl;
    }
 
    while(true)
    {
        std::cout << "Введите y : ";
        std::cin.unsetf(std::ios::skipws);
        std::cin >> y;
 
        if(std::cin.good())
        {
            std::cin.ignore(100,'\n');
            break;
        }
        
        std::cin.clear();
        std::cin.ignore(100,'\n');
        std::cerr << "Ошибка, введено не коректное значение!" << std::endl;
    }
    
}
 
void yx:: get(void)
{
    std::cout << "x = " << x << "  y = " << y << std::endl;
}
 
 
int main(void)
{
    setlocale(LC_ALL,"Russian_Russia.1251");
    const int M1 = 1 ,M2 =1, M3 = 2;
    //вариант 1
    yx** mas[M1];
 
    for(int i=0;i<M1;i++)
    {   
        mas[i] = new yx*[M3];
        for(int k = 0;k<M3;k++)
        {
            mas[i][k] = new yx;
            mas[i][k]->put();
        }
    }
    
    for(int i=0;i<M1;i++)
    {   
        
        for(int k = 0;k<M3;k++)
        {
            mas[i][k]->get();
        }
    }
 
    for(int i=0;i<M1;i++)
        delete mas[i];
 
    //вариант 2
    class yx*** yxmas = new yx**[M1];
    
    for(int i=0;i<M1;i++)
    {
        yxmas[i] = new yx*[M2];
        for(int k =0;k<M2;k++)
        { yxmas[i][k] = new yx[M3];
            for(int j =0;j<M3;j++)
               yxmas[i][k][j].put();
        }
    }
 
    for(int i = 0; i< M1 ; i++)
    {
        for(int k = 0; k < M2 ; k++)
        {
            for(int j =0;j<M3;j++)
             yxmas[i][k][j].get();
        }
    }
    
    for(int i = 0; i< M1 ; i++)
        delete yxmas[i];
 
    system("pause");
return 0;
}
а можно тебя попросить, пожалуйста, переписать циклы while (true)
я просто совершенно не знаком с
cin.clean()
.ignore
.unsetf(std::ios::skipws)
и тд
пожалуйста, если не затруднит
Заранее спасибо

Добавлено через 19 минут
Цитата Сообщение от Leeto Посмотреть сообщение
а можно тебя попросить, пожалуйста, переписать циклы while (true)
я просто совершенно не знаком с
cin.clean()
.ignore
.unsetf(std::ios::skipws)
и тд
пожалуйста, если не затруднит
Заранее спасибо
ну или хотя бы не мог бы комментарии расставить, заранее спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2012, 18:57     Создание 2D массива из объектов, используя указатели
Еще ссылки по теме:

C++ Вывести на экран элементы массива используя указатели
C++ Есть три переменные. Используя указатели на указатели, поменять значение максимальной и минимальной переменной
Используются ли на практике указатели на указатели объектов? C++

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

Или воспользуйтесь поиском по форуму:
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
26.05.2012, 18:57     Создание 2D массива из объектов, используя указатели #9
Вариант №1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
while(true) //получить значение х от пользователя с проверкой вводимого значения
    {
        std::cout << "Введите x : ";
        std::cin.unsetf(std::ios::skipws); //не игнарировать пробелы при вводе
        std::cin >> x; 
 
        if(std::cin.good()) //если пользователь ввел число а не символ
        {
            std::cin.ignore(100,'\n'); //удалить лишние символы из потока
            break; //выход из цикла т.к. данные коректы
        }
        
        std::cin.clear(); //сбросить поток
        std::cin.ignore(100,'\n'); //удалить лишние символы из потока
        //сообщить об ошибке и продолжить получение данных от пользователя
        std::cerr << "Ошибка, введено не коректное значение!" << std::endl; 
    }
Вариант №2
C++
1
2
3
    
        std::cout << "Введите х : ";
        std::cin >> х;
Для 'у' , естественно по аналогии
Yandex
Объявления
26.05.2012, 18:57     Создание 2D массива из объектов, используя указатели
Ответ Создать тему
Опции темы

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