Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
fruktik
32 / 32 / 1
Регистрация: 03.03.2011
Сообщений: 302
1

динамический массив

09.03.2011, 19:09. Просмотров 1333. Ответов 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
Ответы с готовыми решениями:

Создать динамический класс Book, содержащий динамический массив Authors
Мне нужно написать программу,а я не знаю как ее написать. Знаю, тут люди за ...

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

Скопировать динамический массив в другой массив только с положительными элементами из первого
Пользователь вводит размер массива и сам массив. Программа копирует в другой...

Динамический массив: целое число разложить на массив простых множителей
Доброго времени суток всем. Целое число необходимо разложить на массив простых...

Написать функцию принимающую массив и возвращающую указатель на динамический массив
Написать функцию принимающую массив и возвращающую указатель на динамический...

25
no0ker
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
09.03.2011, 19:18 2
по моему, вы создаете не массив P[n], а двумерный P[n][n].
1
fruktik
32 / 32 / 1
Регистрация: 03.03.2011
Сообщений: 302
09.03.2011, 19:19  [ТС] 3
no0ker, кстати возможно...потому, что я взял это из примера динамического массива двумерного.....а как тогда описать здесь динамический одномерный
0
no0ker
101 / 88 / 7
Регистрация: 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 / 1
Регистрация: 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 / 1
Регистрация: 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 / 1
Регистрация: 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 / 1
Регистрация: 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 / 7
Регистрация: 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 / 1
Регистрация: 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 / 7
Регистрация: 17.12.2010
Сообщений: 416
09.03.2011, 20:40 15
сдается мне, что нет. =(

Добавлено через 54 секунды
во второй строке объявляешь указатель на персону.
а в пятой - присваиваешь ему указатель на указатель на персону.
0
fruktik
32 / 32 / 1
Регистрация: 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-мерность массива?я допер наконец?
0
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];
1
no0ker
101 / 88 / 7
Регистрация: 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)
0
fruktik
32 / 32 / 1
Регистрация: 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ом все нормально....ничего не дописывая работает..
0
IrineK
Заблокирован
09.03.2011, 20:53 20
Пишу по опыту. Приходится плодить по десятку структур на день, особенно сейчас (в ВУЗах типа изучают).
Проблемы возникают не сразу, а при инициализации элементов структуры.
0
09.03.2011, 20:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2011, 20:53

Заполнить динамический массив из файла и записать массив обратно в файл
Подскажите пожалуйста функцию которая будет заполнять Динамический массив из...

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

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


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

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

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