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

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

Войти
Регистрация
Восстановить пароль
 
Lucky721
0 / 0 / 2
Регистрация: 13.04.2013
Сообщений: 65
#1

Вызов двумерного массива - C++

29.05.2013, 19:58. Просмотров 351. Ответов 8
Метки нет (Все метки)

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
29
30
31
32
#include<math.h>
#include<windows.h>
#include<iostream.h>
#include<stdlib.h>
int CreateArray(int a, int b, int n, int m) {
    int** Arr = new int *[n];
    for (int i = 0; i < n; i++) {
    Arr[i] = new int [m];
    }
    for (i=0;i<n; i++) {
        for(int j=0;j<m; j++) {
            Arr[i][j]=rand() % (b - a + 1) + a;
        }
    }
    return 0;
}
void main() {
     SetConsoleOutputCP(1251);
     int a, b, m, n;
     cout << " Введите ширину массива: \n";
     cin>>n;
     cout << " Введите длину массива: \n";
     cin>>m;
     cout << " Введите нижнюю границу диапазона : \n";
     cin>>a;
     cout << " Введите верхнюю границу диапазона: \n";
     cin>>b;
     CreateArray(a,b,n,m);
     
 
 
}

Нужна помощь. В этой функции я создаю двумерный массив размера m на n с числами из диапазона [a,b]. Как мне к нему обратиться в основной функции?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2013, 19:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вызов двумерного массива (C++):

Функции двумерного массива. Транспонировать матрицу через ввод вывод функции двумерного массива. - C++
Транспонировать матрицу через ввод вывод функции двумерного массива.Сначала вывести ее,а потом провести транспонирование.

Найти номер строки и столбца двумерного массива для минимального элемента этого массива - C++
Visual C ++ 2005 Express Edition помогите пожалуйста

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

залить из двумерного массива данные в одномерный длиной, равной количеству всех элементов исходного массива - C++
Доброго времени суток :) Образовался новый глупый вопрос... Предположим у меня есть двухмерный массив: vertex** massiv() { ...

Удалить из двумерного массива элементы другого массива - C++
Всем доброе время суток) Сегодня столкнулся с таким заданием: нужно Ввести с клавиатуры прямоугольную матрицу и вектор целых чисел. Найти...

Написать программу, которая вычисляет сумму элементов двумерного массива по столбцам. Организовать ввод массива с клавиатуры по строкам - C++
Написать программу, которая вычисляет сумму элементов двумерного массива по столбцам. Организовать ввод массива с клавиатуры по строкам.

8
Гром
210 / 129 / 11
Регистрация: 20.03.2009
Сообщений: 1,103
Записей в блоге: 16
Завершенные тесты: 1
29.05.2013, 20:06 #2
Возвращайте вместо нуля Arr:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int CreateArray(int a, int b, int n, int m) {
    int** Arr = new int *[n];
    for (int i = 0; i < n; i++) {
        Arr[i] = new int [m];
        for(int j=0;j<m; j++) {
            Arr[i][j]=rand() % (b - a + 1) + a;
        }
    }
    return Arr;
}
 
int main()
{
//...
int** MyArr = CreateArray(a, b , n, m);
std::cout << MyArr[0][0];
for (int i = 0; i < n; ++i)
    delete[] MyArr[i];
delete[] MyArr;
}
0
Lucky721
0 / 0 / 2
Регистрация: 13.04.2013
Сообщений: 65
29.05.2013, 20:33  [ТС] #3
C++
1
2
3
4
5
int** MyArr = CreateArray(a, b , n, m);
std::cout << MyArr[0][0];
for (int i = 0; i < n; ++i)
    delete[] MyArr[i];
