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

динамический массив - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
fruktik
 Аватар для fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
09.03.2011, 19:09     динамический массив #1
я пытался массив P[n] сделать динамическим с помощью вот этого
C++
1
2
3
4
5
int ** P, n;
    cin >> n;
    P = new int * [n];
    for (int i = 0; i < n; i++)
        P[i] = new int [n];
но он здесь у меня привязан к структуре person и выдает ошибок кучу(с простыми массивами все проходило)
как вот это реализовать ?)
C++
1
2
3
4
5
6
7
8
9
struct person
{
    .....
};
int main(int argc, char *argv[])
{   
      ......
    
    person P[n];
Добавлено через 43 минуты
хеелп
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
no0ker
100 / 87 / 4
Регистрация: 17.12.2010
Сообщений: 416
09.03.2011, 19:18     динамический массив #2
по моему, вы создаете не массив P[n], а двумерный P[n][n].
fruktik
 Аватар для fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
09.03.2011, 19:19  [ТС]     динамический массив #3
no0ker, кстати возможно...потому, что я взял это из примера динамического массива двумерного.....а как тогда описать здесь динамический одномерный
no0ker
100 / 87 / 4
Регистрация: 17.12.2010
Сообщений: 416
09.03.2011, 19:24     динамический массив #4
C++
1
2
3
    int n, *a;
    std::cin >> n;
    a = new int[n];
и как следует понимать "но он здесь у меня привязан к структуре person и выдает ошибок кучу"?
fruktik
 Аватар для fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
09.03.2011, 19:36  [ТС]     динамический массив #5
no0ker, пардон если чего-то не так сказал))
просто обычный массив я так объявлял и все работало....а тут еще и со структурами, вот я и думал, что не туда куда-то вставляю))
ща попробую

Добавлено через 3 минуты
блин...выдает ошибки типа требуется конст. выражение, не удается выделить память для массива нулевого размера....вощем n не определяется все равно....
вот начало кода
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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <windows.h>
 
using namespace std;
struct person
{
    string name1;
    string name2;
    char sex;
    int year;
    float money;
    string adress;
};
int main(int argc, char *argv[])
{   
    float max, min; 
    string max1, min1;
    setlocale (LC_ALL, "Russian");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int n, *a;
    cin >> n;
    a = new int[n];
 
    person P[n];
IrineK
Заблокирован
09.03.2011, 19:44     динамический массив #6
fruktik, указатель на динамический массив из твоих "пёрсонов" объвляется так:
C++
1
person *p = new person[n];
fruktik
 Аватар для fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
09.03.2011, 19:53  [ТС]     динамический массив #7
IrineK, что б я без вас делал)
а чтобы сделать это же с двумерным массивом?
так:
C++
1
2
3
4
5
6
int n, **a;
    cin >> n;
    a = new int*[n];
    for (int i = 0; i < n; i++)
        a[i] = new int [n];
    person **p = new person[n][n];
так?
IrineK
Заблокирован
09.03.2011, 19:59     динамический массив #8
fruktik, а что можно записать в двумерный массив "пёрсонов"?
fruktik
 Аватар для fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
09.03.2011, 20:02  [ТС]     динамический массив #9
я так и знал что будет такой вопрос)))
подумал уже после того как оставил пост...
я в общем смысле имел ввиду
вообще же какой-нибудь структуре можно присвоить n-мерный массив?или ток 1-мерный
IrineK
Заблокирован
09.03.2011, 20:19     динамический массив #10
А, придумала,
двумерный массив "пёрсонов" - полк на плацу (если кто-то заинтересуется индивидуальностью каждого в общей массе пушечного мяса).
трехмерный массив - пчелы, летящие роем в форме параллелограмма (причем, каждая пчела также несет индивидуальные признаки).
Теперь можно подумать и про указатели...
no0ker
09.03.2011, 20:26
  #11

Не по теме:

двумерный массив персон это список учеников в школе. причем первый индекс - это класс. =)

fruktik
 Аватар для fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
09.03.2011, 20:28  [ТС]     динамический массив #12
а если этот двумерный полк(2х2 к примеру) представить в виде линейного из 4-х элементов?
хотя, так некоторые характеристики потеряются....вроде так

Добавлено через 1 минуту
no0ker, здесь все по теме)
C++
1
2
3
4
5
6
int n, **a;
    cin >> n;
    a = new int*[n];
    for (int i = 0; i < n; i++)
                a[i] = new int [n];
    person **p = new person[n][n];
вот так вот представить учеников будет правильным?
no0ker
100 / 87 / 4
Регистрация: 17.12.2010
Сообщений: 416
09.03.2011, 20:30     динамический массив #13
C++
1
2
3
4
5
6
    int n;
    person **a;
    cin >> n;
    a = new person*[n];
    for (int i = 0; i < n; i++)
                a[i] = new person [n];
а если вот так? (взял ваш код и заменил INT на PERSON)
fruktik
 Аватар для fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
09.03.2011, 20:35  [ТС]     динамический массив #14
no0ker, надеюсь это правильно, и выглядит вполне себе так "к месту")
я просто делаю с одномерным массивом, а про n-мерные, для интереса, углубился
по анологии одномерный можно представить:
C++
1
2
3
4
  int n;
  person *a;
    cin >> n;
    a = new person*[n];
пойдет?
no0ker
100 / 87 / 4
Регистрация: 17.12.2010
Сообщений: 416
09.03.2011, 20:40     динамический массив #15
сдается мне, что нет. =(

Добавлено через 54 секунды
во второй строке объявляешь указатель на персону.
а в пятой - присваиваешь ему указатель на указатель на персону.
fruktik
 Аватар для fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
09.03.2011, 20:40  [ТС]     динамический массив #16
no0ker,
C++
1
2
3
4
int n; 
    person *P;
    cin >> n;
    P = new person[n];
все пошло как-то))0...сам не понимаю
это отрывок кода из проги, которую щас удачно запустил
там по ходу звездочку надо было убрать...
и кстати звездочки это ж n-мерность массива?я допер наконец?
IrineK
Заблокирован
09.03.2011, 20:45     динамический массив #17
fruktik, в пятой строке a = new person*[n]; - зведочка это "привет" от двумерного массива.
Лучше так:
int n; cin >> n;
person *a = new person[n];

cin, правда брыкается. И приходится дописывать такое:
Сверху:
C++
1
#include<limits>
По ходу:
C++
1
2
3
int n; cin >> n;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
person *a = new person[n];
no0ker
100 / 87 / 4
Регистрация: 17.12.2010
Сообщений: 416
09.03.2011, 20:50     динамический массив #18
IrineK,
C++
1
2
3
int n; cin >> n;
//cin.ignore(numeric_limits<streamsize>::max(), '\n');
person *a = new person[n];
у меня работает (code::blocks & mingw)
fruktik
 Аватар для fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
09.03.2011, 20:53  [ТС]     динамический массив #19
насчет звездочек и "приветов": если массив n-мерный то по ходу этого описания по одному привету отрываем?так?))

а насчет кода:
C++
1
2
int n; cin >> n;
person *a = new person[n];
у меня c cinом все нормально....ничего не дописывая работает..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2011, 20:53     динамический массив
Еще ссылки по теме:

Динамический массив C++
C++ Переделать динамический массив на статический массив
C++ Массив и память. Как создать динамический массив?

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

Или воспользуйтесь поиском по форуму:
IrineK
Заблокирован
09.03.2011, 20:53     динамический массив #20
Пишу по опыту. Приходится плодить по десятку структур на день, особенно сейчас (в ВУЗах типа изучают).
Проблемы возникают не сразу, а при инициализации элементов структуры.
Yandex
Объявления
09.03.2011, 20:53     динамический массив
Ответ Создать тему
Опции темы

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