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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.90
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
#1

Матрица в динамической памяти - C++

13.09.2008, 18:49. Просмотров 2634. Ответов 22
Метки нет (Все метки)

Здраствуйте,начал проходить динамическую память ,так немогу зделать 2-х мерный массив,помогите пожалуисто разобраться ,ии какие ошибки тут .
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void main()
{
    int* mas=new int(5,10);
    srand(time(0));
    for (int i=0;i<5;i++)
    {
        for(int j=0;j<10;j++)
        {
        *(mas+i+10+j)=rand()%100;
        cout<<*(mas+i+10+j)<<'\t';
        }
    }
    cout<<'\n';
    delete[]mas;
}
если можно объяснить обычным кодом без библиотек
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2008, 18:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Матрица в динамической памяти (C++):

Матрица, выделение динамической памяти - C++
В общем у меня такая проблема: нужно решить задачу двумя способами, сначала без выделения динамической памяти , потом с её выделением ....

Выделение динамической памяти - C++
Чем int *List = new int; delete List; отличается от обычного массива (int List) ? Нет, я понимаю, что создал динамическую...

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

Распределение динамической памяти! - C++
У нас есть 2 упорядоченных массива. Надо создать 3-ий упорядоченный массив который состоит из первых двух. #include &lt;stdio.h&gt; ...

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

Теория по динамической памяти - C++
Предположим, применяется оператор new в форме для массива: p=new int ;. n ведь может быть и большим. Может n==1000000? Где запоминается,...

22
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
14.09.2008, 14:21  [ТС] #16
ну это понятно вроде
это типа for( int n=0;n<m;n++) как я понял по твоему объяснению
и потом указываешь сколько в каждой n должно быть элиментов вот и получаеться 2-х мерный массив.
0
XuTPbIu_MuHTAu
Эксперт С++
2226 / 741 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
14.09.2008, 14:28 #17
Нет. Создаешь массив размером N*M. После этого доступ к элементу [i,j] осуществляется так :
Код
 mas[i+j*N];
0
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
14.09.2008, 14:28  [ТС] #18
Цитата Сообщение от Vourhey Посмотреть сообщение
Ну то же самое про a =5 b=10
а потом:
new int[a+b], наверное, это имелось ввиду не 15 а 50 (a*b). Но вся эта байда должна работать Так как других данных в проге нет, то можно выделить и под один элемент, а обращаться к 50...
Она у меня ссылалась на *(mas +i +10 +j), ну теперь я знаю почему ,иза моеи не внимательность new int[a+b].да там имелось ввиду 50(жалко что комп не умеет мысли читать )
0
Vourhey
Почетный модератор
6485 / 2259 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
14.09.2008, 14:30 #19
Casper!,хых...я тебя не понимаю... У тебя n это же вроде, количество строк. А тут итератор...

Добавлено через 2 минуты 9 секунд
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
Нет. Создаешь массив размером N*M. После этого доступ к элементу [i,j] осуществляется так :
Код
 mas[i+j*N];
Код
 *(mas+i*m+j)
Если б комп умел читать мысли, программисты бы не нужны были
0
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
14.09.2008, 14:45  [ТС] #20
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void main()
{
    const int a=5;
    const int b=10;
    int* mas=new int[a*b];
    srand(time(0));
    for (int i=0;i<a;i++)
    {
        for(int j=0;j<b;j++)
        {
        *(mas+i*b+j)=rand()%100;
        cout<<*(mas+i*b+j)<<'\t';
        }
    }
    cout<<'\n';
    delete[]mas;
}
мм интересно и с *(mas+i+m+j) и с *(mas+i*m+j)работает

*(mas+i*m+j)но чета у меня тока что пролетела мысля что *m+j что это не операцыя умножения а указатель на m.
0
Vourhey
Почетный модератор
6485 / 2259 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
14.09.2008, 14:51 #21
Casper!, и что с этим указателем делается??? Ничего. Тем более, в твоей программе нет даже одноименного указателя. Откуда он возьмется? Это не указатель, а операция умножения.
Вот теперь прога верна...

P. S. убей эту мысль, что к тебе прилетела...
0
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
14.09.2008, 15:40  [ТС] #22
убиваю мысль
0
Sergei
1437 / 704 / 41
Регистрация: 22.04.2008
Сообщений: 1,608
24.09.2008, 21:31 #23
Воощето двухмерные массивы создаются так.
Код
 int **arr;
int n,m;
cin>>n;
cin>>m;

arr = new int *n];
for(int i=0;i<n;i++)
arr[i] = new int[m];
а удаление происходит в обратном порядке.
0
24.09.2008, 21:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2008, 21:31
Привет! Вот еще темы с ответами:

перераспределение динамической памяти - C++
дан двумерный массив 3х5 выделить динамически память под него, затем перераспределить ее в массив 5х3, затем удалить(выделить и удалить там...

Освобождение динамической памяти - C++
После первого вызова функции(при повторном) пишет ошибку. В функции sort один из элементов массива становится недоступным для чтения. Если...

Переменная в динамической памяти - C++
class SimpleCircle { public: SimpleCircle (); //Basic constructor SimpleCircle (int radius); //Constructor with parameters ...

Удаление динамической памяти - C++
Всем здрасьте. Имеется вот такая структура. struct ModelType { DWORD FVF; IDirect3DVertexBuffer9* vertexBuffer; ...


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

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

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