delete[] MyArr;
вот эта часть кода обязательна?
Как мне просто в майн функции к примеру напечатать его. Точнее циклы я знаю, просто, как обращаться?
0
Гром
210 / 129 / 11
Регистрация: 20.03.2009
Сообщений: 1,103
Записей в блоге: 16
Завершенные тесты: 1
29.05.2013, 20:42 #4
Вы присваиваете переменной MyArr нужного типа то значение, которое создали в функции CreateArray, т.е. указатель на созданный массив. А потом обращаетесь с ним как с обычным массивом. Конечно, надо не забывать подчищать за собой память в конце.
C++
1
std::cout << MyArr[0][0];
это просто пример использования - вывели угловой элемент массива.
0
Lucky721
0 / 0 / 2
Регистрация: 13.04.2013
Сообщений: 65
29.05.2013, 20:47  [ТС] #5
C++
1
error C2440: 'return' : cannot convert from 'int ** ' to 'int'
Вот такую ошибку выводит
0
Гром
210 / 129 / 11
Регистрация: 20.03.2009
Сообщений: 1,103
Записей в блоге: 16
Завершенные тесты: 1
29.05.2013, 20:50 #6
Опечатка у меня. Забыл поправить int CreateArray(аргументы) на int** CreateArray(аргументы)
0
Lucky721
0 / 0 / 2
Регистрация: 13.04.2013
Сообщений: 65
29.05.2013, 20:59  [ТС] #7
Теперь собственно
C++
1
error C2065: 'Arr' : undeclared identifier
как и было в начале, вот в этой строке
C++
1
cout<<Arr[i][j]<<"\t";
Добавлено через 1 минуту
Ой, теперь моя ошибка, все в норме
0
Гром
210 / 129 / 11
Регистрация: 20.03.2009
Сообщений: 1,103
Записей в блоге: 16
Завершенные тесты: 1
29.05.2013, 21:04 #8
Код вне функции CreateArray ничего не знает про ее внутренние данные, и не должен знать. Именно поэтому мы передаем во внешний мир созданный массив в качестве результата функции. Если мы просто вызовем ее и никуда не запишем результат, то все данные о созданном масииве окажутся навеки потеряны, и мы не сможем с ним никак работать. Если мы присвоим указатель на возвращенный массив некоторой переменной (типа указатель нужного типа), то через эту переменную сможем работать с массивом.
В данном случае вам надо работать уже с MyArr, поскольку данные о массиве мы сохранили туда.
0
Lucky721
0 / 0 / 2
Регистрация: 13.04.2013
Сообщений: 65
29.05.2013, 21:40  [ТС] #9
Цитата Сообщение от Гром Посмотреть сообщение
Код вне функции CreateArray ничего не знает про ее внутренние данные, и не должен знать. Именно поэтому мы передаем во внешний мир созданный массив в качестве результата функции. Если мы просто вызовем ее и никуда не запишем результат, то все данные о созданном масииве окажутся навеки потеряны, и мы не сможем с ним никак работать. Если мы присвоим указатель на возвращенный массив некоторой переменной (типа указатель нужного типа), то через эту переменную сможем работать с массивом.
В данном случае вам надо работать уже с MyArr, поскольку данные о массиве мы сохранили туда.
Большое спасибо т.е MyArr это указатель на массив?

Добавлено через 13 минут
Цитата Сообщение от Lucky721 Посмотреть сообщение
Большое спасибо т.е MyArr это указатель на массив?
точнее указатель на указать на массив
И еще вопрос, если мне нужно написать еще одну функцию для работы с массивом, в качестве параметра мне передавать сам массив MyArr и его размерности?
0
29.05.2013, 21:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2013, 21:40
Привет! Вот еще темы с ответами:

Заменить все элементы массива, попадающие в интервал, нулем. Выполнить двумя способами: с помощью одномерного и двумерного массива. - C++
Всем доброго времени суток. Заменить все элементы,попадающие в интервал ,нулем.Выполнить двумя способами,с помощью одномерного и...

Ввод двумерного массива, ввод размерности массива, заполнение массива случайными числами - C++
#include &quot;stdafx.h&quot; #include &quot;locale.h&quot; #include &quot;stdlib.h&quot; #include &quot;math.h&quot; void main() { setlocale(LC_ALL,&quot;rus&quot;); int...

1. Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с отрицательными э - C++
1. Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с...

Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с отрицательными элем - C++
Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с...


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

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

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