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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.81
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,470
#1

Как передать в функцию указатель на двумерный массив заранее неизвестного размера? - C++

29.09.2009, 18:07. Просмотров 4724. Ответов 5
Метки нет (Все метки)

Ребята, скажите пожалуйста, как реализовать такую идею? Необходимо передать в
функцию двумерный массив, чтобы она изменала его элементы. вся загвоздка в том, что,
Количество строк и столбцов массива должны вводиться с клавиатуры
То есть такой код не работает

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
//Вот здесь возникает ошибка. Компилятор требует, чтобы я указал число N. А как я
//укажу, если я сам его не знаю заранее?
void func (char a [] [N] ) {
}
 
int main () {
 int M, N;
 char array [M] [N];
 cout<< "Vvedite kolichestvo strok i stolbtsov"<<endl;
 cin>> M;
 cin>> N;
 
 //Такую запись тоже не принимает. Принала бы func (array [M] [N]), но M и N не
 //инициализированы
 func (array);
 
 return 0;
}
Решил обойтись без индексов. Пробовал заменить определение функции таким
C++
1
2
void func (char** a ) {
}
Но и это не помогло. Те же ошибки. Если вызываешь функцию
C++
1
func (array)
То орёт, что не может перекнвертировать один тип в другой. А если так,
C++
1
func (array [M] [N])
То вынь да положь ей значения M и N. Пробовал и явно преобразовать тип
C++
1
func ((char**)array)
Опять лажа. Прога начинает работать и тут же заканчивается аварийно.
Помогите пожалуйста, друзья!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2009, 18:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как передать в функцию указатель на двумерный массив заранее неизвестного размера? (C++):

Как правильно передать в функцию указатель на двумерный массив? - C++
Сабж #include &lt;windows.h&gt; #include &lt;stdio.h&gt; using namespace std; //ОТ безысходности сделал матрицу глобальной int A = {2,...

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

Можно ли создать вектор заранее неизвестного размера? - C++
Скажите пожалуйста, можно ли создать вектор заранее неизвестного размера так, чтобы пользователю перед его заполнением не нужно было...

Как передать в функцию двумерный динамический массив? - C++
#include &lt;iostream&gt; #include&lt;time.h&gt; #include&lt;cstdlib&gt; using namespace std; void zap(int array, int n) { ...

Как передать в функцию двумерный массив указателей на класс? - C++
у меня есть std::vector&lt;Monster*&gt; monsters; Rect *pole; int pacmen_distance; Monster и Rect два...

Как передать массив (двумерный/одномерный вектор) в функцию? - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int n,m;//סענמך ט סעמכבצנג void searchmin(int g,int mm,int i,int...

5
M128K145
Эксперт С++
8289 / 3509 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
29.09.2009, 18:18 #2
kravam, копай в сторону динамических массивов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
void Func(int **, int n, int m)
{
    /*действия*/
}
int main()
{
    int i, j, n, m;
    std::cin>>n;
    std::cin>>m;
    int **mas = new int*[n];
    for(i = 0; i < n; ++i)
        mas[i] = new int[m];
    /*ввод*/
    Func(mas, n, m);
    /*конец*/ 
}
1
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
29.09.2009, 18:18 #3
Как передать в функцию указатель на двумерный массив заранее неизвестного размера?
Никак. В C/C++ массивы всегда имеют фиксированный размер. Можно передать двойной казатель.
1
R0mm
Псевдо программист
192 / 113 / 15
Регистрация: 19.09.2009
Сообщений: 303
29.09.2009, 18:21 #4
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
//Вот здесь возникает ошибка. Компилятор требует, чтобы я указал число N. А как я
//укажу, если я сам его не знаю заранее?
void func (char **a ) {
}
 
int main () {
 int M, N;
 char **array;
 cout<< "Vvedite kolichestvo strok i stolbtsov"<<endl;
 cin>> M;
 cin>> N;
 
 array = new *char[N];
 for(int i=0; i<M; i++) *array[i] = new char[M];
 //Такую запись тоже не принимает. Принала бы func (array [M] [N]), но M и N не
 //инициализированы
 func (array);
 
 return 0;
}
1
G-Cat
16 / 16 / 1
Регистрация: 15.03.2009
Сообщений: 94
29.09.2009, 21:01 #5
попробуй просто в функцию передать две переменные с размерами и уже в самой функции сгенерировать динамический массив размерами этих двух переменных...идея вот прям тока что пришла. Тебе обязательно код написать или сам всё понял?
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,470
29.09.2009, 21:08  [ТС] #6
Тоже вариант... Но я с пока вышеперечисленными примерами разбираюсь... А кто-то в теме про задачники ещё говорил, что зачем решать одинаковые задачи... Этот тот случай, когда без долбёжки не обойтись! Одна такая задача, а потом третья такая же, а потом четвёртая... И так сто штук. Тогда что-то и отложится в голове.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2009, 21:08
Привет! Вот еще темы с ответами:

Как передать двумерный массив в функцию, которая вызывается в main? - C++
ребят прошу помогите, проблема в том, что у меня есть функция принимающая в параметрах двумерный массив, но когда я вызываю ее в main ни...

Как обьявить массив неизвестного размера? - C++
Помогите разобраться, есть класс, в котором обьявлен двумерный массив структур. Размер массива неизвестен, но должен быть определен во...

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив) - C++
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая как параметр получает указатель на...

Как передать в функцию заранее неизвестное число параметров? - C++
как передать в функцию &quot;func&quot; разное число параметров? писать для каждого перегрузку, или можно передать array int??


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
29.09.2009, 21:08
Ответ Создать тему
Опции темы

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