773 / 578 / 324
Регистрация: 17.06.2009
Сообщений: 1,188
1

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

21.05.2011, 15:52. Показов 2505. Ответов 10
Метки нет (Все метки)

Здравствуйте! Подскажите пожалуйста в чём может крыться ошибка (суть задачи состоит в том, чтобы создать динамический массив и заполнить его элементы определёнными значениями (в моём случае посредством формулы)). Вот исходный код:
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;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2011, 15:52
Ответы с готовыми решениями:

Как создать динамический трехмерный массив и заполнить его случайными значениями?
Я больше по Java, но сейчас надо сделать пару задачек по плюсам. Одна из них звучит как-то так: ...

Заполнить массив определёнными значениями
Нужно заполнить массив следующими значениями и вывести в виде таблицы. 1 0 0 0 1 0 1 0 1 0 0 0...

Создать динамический массив. Заполнить его числами от 1 до n и записать его в файл.
создать динамический массив. Заполнить его числами от 1 до n и записать его в файл.

Создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию
создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию....

10
364 / 365 / 167
Регистрация: 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;
0
773 / 578 / 324
Регистрация: 17.06.2009
Сообщений: 1,188
21.05.2011, 16:19  [ТС] 3
-comrade-, большое спасибо за ответ, но не могли бы вы что-нибудь написать конкретно по поводу моего исходника.
0
364 / 365 / 167
Регистрация: 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;
}
1
773 / 578 / 324
Регистрация: 17.06.2009
Сообщений: 1,188
21.05.2011, 20:55  [ТС] 5
-comrade-, а можно ли каким-то образом выделить память сразу под всю матрицу?
0
593 / 531 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
21.05.2011, 21:19 6
если не ошибаюсь в С# есть именно тип многомерных матриц.
в С и С++ же его нет, - тут нужно создавать массивы массивов.. и память соответственно выделять.
1
773 / 578 / 324
Регистрация: 17.06.2009
Сообщений: 1,188
21.05.2011, 21:24  [ТС] 7
OstapBender, а такой вариант возможен:
C++
1
int **a=(int **) new int [m][n];
0
Эксперт С++
5053 / 3114 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
21.05.2011, 21:53 8
STGE, нет, не возможен. Надо выделить сначала память под массив указателей, а потом, в цикле, выделять память для каждой строки матрицы и записывать указатель на неё в соответствующую ячейку ранее созданного массива. И типы, кстати говоря, приводить не надо.
1
Freelance
Эксперт С++
2888 / 1823 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
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;
}
0
773 / 578 / 324
Регистрация: 17.06.2009
Сообщений: 1,188
22.05.2011, 02:34  [ТС] 10
Цитата Сообщение от asics Посмотреть сообщение
Можно даже проще:
Ну, кому как; у начинающих программистов просто-напросто глаза на лоб полезут (я относительно недавно приступил к изучению прелестей языка C, а вы тут такие вещи предлагаете, но, если честно, ваши записи меня заинтересовали и посему мне хотелось бы увидеть комментарии к некоторым строкам: в общем почти ко всем (за это буду вам предельно благодарен)).
0
Freelance
Эксперт С++
2888 / 1823 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
22.05.2011, 14:16 11
Да тут, в принципе, коментировать нечего: создаем бустовский шаблон матрицы, доступ к елементаим осуществляем через перегруженый з двумя аргументами оператор (). Все интересные подробности - тут.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2011, 14:16
Помогаю со студенческими работами здесь

Создать массив целых чисел и заполнить его случайными значениями
Создать массив целых чисел и заполнить его случайными значениями. Размер массива 200 и диапозон...

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

Создать динамический массив, заполнить его и вывести
Задача такая, создать динамический массив, заполнить его и вывести. Набросал код #include...

Как создать динамический массив и заполнить его с клавиатуры
Как это реализовать на c# подскажите пожалуйста, смотрел в других темах, как то невнятно объяснено....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru