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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
#1

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

09.03.2011, 19:09. Просмотров 1280. Ответов 25
Метки нет (Все метки)

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

Можно ли в классе создавать массив переменной длинны. Например динамический массив? - C++
Динамические массивы привлекают больше. :)

Заполнить динамический массив из файла и записать массив обратно в файл - C++
Подскажите пожалуйста функцию которая будет заполнять Динамический массив из файла и обратную которая этот массив запишет в файл=)

Написать функцию принимающую массив и возвращающую указатель на динамический массив - C++
Написать функцию принимающую массив и возвращающую указатель на динамический массив содержащий первые n нaибольших чисел. Как сделать...

динамический массив (Целое число разложить на массив простых множителей) - C++
Доброго времени суток всем. Целое число необходимо разложить на массив простых множителей. Столкнулся с проблемой, мне нужно, чтобы...

Массив: передать динамический массив в функцию и записать в каждый элемент строку из файла - C++
задача: передать динамический массив в функцию, и записать в каждый элемент строку из файла. количество строк известно вот что у меня...

Как преобразовать массив в динамический? Массив вычисляет сумму элементов каждой диагонали матрицы - C++
Ошибка : Вызвано исключение по адресу 0x00BB2F4F в Проект6.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDFDFE05. #...

25
no0ker
101 / 88 / 4
Регистрация: 17.12.2010
Сообщений: 416
09.03.2011, 19:18 #2
по моему, вы создаете не массив P[n], а двумерный P[n][n].
1
fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
09.03.2011, 19:19  [ТС] #3
no0ker, кстати возможно...потому, что я взял это из примера динамического массива двумерного.....а как тогда описать здесь динамический одномерный
0
no0ker
101 / 88 / 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 и выдает ошибок кучу"?
0
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];
0
IrineK
Заблокирован
09.03.2011, 19:44 #6
fruktik, указатель на динамический массив из твоих "пёрсонов" объвляется так:
C++
1
person *p = new person[n];
1
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];
так?
0
IrineK
Заблокирован
09.03.2011, 19:59 #8
fruktik, а что можно записать в двумерный массив "пёрсонов"?
0
fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
09.03.2011, 20:02  [ТС] #9
я так и знал что будет такой вопрос)))
подумал уже после того как оставил пост...
я в общем смысле имел ввиду
вообще же какой-нибудь структуре можно присвоить n-мерный массив?или ток 1-мерный
0
IrineK
Заблокирован
09.03.2011, 20:19 #10
А, придумала,
двумерный массив "пёрсонов" - полк на плацу (если кто-то заинтересуется индивидуальностью каждого в общей массе пушечного мяса).
трехмерный массив - пчелы, летящие роем в форме параллелограмма (причем, каждая пчела также несет индивидуальные признаки).
Теперь можно подумать и про указатели...
1
no0ker
09.03.2011, 20:26
  #11

Не по теме:

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

1
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];
вот так вот представить учеников будет правильным?
0
no0ker
101 / 88 / 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)
1
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];
пойдет?
0
no0ker
101 / 88 / 4
Регистрация: 17.12.2010
Сообщений: 416
09.03.2011, 20:40 #15
сдается мне, что нет. =(

Добавлено через 54 секунды
во второй строке объявляешь указатель на персону.
а в пятой - присваиваешь ему указатель на указатель на персону.
0
09.03.2011, 20:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2011, 20:40
Привет! Вот еще темы с ответами:

Создать динамический массив (Если чётных чисел больше, то массив должен быть укорочен на 2 элемента) - C++
Создать динамический массив из 8 случайных целых чисел из отрезка и вывести его на экран . Если в массиве чётных чисел оказалось...

Двумерный массив (поменять статический массив на динамический) - C++
Нужно поменять статический массив на динамический с выделением памяти #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; ...

Массив и память. Как создать динамический массив? - C++
не могу исправить ошибки. И нужен динамический массив я что-то попробовала для его создания но ничего не вышло #include &quot;stdafx.h&quot; ...

Переделать динамический массив на статический массив - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; int main() { int dim, counter_1 = 1, counter_2 =...


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

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

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