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

Создать динамический массив и заполнить его элементы определёнными значениями - C++

Восстановить пароль Регистрация
 
STGE
 Аватар для STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
21.05.2011, 15:52     Создать динамический массив и заполнить его элементы определёнными значениями #1
Здравствуйте! Подскажите пожалуйста в чём может крыться ошибка (суть задачи состоит в том, чтобы создать динамический массив и заполнить его элементы определёнными значениями (в моём случае посредством формулы)). Вот исходный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
using namespace std;
int main()
{
    const int m(3),n(3);
    int i,j;
    int **a=(int **) new int [m][n];
    for(i=0;i<=m-1;i++)
    {
        for(j=0;j<=n-1;j++)
        {
            *(*(a+i)+j)=(i+j)/2;
            cout<<"a["<<i+1<<"]["<<j+1<<"]="<<*(*(a+i)+j);
        }
        cout<<endl;
    }
    delete [] a;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2011, 15:52     Создать динамический массив и заполнить его элементы определёнными значениями
Посмотрите здесь:

C++ Создать динамический 2-мерный массив, заполнить его случайным образом, сортировать столбцы по возрастанию их суммы
Создать динамический массив, заполнить его и вывести C++
C++ Объявить массив целых чисел и заполнить его случайными значениями.
C++ Объявить массив целых чисел и заполнить его случайными значениями
Создать динамический массив строк, заполнить его и потом добавить строку после самой короткой строки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
21.05.2011, 16:13     Создать динамический массив и заполнить его элементы определёнными значениями #2
Цитата Сообщение от STGE Посмотреть сообщение
создать динамический массив
C++
1
2
3
4
5
6
7
8
9
10
    int i,n,m;
    cout<<"  N=";
    cin>>n;
    cout<<"  M=";
    cin>>m;
    int** a=new int* [n];
    for(i=0;i<n;i++) a[i]=new int [m];
    ...
    for(i=0;i<n;i++) delete[] a[i]; 
    delete[] a;
STGE
 Аватар для STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
21.05.2011, 16:19  [ТС]     Создать динамический массив и заполнить его элементы определёнными значениями #3
-comrade-, большое спасибо за ответ, но не могли бы вы что-нибудь написать конкретно по поводу моего исходника.
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
21.05.2011, 16:23     Создать динамический массив и заполнить его элементы определёнными значениями #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
STGE, так?
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
#include<iostream>
 
using namespace std;
 
int main()
{
    int i,j,n,m;
    cout<<"  N=";
    cin>>n;
    cout<<"  M=";
    cin>>m;
    int** a=new int* [n];
    for(i=0;i<n;i++) a[i]=new int [m];
    cout<<"  Matrix:"<<endl;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            *(*(a+i)+j)=(i+j)/2;
            cout<<"a["<<i+1<<"]["<<j+1<<"]="<<*(*(a+i)+j)<<" ";
        }
        cout<<endl;
    }
    for(i=0;i<n;i++) delete[] a[i]; 
    delete[] a; 
    system("pause");
    return 1;
}
STGE
 Аватар для STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
21.05.2011, 20:55  [ТС]     Создать динамический массив и заполнить его элементы определёнными значениями #5
-comrade-, а можно ли каким-то образом выделить память сразу под всю матрицу?
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
21.05.2011, 21:19     Создать динамический массив и заполнить его элементы определёнными значениями #6
если не ошибаюсь в С# есть именно тип многомерных матриц.
в С и С++ же его нет, - тут нужно создавать массивы массивов.. и память соответственно выделять.
STGE
 Аватар для STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
21.05.2011, 21:24  [ТС]     Создать динамический массив и заполнить его элементы определёнными значениями #7
OstapBender, а такой вариант возможен:
C++
1
int **a=(int **) new int [m][n];
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
21.05.2011, 21:53     Создать динамический массив и заполнить его элементы определёнными значениями #8
STGE, нет, не возможен. Надо выделить сначала память под массив указателей, а потом, в цикле, выделять память для каждой строки матрицы и записывать указатель на неё в соответствующую ячейку ранее созданного массива. И типы, кстати говоря, приводить не надо.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
21.05.2011, 23:13     Создать динамический массив и заполнить его элементы определёнными значениями #9
Цитата Сообщение от STGE Посмотреть сообщение
а можно ли каким-то образом выделить память сразу под всю матрицу?
Можно даже проще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
 
namespace bnu = boost::numeric::ublas;
 
int main(){
  bnu::matrix<int> m(3, 4);
  srand(time(0));
  for(size_t i = 0; i < m.size1(); ++i){
    for(size_t j = 0; j < m.size2(); ++j)
      std::cout << (m(i, j) = rand() % 10) << ' ';
    std::cout << '\n';
  }
  return 0;
}
STGE
 Аватар для STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
22.05.2011, 02:34  [ТС]     Создать динамический массив и заполнить его элементы определёнными значениями #10
Цитата Сообщение от asics Посмотреть сообщение
Можно даже проще:
Ну, кому как; у начинающих программистов просто-напросто глаза на лоб полезут (я относительно недавно приступил к изучению прелестей языка C, а вы тут такие вещи предлагаете, но, если честно, ваши записи меня заинтересовали и посему мне хотелось бы увидеть комментарии к некоторым строкам: в общем почти ко всем (за это буду вам предельно благодарен)).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2011, 14:16     Создать динамический массив и заполнить его элементы определёнными значениями
Еще ссылки по теме:

Заполнить массив B значениями элементов массива A, исключив из него повторяющиеся элементы C++
C++ Как создать динамический трехмерный массив и заполнить его случайными значениями?
Объявить массив из 20 элементов и заполнить его случайными значениями от -6 до 15 C++

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

Или воспользуйтесь поиском по форуму:
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
22.05.2011, 14:16     Создать динамический массив и заполнить его элементы определёнными значениями #11
Да тут, в принципе, коментировать нечего: создаем бустовский шаблон матрицы, доступ к елементаим осуществляем через перегруженый з двумя аргументами оператор (). Все интересные подробности - тут.
Yandex
Объявления
22.05.2011, 14:16     Создать динамический массив и заполнить его элементы определёнными значениями
Ответ Создать тему
Опции темы

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